(一)牛顿法与阻尼牛顿法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(⼀)⽜顿法与阻尼⽜顿法
求解⾮线性优化问题的有效⼿段
⽜顿法:优点:收敛速度快缺点:定步长迭代,有时会使函数值上升。
计算量⼤,要求函数必须有连续的⼀、⼆阶偏导数,海森矩阵必须正定
拟⽜顿法:在⽜顿法的基础上加⼊了寻求最优步长因⼦
⽰例代码:求解⽬标函数的局部最⼩值
主函数:
% Newton法求解⽬标函数的局部最⼩值
% Meringue
% 2018/5/13
% ---------------------------
clc;
clear;
% 迭代参数
x0 = -10; % 初始值
err0 = inf; % 误差初始设为inf
iter = 0;% 迭代次数
errMax = 1e-3; % 最⼤容许误差
iterMax = 100; % 最⼤迭代次数
% 迭代过程
x(iter+1) = x0;
while err0>errMax
% 迭代终⽌条件1:达到最⼤迭代次数
if iter == iterMax
disp('达到最⼤迭代次数!');
break;
end
% Newton迭代过程
iter = iter+1;
[~,dy,d2y] = func1(x(iter));
x(iter+1) = x(iter)-dy/d2y;
% 迭代终⽌条件2:找到满⾜精度要求的解
if abs(x(iter+1)-x(iter))<errMax
disp('找到满⾜精度要求的解!')
disp(['x = ',num2str(x(iter+1))]);
disp(['迭代次数为',num2str(iter-1)]);
break;
end
end
% 迭代结果展⽰
plot(x)
xlabel('t');ylabel('x')
⽬标函数:
%⽬标函数
function [y,dy,d2y] = func1(x)
% y = x.^2-2
y = x.^4-2*x^2+1;
dy = 4*x^3-4*x;
d2y = 12*x^2-4;
运⾏结果:。