最优化—基于matlab的共轭梯度法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

共轭梯度算法程序:

function f=conjugate_gradient(x0,t) x=x0;

syms xi yi a

f=(xi-2)^2+(yi-4)^2;

fx=diff(f,xi);

fy=diff(f,yi);

fx=subs(fx,{xi,yi},x0);

fy=subs(fy,{xi,yi},x0);

fi=[fx,fy];

n=0;

while double(sqrt(fx^2+fy^2))>t s=-fi;

if n<=0

s=-fi;

else

s=s1;

end

x=x+a*s;

f=subs(f,{xi,yi},x);

f1=diff(f);

f1=solve(f1);

if fi~=0

ai=double(f1);

else

break

x,f=subs(f,{xi,yi},x),n

end

x=subs(x,a,ai);

f=xi-xi^2+2*xi*yi+yi^2;

fxi=diff(f,xi);

fyi=diff(f,yi);

fxi=subs(fxi,{xi,yi},x);

fyi=subs(fyi,{xi,yi},x);

fii=[fxi,fyi];

d=(fxi^2+fyi^2)/(fx^2+fy^2);

s1=-fii+d*s;

n=n+1;

fx=fxi;

fy=fyi;

end

x,f=subs(f,{xi,yi},x),n

运行结果为:

>> conjugate_gradient([0 0],0.0001) x =

0.2500 -0.2500

f =

0.1250 n =

10 ans =

0.1250

相关文档
最新文档