MatlabとPythonのdog-leg信頼領域アルゴリズムを使用して非線形方程式を解いています。MatlabとPythonの最適化アルゴリズム(dog-leg trust-region)
Matlabにはfsolveがあります。このアルゴリズムはデフォルトですが、Pythonではscipy.optimize.minimizeに 'dogleg'を指定しています。 MatlabにはJacobianとHessianを指定する必要はありませんが、Pythonでは問題を解決するためにどちらか一方が必要です。
私はヤコビアン/ヘッセンを持っていないので、この問題を回避する方法はありますか?または、fsolve
にMatlabのdog-legメソッドに相当する機能を実行する別の関数がありますか?
はい、あなたは正しいです!私に気付かせてくれてありがとう。私は自分の答えを編集し、 'approx_fprime'を' jac = False'の内部で '' approx_fprime''を呼び出す部分を追加しました。 – lucianopaz
'jac = False'を指定するとエラーになります:' ValueError:Jacobianはdogleg最小化に必要です ' –
scipyが[数値推定](https://github.com/scipy/scipy/blob/v0.18.0/scipy/optimize/_minimize.py#L411-L416)の処理に誤りがあるようです。このエラーはscipyの現在のバージョンでは残っているので、バグのチケットなどを置く必要があるようです。あなたの特定の問題を解決するには、 'approx_fprime'を使って呼び出し可能な' jac'を構築する必要があります。私はそれに応じて私の答えを編集しました。 – lucianopaz