scipy.optimize.

rosen#

scipy.optimize.rosen(x)[源]#

Rosenbrock 函数。

计算的函数为

sum(100.0*(x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
参数:
x类数组

Rosenbrock 函数的计算点的一维数组。

返回:
f浮点数

Rosenbrock 函数的值。

备注

rosen 除了 NumPy 之外,还对 Python 数组 API 标准兼容的后端提供实验性支持。请考虑通过设置环境变量 SCIPY_ARRAY_API=1 并提供 CuPy、PyTorch、JAX 或 Dask 数组作为数组参数来测试这些功能。支持以下后端和设备(或其他功能)组合。

CPU

GPU

NumPy

不适用

CuPy

不适用

PyTorch

JAX

Dask

不适用

有关更多信息,请参阅对数组 API 标准的支持

示例

>>> import numpy as np
>>> from scipy.optimize import rosen
>>> X = 0.1 * np.arange(10)
>>> rosen(X)
76.56

对于更高维度的输入,rosen 会进行广播。在以下示例中,我们使用此功能绘制 2D 景观。请注意,rosen_hess 不以这种方式广播。

>>> import matplotlib.pyplot as plt
>>> from mpl_toolkits.mplot3d import Axes3D
>>> x = np.linspace(-1, 1, 50)
>>> X, Y = np.meshgrid(x, x)
>>> ax = plt.subplot(111, projection='3d')
>>> ax.plot_surface(X, Y, rosen([X, Y]))
>>> plt.show()
../../_images/scipy-optimize-rosen-1.png