工程数学实验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法的迭代次数更少,收敛速度更快,在这个问题上表现更好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?