1. ホーム
  2. python

[解決済み] matlabのfminsearchのnumpy/scipyアナログ版

2022-02-19 19:33:51

質問

を使ってMatlabのコードをpythonに変換しています。 numpy . すべて順調にいっていたのですが、最近 fminsearch という関数があります。

つまり、簡単に言うと、pythonでこのようなものを作る簡単な方法はないでしょうか。

banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,fval] = fminsearch(banana,[-1.2, 1])

を返します。

x = 1.0000    1.0000
fval = 8.1777e-010

今まで、私はnumpyで似たようなものを見つけられませんでした。唯一似たようなものを見つけたのは scipy.optimize.fmin . 定義によると、それは

ダウンヒル・シンプレックス・アルゴリズムを使用して関数を最小化する。

しかし、今、私はこの関数を使用して上記のMatlabコードを書くために見つけることができません。

どのように解決するのですか?

Matlabの文法からpythonの文法にそのまま変換するだけです。

import scipy.optimize

banana = lambda x: 100*(x[1]-x[0]**2)**2+(1-x[0])**2
xopt = scipy.optimize.fmin(func=banana, x0=[-1.2,1])

を出力しています。

Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 85
         Function evaluations: 159
array([ 1.00002202,  1.00004222])