matlab实验鲍威尔法.docVIP

  • 31
  • 0
  • 约2.33千字
  • 约 5页
  • 2019-12-09 发布于河北
  • 举报
实 验 报 告 实验名称: 鲍威尔法 院 (系): 机电学院 专业班级: 机械制造及其自动化 姓 名: 学 号: 2013年5 月13 日 实验一: 鲍威尔法 实验日期:2013年 5 月 13 日 实验目的 了解MATLAB的基本运用 了解MATLB在优化中的使用 实验原理 鲍威尔法也是一种共轭法,利用函数值来构造共轭方向,同时引入坐标轮换的概念,利用搜索前后两个点之间的连线形成新的共轭方向,替换旧的共轭方向。 实验内容 鲍威尔法程序: x0=[12;10]; xk=x0; ie=10^(-7); ae=1; %初始化搜索方向 d=zeros(2,2); d(:,1)=[1;0]; d(:,2)=[0;1]; Inc=zeros(2,1); k=0; MLN=100; %迭代求解 while (aeiekMLN) syms x1 syms x2 xktemp=xk; fun1=fun(x1,x2); fun1=inline(fun1); f0=feval(fun1,xk(1),xk(2)); F0=f0; if k0 F0=eval(F0); end %沿d1方向进行一维搜索 syms a syms x1; syms x2; xk1=xk+a*d(:,1); x1=xk1(1); x2=xk1(2); fun1=fun(x1,x2); fxa=diff(fun1,a); a=solve(fxa); xk1=inline(xk1); xk1=feval(xk1,a); xk1(1)=eval(xk1(1)); xk1(2)=eval(xk1(2)); syms x1; syms x2; fun1=fun(x1,x2); fun1=inline(fun1); f1=feval(fun1,xk1(1),xk1(2)); f1=eval(f1); Inc(1)=f0-f1; %沿d2方向进行搜索 syms a; syms x1; syms x2; xk2=xk1+a*d(:,2); x1=xk2(1); x2=xk2(2); fun1=fun(x1,x2); fxa=diff(fun1,a); a=solve(fxa); xk2=inline(xk2); xk2=feval(xk2,a); xk2(1)=eval(xk2(1)); xk2(2)=eval(xk2(2)); syms x1; syms x2; fun1=fun(x1,x2); fun1=inline(fun1); f2=feval(fun1,xk2(1),xk2(2)); f2=eval(f2); F2=f2; Inc(2)=f1-f2; [Incm,row]=max(Inc); x3=2*xk2-xk;%计算反射点 syms x1; syms x2; fun1=fun(x1,x2); fun1=inline(fun1); f3=feval(fun1,x3(1),x3(2)); f3=eval(f3); F3=f3; temp1=(F0-2*F2+F3)*(F0-F2-Incm)^2; temp2=0.5*Incm*(F0-F3)^2; %判断是否更换搜索方向 if (F3F0temp1temp2) syms a; syms x1; syms x2; d(:,row)=xk2-xk; xk=xk2+a*d(:,row); x1=xk(1); x2=xk(2); fun1=fun(x1,x2); fxa=diff(fun1,a); a=solve(fxa); xk=inline(xk); xk=f

文档评论(0)

1亿VIP精品文档

相关文档