gpt4 book ai didi

python - SciPy (Python) 中的最小化函数接受什么大小的参数?

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:06 25 4
gpt4 key购买 nike

我正在阅读 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] 一样被使用。

这最终如何给出一个包含五个结果的数组?最小化函数肯定只运行了四次,每次都有一对值(分别取自 x[1:] 和 x[:-1])?

另外,将两个变量的值存储在两个不同的数组中不是更有意义吗?

抱歉,如果我遗漏了一些非常明显的东西,请提前致谢。

V

最佳答案

rosen 的编写方式接受几乎任何长度的 x,并返回单个值,即 sum。像 x[1:]-x[:-1] 这样的表达式只是取连续项之间的差值。

minimize 本身采用 x0,一个一维数组,这里有 5 个元素长。它会改变所有元素,直到 rosen 总和最小化。所以它正在最小化向量或一维数组。在我看来,x0 的长度可能与 (2,) 不同。

关于python - SciPy (Python) 中的最小化函数接受什么大小的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41476799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com