物来顺应,未来不迎,当时不杂,既过不|

万事胜意k

园龄:2年8个月粉丝:11关注:4

工程数学上机实验(三)

Newton 法程序设计

代码:

newton.m

% 定义目标函数及其梯度和海森矩阵
f = @(x) 100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
grad_f = @(x) [400*x(1)^3-400*x(1)*x(2)+2*x(1)-2;
200*(x(2)-x(1)^2)];
hes_f = @(x) [1200*x(1)^2-400*x(2)+2, -400*x(1);
-400*x(1), 200];
% 初始值和终止准则
x0_list = [1.2, 1.2; -1.2, 1.2; -1.2, -1.2; 1.2, -1.2; 0, 0]; % 多个不同的初始点
tol = 1e-5;
for i = 1:length(x0_list)
x0 = x0_list(i,:);
x = x0';
iter = 0;
grad_norm = inf; % 初始化为正无穷
while grad_norm > tol
iter = iter + 1;
grad = grad_f(x);
hes = hes_f(x);
d = -hes \ grad;
x_new = x + d;
grad_norm = norm(grad);
x = x_new;
end
fprintf('初始点 (%g, %g)\n', x0(1), x0(2));
fprintf('迭代次数: %d\n', iter);
fprintf('最优解: (%g, %g)\n', x(1), x(2));
fprintf('最优函数值: %g\n', f(x));
fprintf('\n');
end

运行结果:

本文作者:万事胜意k

本文链接:https://www.cnblogs.com/ysk0904/p/17401187.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   万事胜意k  阅读(92)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起