《matlab实验鲍威尔法》由会员分享,可在线阅读,更多相关《matlab实验鲍威尔法(8页珍藏版)》请在金锄头文库上搜索。
1、-精选文档 -实 验 报 告实验名称:鲍威尔法院 (系):机电学院专业班级:机械制造及其自动化姓名:学号:2013 年 5 月 13 日可编辑-精选文档 -实验一:鲍威尔法实验日期:2013 年 5 月13 日一、实验目的了解 MATLAB 的基本运用了解 MATLB 在优化中的使用二、 实验原理鲍威尔法也是一种共轭法,利用函数值来构造共轭方向,同时引入坐标轮换的概念,利用搜索前后两个点之间的连线形成新的共轭方向,替换旧的共轭方向。三、实验内容鲍威尔法程序:x0=12;10;xk=x0;ie=10(-7);ae=1;% 初始化搜索方向d=zeros(2,2);可编辑-精选文档 -d(:,1)=
2、1;0;d(:,2)=0;1;Inc=zeros(2,1);k=0;MLN=100;% 迭代求解while (aeie&k0F0=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
3、(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=f
4、un(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 (F
5、3F0&temp1temp2)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=feval(xk,a);% 不更换搜索方向else if F2F3xk=xk2;elsexk=x3;endendxkerror=eval(xk2-xktemp);ae=norm(xkerror);k=k+1;可编辑-精选文档 -endx=eval(xk)函数程序:functionf=fun(x1,x2)f=2*x12+4*x1*x2+x22执行结果:x =00四、 实验小结通过本实验了解了了matlab的基本操作方法,了解鲍威尔法的原理与基本运用可编辑