工程数学实验3

 1. 算法步骤

    

   2. function [xopt, fopt, iter] = newton(x0, f, g, H, eps)

 

% x0: 初始搜索点

% f: 目标函数

% g: 梯度函数

% H: Hesse矩阵函数

% eps: 迭代收敛的精度

 

iter = 1; % 迭代计数器

max_iter = 1000; % 最大迭代次数

 

while iter <= max_iter

 

    % 计算梯度和 Hesse 矩阵

    grad = g(x0);

    Hessian = H(x0);

    

    % 求解线性方程组

    d = -Hessian \ grad;

 

    % 更新搜索点

    x1 = x0 + d;

 

    % 计算函数变化量

    df = f(x1) - f(x0);

 

    % 判断停止条件

    if abs(df) < eps

        xopt = x1;

        fopt = f(x1);

        return;

    else

        % 继续迭代

        x0 = x1;

        iter = iter + 1;

    end

 

end

 

% 达到最大迭代次数仍未收敛

xopt = x1;

fopt = f(x1);

 

end   

3. 选选取和实验二中相同的初始点$x_0$进行比较,迭代精度为$eps=1e-6$。实验结果如下表所示:

算法

$x_0$

迭代次数

最优解$x^\star$

最优值$f(x^\star)$

最速下降法

[-1.2, 1]

1798

[-1.0000, 1.0000]

0

牛顿法

[-1.2, 1]

4

[-1.0000, 1.0000]

0

 

四、心得体会

由实验结果可知,相比于最速下降法,Newton法的迭代次数更少,收敛速度更快,在这个问题上表现更好。

posted @ 2023-05-29 10:53  云边上打盹  阅读(26)  评论(0)    收藏  举报