SciPyのドキュメントを読んで、Pythonで遊んで、私が話すことを実装できるかどうか確認しています。しかし、私は下のコードで何が起こっているのか分からないようです。SciPy(Python)の最小化関数はどのサイズの引数を受け入れますか?
https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html
>>> def rosen(x):
... """The Rosenbrock function"""
... return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
>>> x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
>>> res = minimize(rosen, x0, method='nelder-mead',
... options={'xtol': 1e-8, 'disp': True})
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 339
Function evaluations: 571
>>> print(res.x)
[ 1. 1. 1. 1. 1.]
から、この場合のRosenbrock関数が第二変数の最初の変数およびサイズ-4アレイのサイズ-4配列を取っていると思われます。これは、x [1:]がx [: - 1]と同様に使用されるためです。
これで最終的に5つの結果の配列が得られますか?確かに、最小化関数は、(x [1:]とx [: - 1]からそれぞれ取られた)1対の値で4回だけ実行されますか?
また、2つの異なる配列に2つの変数の値を格納する方が理にかなっていませんか?
申し訳ありませんが、私はかなり明白な何かを失っていると前もって感謝します。
V
"最初の変数"と "2番目の変数"とはどういう意味ですか? 'rosen'には1つの引数しか渡されません。その議論は、それ自身のビジネスです。 – BrenBarn