牛顿法MATLAB程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

问题一1、问题描述本次作业中使用共轭梯度法求解232122212142minxxxxxxx,初始点取为Tx)2,2,2(0。2、求解方法及求解程序(1)共轭梯度法:对于二次函数的无约束最小化问题:xbxQxxfTT21)(,共轭梯度方法:kkkkdxx1其中步长k由最小线性化准则确定:)(min)(kkkkkdxfdx。既将函数)(xf对求导等于零,得到的就是我们当前所求步长。梯度方向:bQxxfgkkk)(共轭梯度的方向由下式生成:00gd1,...,1,1nkdgdkkkk其中k由下式给出:1)1(kkkkkggggTT该方法在最多n次迭代后,将终止于某个最优解处。(2)求解程序frcg.mfunction[x,val,k]=frcg(fun,funs,x0)%功能:用FR共轭梯度法求解无约束问题:minf(x)%输入:x0是初始点,fun,gfun分别是目标函数和梯度%输出:x,val分别是近似最优点和最优值,k是迭代次数.maxk=5000;%最大迭代次数rho=0.6;sigma=0.4;k=0;epsilon=1e-4;n=length(x0);while(kmaxk)g=feval(funs,x0);%计算梯度itern=k-(n+1)*floor(k/(n+1));itern=itern+1;%计算搜索方向if(itern==1)d=-g;elsebeta=(g'*g)/(g0'*g0);d=-g+beta*d0;gd=g'*d;if(gd=0.0)d=-g;endendif(norm(g)epsilon),break;end%检验终止条件m=0;mk=0;while(m20)%Armijo搜索if(feval(fun,x0+rho^m*d)feval(fun,x0)+sigma*rho^m*g'*d)mk=m;break;endm=m+1;endx0=x0+rho^mk*d;val=feval(fun,x0);g0=g;d0=d;k=k+1;endx=x0;val=feval(fun,x);fun.mfunctionf=fun(x)f=x(1)^2-x(1)*x(2)+x(2)^2+2*x(1)-4*x(2)+x(3)^2;funs.mfunctionfs=funs(x)fs=[2*x(1)-x(2)+2,2*x(2)-x(1)-4,2*x(3)]';命令行输入:x0=[2,2,2]';[x,val,k]=frcg('fun','funs',x0)3、求解结果x=0.00002.00000.0000val=-4.0000k=10即,当0,232xx0x1,时,取得最优解val=-4,迭代次数为10次。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功