前提・実現したいこと
pythonで2変数関数の勾配を計算しています。
しかし、2つ目の変数の勾配が何度やってもどうしても0になってしまいます。
コードのどこがおかしいのかご指摘ください。
よろしくお願いします。
発生している問題・エラーメッセージ
[6. 0.]
該当のソースコード
Python
1import numpy as np 2 3def f(x): 4 return x[0]**2+x[1]**2 5 6def numerical_diff(f,x,i): 7 h=1e-4 8 h_vec=np.zeros_like(x) 9 h_vec[i]=h 10 return (f(x+h_vec)-f(x-h_vec))/(2*h) 11 12def numerical_gradient(f,x): 13 grad=np.zeros_like(x) 14 for i,_ in enumerate(x): 15 grad[i]=numerical_diff(f,x,i) 16 return grad 17 18print(numerical_gradient(f,np.array([3.0,4.0]))) 19
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/19 02:50