1
私は(PDF文書のページ29)機能Minimum of a function with BFGS methodのmimimumを見つけるためにBFGSと同じ結果がPythonでMATLABのものと同じにならないのはなぜですか?
をしようとしていると私はリンクで報告されたものと同じ結果を得ていないよ、私はすでにしてみてくださいとせず運がないジャコビア人。助けていただければ幸いです。
これまでのコードは:あなたは間違ってdf/dx1
が正しくありません、あなたの場合には、ヤコビアンを計算しているので、
import numpy as np
from scipy.optimize import minimize
def objective(x):
x1=x[0]
x2=x[1]
print ("x1: ",x1," ","x2: ",x2)
return pow(x1,4.0)-2*x2*pow(x1,2.0)+pow(x2,2.0)+pow(x1,2.0)-2.0*x1+5.0
def jacobiano(x):
x1=x[0]
x2=x[1]
jaco=np.zeros(2)
jaco[0]=4.0*x1-4.0*x2*x1+2.0*x1-2.0
jaco[1]=-2.0*pow(x1,2.0)+2.0*x2
print ("dx1: ",jaco[0]," ","dx2: ",jaco[1])
return jaco
x0=np.array([1.0,2.0], dtype=np.double)
print(objective(x0))
sol=minimize(objective,x0,method='BFGS',jac=jacobiano, options={'disp': True})
print(sol)
ありがとうございました!ヤコビアンを含めていないときに同じ結果が期待されていたのですが、どうしてこのような小数点の違いがありますか? –
精度の違いは、アルゴリズムが各言語で実装された方法に起因する可能性があります。また、それぞれが使用するデータの種類が原因である可能性もあります。 – eyllanesc
ありがとう!この例では、Pythonのデータ型の提案はありますか? –