最优化牛顿法最速下降法共轭梯度法matlab代码.docxVIP

  • 36
  • 0
  • 约2.55千字
  • 约 8页
  • 2017-01-29 发布于重庆
  • 举报

最优化牛顿法最速下降法共轭梯度法matlab代码.docx

最优化牛顿法最速下降法共轭梯度法matlab代码

牛顿法迭代公式:Matlab代码:function [x1,k] =newton(x1,eps)hs=inline((x-1)^4+y^2); 写入函数ezcontour(hs,[-10 10 -10 10]); 建立坐标系hold on; 显示图像syms x y 定义变量f=(x-1)^4+y^2; 定义函数grad1=jacobian(f,[x,y]); 求f的一阶梯度grad2=jacobian(grad1,[x,y]); 求f的二阶梯度k=0; 迭代初始值while 1 循环grad1z=subs(subs(grad1,x,x1(1)),y,x1(2)); 给f一阶梯度赋初值grad2z=subs(subs(grad2,x,x1(1)),y,x1(2)); 给f二阶梯度赋初值 x2=x1-inv(grad2z)*(grad1z); 核心迭代公式if norm(x1-x2)eps 判断收敛条件 break;else plot([x1(1),x2(1)],[x1(2),x2(2)],-r*); 画图 k=k+1; 迭代继续 x1=x2; 赋值endendend优点:在极小点附近收敛快缺点:但是要计算目标函数的hesse矩阵最速下降法:选取初始点xo,给定误差计算一阶梯度。若一阶梯度小于误差,停止迭代,输出取例题:求min (x-2)^4+(x-2*y)^2.初始值(0,3)

文档评论(0)

1亿VIP精品文档

相关文档