如何用Python结合梯度下降和牛顿法求解Rosenbrock函数的最小值?

2026-05-26 23:430阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计905个文字,预计阅读时间需要4分钟。

如何用Python结合梯度下降和牛顿法求解Rosenbrock函数的最小值?

Rosenbrock函数定义如下:其函数图像如下所示。我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。梯度下降法的基本公式更新如下:图中蓝色点为起点,橙色曲线为实际路径(实际路径)。

Rosenbrock函数的定义如下:

其函数图像如下:

我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。

梯度下降

梯度下降的更新公式:

如何用Python结合梯度下降和牛顿法求解Rosenbrock函数的最小值?

图中蓝色的点为起点,橙色的曲线(实际上是折线)是寻找最小值点的轨迹,终点(最小值点)为 (1,1)(1,1)。

梯度下降用了约5000次才找到最小值点。

我选择的迭代步长 α=0.002α=0.002,αα 没有办法取的太大,当为0.003时就会发生振荡:

牛顿法

牛顿法的更新公式:

Hessian矩阵中的每一个二阶偏导我是用手算算出来的。

牛顿法只迭代了约5次就找到了函数的最小值点。

下面贴出两个实验的代码。

阅读全文

本文共计905个文字,预计阅读时间需要4分钟。

如何用Python结合梯度下降和牛顿法求解Rosenbrock函数的最小值?

Rosenbrock函数定义如下:其函数图像如下所示。我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。梯度下降法的基本公式更新如下:图中蓝色点为起点,橙色曲线为实际路径(实际路径)。

Rosenbrock函数的定义如下:

其函数图像如下:

我分别使用梯度下降法和牛顿法做了寻找Rosenbrock函数的实验。

梯度下降

梯度下降的更新公式:

如何用Python结合梯度下降和牛顿法求解Rosenbrock函数的最小值?

图中蓝色的点为起点,橙色的曲线(实际上是折线)是寻找最小值点的轨迹,终点(最小值点)为 (1,1)(1,1)。

梯度下降用了约5000次才找到最小值点。

我选择的迭代步长 α=0.002α=0.002,αα 没有办法取的太大,当为0.003时就会发生振荡:

牛顿法

牛顿法的更新公式:

Hessian矩阵中的每一个二阶偏导我是用手算算出来的。

牛顿法只迭代了约5次就找到了函数的最小值点。

下面贴出两个实验的代码。

阅读全文