%用复合形法求函数f=4*x1-x2^2-12的最优解
%约束条件是g1=x1^2+x2^2-25<=0,g2=-x1<=0,g3=-x2<=0
%已知初始顶点是x01=[2 1],x02=[4 1],x03=[3 3]
syms x1 x2 x01 x02 x03
disp('请输入第一点x01');
x01=input('x01>>');
disp('请输入第二点x02');
x02=input('x02>>');
disp('请输入第三点x03');
x03=input('x03>>');
disp('请输入收敛精度ee');
e=input('e>>');
k=0;ee=1.0;a=1.3;r=1.0;b=0.7;t=1;
sign0=1;sign1=1;sign2=1;sign3=1;sign4=1;
f=4*x1-x2^2-12;
g1=x1^2+x2^2-25;g2=-x1;g3=-x2;
f1=double(subs(f,{x1,x2},{x01(1),x01(2)}));
f2=double(subs(f,{x1,x2},{x02(1),x02(2)}));
f3=double(subs(f,{x1,x2},{x03(1),x03(2)}));
ff=[g1;g2;g3];xx=[x01;x02;x03];
while ee>e
k=k+1
for i=1:3
for j=1:3
gg=double(subs(ff(i),{x1,x2},{xx(j,1),xx(j,2)}));
if gg>0
sign0=0;
end
end
end
if sign0==0
disp('顶点不在可行域内,请重新输入')
break;
end
if f1>f2&f1>f3&f2>f3
xh=x01;xl=x03;fh=f1;fl=f3;t=1;
elseif f1>f2&f1>f3&f2<f3
xh=x01;xl=x02;fh=f1;fl=f2;t=1;
elseif f1>f2&f1<f3
xh=x03;xl=x02;fh=f3;fl=f2;t=3;
elseif f1<f2&f1>f3
xh=x02;xl=x03;fh=f2;fl=f3;t=2;
elseif f1<f2&f1<f3&f2>f3
xh=x02;xl=x01;fh=f2;fl=f1;t=2;
elseif f1<f2&f1<f3&f2<f3
xh=x03;xl=x01;fh=f3;fl=f1;t=3;
end
xc=0.5*(x01+x02+x03-xh)
for i=1:3
gg=double(subs(ff(i),{x1,x2},{xc(1),xc(2)}));
if gg>0
sign1=0;break;
else
sign1=1;
end
end
if sign1==0
disp('点xc不在可行域内,请重新输入');
break;
end
for i=1:3
xr=xc+a*(xc-xh);
for i=1:3
gg=double(subs(ff(i),{x1,x2},{xr(1),xr(2)}));
if gg>0
sign2=0;break;
else
sign2=1;
end
end
if sign2==1
xh=xr;break;
end
a=0.7*a;
end
if sign2==1&double(subs(f,{x1,x2},{xr(1),xr(2)}))<double(subs(f,{x1,x2},{xc(1),xc(2)}))
xe=xr+r*(xr-xc);
for i=1:3
gg=double(subs(ff(i),{x1,x2},{xe(1),xe(2)}));
if gg>0
sign3=0;break;
else
sign3=1;
end
end
if sign3==1&double(subs(f,{x1,x2},{xe(1),xe(2)}))<double(subs(f,{x1,x2},{xr(1),xr(2)}))
xh=xe;
end
end
if sign2==0
xk=xh+b*(xc-xh);
for i=1:3
gg=double(subs(ff(i),{x1,x2},{xk(1),xk(2)}));
if gg>0
sign4=0;break;
else
sign4=1;
end
end
if sign4==1&double(subs(f,{x1,x2},{xk(1),xk(2)}))<double(subs(f,{x1,x2},{xh(1),xh(2)}))
xh=xk;
else
x01=xl-0.5*(xl-x01);x02=xl-0.5*(xl-x02);x03=xl-0.5*(xl-x03);
end
end
if t==1
x01=xh;
elseif t==2
x02=xh;
else
x03=xh;
end
f1=double(subs(f,{x1,x2},{x01(1),x01(2)}));
f2=double(subs(f,{x1,x2},{x02(1),x02(2)}));
f3=double(subs(f,{x1,x2},{x03(1),x03(2)}));
ee=sqrt(1/3*((f1-fl)^2+(f2-fl)^2+(f3-fl)^2));
end
xl
subs(f,{x1,x2},{xl(1),xl(2)})
matlab.zip_matlab 复合形法_matlab复合形法_复合形_复合形法
版权申诉
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
![avatar](https://profile-avatar.csdnimg.cn/dc78d2406d17417ca42db3bd43b9c72a_weixin_42652674.jpg!1)
御道御小黑
- 粉丝: 62
- 资源: 1万+
最新资源
- Hadoop - Hadoop Streaming
- 如获取省市等特定区域经纬度进行可视化,从而辅助判断、决策
- krita-5.2.2
- linux-net.svg
- AI大模型语言翻译模型案例介绍:设计一个端到端的神经机器翻译模型,支持多种语言
- AI大模型文本生成模型案例介绍:使用大规模预训练模型生成文本,如GPT-3
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\建筑v5D平面.dwg
- AI大模型情感分析模型案例介绍:基于深度学习的情感分类器,分析文本情感极性
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\建筑D立面剖面.dwg
- 305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\电 白图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)