实验报告实验名称:鲍威尔法院(系):机电学院专业班级:机械制造及其自动化姓名:学号: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(aeie&&kMLN)symsx1symsx2xktemp=xk;fun1=fun(x1,x2);fun1=inline(fun1);f0=feval(fun1,xk(1),xk(2));F0=f0;ifk0F0=eval(F0);end%沿d1方向进行一维搜索symsasymsx1;symsx2;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));symsx1;symsx2;fun1=fun(x1,x2);fun1=inline(fun1);f1=feval(fun1,xk1(1),xk1(2));f1=eval(f1);Inc(1)=f0-f1;%沿d2方向进行搜索symsa;symsx1;symsx2;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));symsx1;symsx2;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;%计算反射点symsx1;symsx2;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(F3F0&&temp1temp2)symsa;symsx1;symsx2;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=feval(xk,a);%不更换搜索方向elseifF2F3xk=xk2;elsexk=x3;endendxkerror=eval(xk2-xktemp);ae=norm(xkerror);k=k+1;endx=eval(xk)函数程序:function[f]=fun(x1,x2)f=2*x1^2+4*x1*x2+x2^2执行结果:x=00四、实验小结通过本实验了解了了matlab的基本操作方法,了解鲍威尔法的原理与基本运用