牛顿法与拟牛顿法
Posted Aaron12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛顿法与拟牛顿法相关的知识,希望对你有一定的参考价值。
求解非线性优化问题的有效手段
牛顿法:优点:收敛速度快 缺点:定步长迭代,有时会使函数值上升。计算量大,要求函数必须有连续的一、二阶偏导数,海森矩阵必须正定
拟牛顿法:在牛顿法的基础上加入了寻求最优步长因子
示例代码:求解目标函数的局部最小值
主函数:
% 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;
运行结果:
以上是关于牛顿法与拟牛顿法的主要内容,如果未能解决你的问题,请参考以下文章
无约束优化问题中牛顿法与拟牛顿法四种迭代方法的matlab实现