牛顿法与最速下降法.docVIP

  • 9
  • 0
  • 约1.24千字
  • 约 3页
  • 2019-07-25 发布于江苏
  • 举报
%牛顿法MATLAB实现 clc;clear syms x y f=2*x^2+y^2+2*x*y+x-y; fx=diff(f,x); fy=diff(f,y); fxx=diff(fx,x); fyy=diff(fy,x); fx=subs(fx,[x,y],[0,0]); fxx=subs(fxx,x,0); fy=subs(fy,[x,y],[0,0]); fyy=subs(fyy,y,0); x=subs(x,x,0); y=subs(y,y,0); for i=1:1000 x1=x-fx/fxx; y1=y-fy/fyy; z1=4*x1+2*y1+1; z2=2*y1+2*x1-1; z3=sqrt((z1)^2+(z2)^2); if z3=0.00001 break else fx=4*x1+2*y1+1; fy=2*y1+2*x1-1; x=subs(x1,x,x1); y=subs(y1,y,y1); end end [x1,y1] f=2*x^2+y^2+2*x*y+x-y 结果 -1.0000 1.5000 f = -1.2500 %最速下降法MATLAB实现 clc;clear syms x y f=2*x^2+y^2+2*x*y+x-y; fx=diff(f,x); fy=diff(f,y); fx=subs(fx,[x,y],[0,0]); fy=subs(fy,[x,y],[0,0]); x=subs(x,x,0) y=subs(y,y,0) for i=1:1000 syms a x1=x-a*fx y1=y-a*fy f=2*x1^2+y1^2+2*x1*y1+x1-y1 f3=diff(f,a) a=solve(f3) a=subs(a,a,a) x1=x-a*fx y1=y-a*fy x1=subs(x1,x1,x1) y1=subs(y1,y1,y1) z1=4*x1+2*y1+1 z2=2*y1+2*x1-1 z3=sqrt(z1^2+z2^2) if z3=0.00001 break else fx=4*x1+2*y1+1 fy=2*y1+2*x1-1 x=subs(x1,x,x1) y=subs(y1,y,y1) end end [x,y] f=2*x^2+y^2+2*x*y+x-y 结果 -1.0000 1.5000 f = -1.2500

文档评论(0)

1亿VIP精品文档

相关文档