我正在閱讀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])?
將兩個變量的值存儲在兩個不同的數組中是不是更有意義?
對不起,如果我錯過了一些相當明顯的事情,並提前感謝。
V
你是什麼意思的「第一個變量」和「第二個變量」?只有一個參數傳遞給'rosen'。它對這個論點所做的是它自己的事情。 – BrenBarn