工程一班23号甘超第三次作业.docx
- 文档编号:28549466
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:10
- 大小:15.87KB
工程一班23号甘超第三次作业.docx
《工程一班23号甘超第三次作业.docx》由会员分享,可在线阅读,更多相关《工程一班23号甘超第三次作业.docx(10页珍藏版)》请在冰豆网上搜索。
工程一班23号甘超第三次作业
第三次作业
P1266-2
一
(1)混合函数法
所用到的牛顿法M文件
function[x,minf]=minNT(f,x0,var,eps)
formatlong;
ifnargin==3
eps=1.0e-6;
end
tol=1;
x0=transpose(x0);
gradf=jacobian(f,var);
jacf=jacobian(gradf,var);
whiletol>eps
v=subs(gradf,var,x0);
tol=norm(v);
pv=subs(jacf,var,x0);
p=-inv(pv)*transpose(v);
p=double(p);
x1=x0+p;
x0=x1;
end
x=x1;
minf=subs(f,var,x);
formatshort;
所用到的混合函数M文件
function[x,minf]=minMixFun6-2(f,g,x0,r0,c,var,eps)
gx0=subs(g,var,x0);
ifgx0>=0;
else
disp('³õʼµã±ØÐëÂú×ã²»µÈʽԼÊø!
');
x=NaN;
minf=NaN;
return;
end
ifr0<=0
disp('³õʼÕÏ°Òò×Ó±ØÐë´óÓÚ0!
');
x=NaN;
minf=NaN;
return;
end
ifc>=1||c<0
disp('ËõСϵÊý±ØÐë´óÓÚ0ÇÒСÓÚ1!
');
x=NaN;
minf=NaN;
return;
end
ifnargin==7
eps=1.0e-6;
end
FE=0;
fori=1:
length(g)
FE=FE+1/g(i);
end
FH=transpose(h)*h;
x1=transpose(x0);
x2=inf;
while1
FF=r0*FE+FH/sqrt(r0);
SumF=f+FF;
[x2,minf]=minNT(SumF,transpose(x1),var);
ifnorm(x2-x1)<=eps
x=x2;
break;
else
r0=c*r0;
x1=x2;
end
end
minf=subs(f,var,x);
输入
>>symsst;
>>f=s^2+2*t^2;
>>g=[s+t-1;s;t];
>>h=[s+t-1;s;t];
>>[x,minf]=minMixFun(f,g,h,[1,1],2,0.5,[s,t],1.0e-6)
结果
x=
0.3333
0.3333
minf=
0.3333
二
(2)内点罚函数法
所插入的牛顿法M文件
function[x,minf]=minNT(f,x0,var,eps)
formatlong;
ifnargin==3
eps=1.0e-6;
end
tol=1;
x0=transpose(x0);
gradf=jacobian(f,var);
jacf=jacobian(gradf,var);
whiletol>eps
v=subs(gradf,var,x0);
tol=norm(v);
pv=subs(jacf,var,x0);
p=-inv(pv)*transpose(v);
p=double(p);
x1=x0+p;
x0=x1;
end
x=x1;
minf=subs(f,var,x);
formatshort;
内点惩罚函数法M文件
function[x,minf]=minNF(f,x0,g,u,v,var,eps)
formatlong;
ifnargin==6
eps=1.0e-6;
end
k=0;
FE=0;
fori=1:
length(g)
FE=FE+1/g(i);
end
x1=transpose(x0);
x2=inf;
while1
FF=u*FE;
SumF=f+FF;
[x2,minf]=minNT(SumF,transpose(x1),var);
Bx=subs(FE,var,x2);
ifu*Bx ifnorm(x2-x1)<=eps x=x2; break; else u=u*v; x1=x2; end else ifnorm(x2-x1)<=eps x=x2; break; else u=u*v; x1=x2; end end end minf=subs(f,var,x); formatshort; 输入 >>clear >>symst;a=10;b=5; >>f=a*t; >>g=[t-b;t]; >>[x,minf]=minNF(f,[8],g,20,0.5,[t],1.0e-6) 输出结果 x= 5.0000 minf= 50.0000 单纯形法求解线性规划问题 单纯形法M文件 function[x,minf]=simpleMthd(A,c,b,baseVector) sz=size(A); nVia=sz (2); n=sz (1); xx=1: nVia; nobase=zeros(1,1); m=1; fori=1: nVia; if(isempty(find(baseVector==xx(i),1))) nobase(m)=i; m=m+1; else ; end end bCon=1; M=0; whilebCon nB=A(: nobase); ncb=c(nobase); B=A(: baseVector); cb=c(baseVector); xb=inv(B)*b; f=cb*xb; w=cb*inv(B); fori=1: length(nobase) sigma(i)=w*nB(: i)-ncb(i); end [maxs,ind]=max(sigma); ifmaxs<=0 minf=cb*xb; vr=find(c~=0,1,'last'); forl=1: vr ele=find(baseVector==1,1); if(isempty(ele)) x(l)=0; else x(l)=xb(ele); end end bCon=0; else y=inv(B)*A(: nobase(ind)); ify<=0; disp('²»´æÔÚ×îÓŽâ'); x=NaN; minf=NaN; return; else minb=inf; chagB=0; forj=1: length(y) ify(j)>0 bz=xb(j)/y(j); ifbz minb=bz; chagB=j; end end end tem=baseVector(chagB); baseVector(chagB)=nobase(ind); nobase(ind)=tem; end end M=M+1; if(M==10000) disp('ÕÒ²»µ½×îÓŽ⣡'); x=NaN; minf=NaN; return; end end 输入 >>A=[94100;310010;45001]; >>c=[-7-14000]; >>b=[360;300;200]; >>[x,mf]=simpleMthd(A,c,b,[3,4,5]) 输出结果 x= 2020 mf= -476.0000 其他方法在实验报告中会有体现。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 一班 23 号甘超 第三次 作业