预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Fun.m文件functionf=fun(x1,x2)f=3*(x1+x2-2)^2+(x1-x2)^2主程序:x0=[0.8;0.8];%设置初始点xk=x0;ideal_error=10^(-7);%设置收敛精度actural_error=1;%实际收敛精度%初始化搜索方向d=zeros(2,2);d(:,1)=[1;0];d(:,2)=[0;1];Inc=zeros(2,1);%设置初始化增量k=0;%初始化迭代变量MaxLoopNum=100;%初始化最大迭代次数%迭代求解while(actural_error>ideal_error&&MaxLoopNum>k)symsx1;symsx2;xktemp=xk;fun1=fun(x1,x2);fun1=inline(fun1);f0=feval(fun1,xk(1),xk(2));%求初始点处函数值F0=f0;ifk>0F0=eval(F0);end%沿d1方向进行一维搜索symsa;symsx1;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(F3<F0&&temp1<temp2)symsa;symsx1;symsx2;d(:,row)=xk2-xk;x1=xk(1);x2=xk(2);fun1=fun(x1,x2);fxa=diff(fun1,'a');a=solve(fxa);xk=inline(xk);xk=feval(xk,a);%不更换搜索方向elseifF2<F3xk=xk2;elsexk=x3;endendxkerror=eval(xk2-xktemp);%计算实际收敛精度actural_error=norm(xkerror);k=k+1;endx=eval(xk);