国科大申立勇MATLAB作业参考答案修.docx
- 文档编号:6124409
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:7
- 大小:22.47KB
国科大申立勇MATLAB作业参考答案修.docx
《国科大申立勇MATLAB作业参考答案修.docx》由会员分享,可在线阅读,更多相关《国科大申立勇MATLAB作业参考答案修.docx(7页珍藏版)》请在冰豆网上搜索。
国科大申立勇MATLAB作业参考答案修
MATLAB作业6参考答案〔修〕
1、用图解的方式找到下面两个方程构成的联立方程的近似解。
〔注:
在图上可用局部放大的方法准确读出交点值〕
【求解】这两个方程应该用隐式方程绘制函数ezplot()来绘制,交点即方程的解。
>>ezplot('x^2+y^2-3*x*y^2');
holdon
ezplot('x^3-x^2=y^2-y')
可用局部放大的方法求出更准确的值。
从图上可以准确读出两个交点,(0:
4012;¡0:
8916),(1:
5894;0:
8185)。
试将这两个点分别代入原始方程进展验证。
2、在图形绘制语句中,假设函数值为不定式NaN,那么相应的局部不绘制出来,试利用该规律绘制
的外表图,并剪切下
的局部。
【求解】给出下面命令可以得出矩形区域的函数值,再找出x2+y2<=0.5^2区域的坐标,将其函数值设置成NaN,最终得出所示的曲面。
>>[x,y]=meshgrid(-1:
.1:
1);z=sin(x.*y);
ii=find(x.^2+y.^2<=0.5^2);z(ii)=NaN;surf(x,y,z)
3、试用图解法求解下面的一元与二元方程,并验证得出的结果。
【求解】①中给出的一元方程可以用曲线表示出来,这些曲线与y=0线的交点即为方程的
解,可以用图形局部放大的方法读出这些交点的x值,。
在本图中,xi均为方程的解,假设放大x轴区域,那么可能得出更多的解。
>>ezplot('exp(-(x+1)^2+pi/2)*sin(5*x+2)')
②中的二元方程可以由下面的命令用图形的方式显示出来。
>>ezsurf('(x^2+y^2+x*y)*exp(-x^2-y^2-x*y)')
用下面的语句可以得出等高线。
为了比拟起见,还绘制出其他值下的等高线。
等高线值为0的两条斜线为方程的解。
>>[x,y]=meshgrid(-3:
0.1:
3);
z=(0.1*x.^2+0.1*y.^2+x.*y).*exp(-x.^2-y.^2-x.*y);
[C,h]=contour(x,y,z,[-0.1:
0.05:
0.1]);
4、用数值求解函数求解习题3中方程的根,并对得出的结果进展检验。
【求解】求解方程求解问题可以采用fsolve()与solve()函数直接求解,这里采用这两个函数分别求取这两个方程的根。
①可以用下面方法求出一元函数的根,经检验结果较准确。
>>symsx;x1=solve('exp(-(x+1)^2+pi/2)*sin(5*x+2)')
x1=
-2/5
>>subs('exp(-(x+1)^2+pi/2)*sin(5*x+2)',x,x1)
ans=
0
>>f=inline('exp(-(x+1).^2+pi/2).*sin(5*x+2)','x');
x2=fsolve(f,0)
x2=
0.22831852178755
>>subs('exp(-(x+1)^2+pi/2)*sin(5*x+2)',x,x2)
ans=
4.7562e-008
>>x3=fsolve(f,-1)%选择不同的初值可以得出其他的解
x3=
-1.796
>>subs('exp(-(x+1)^2+pi/2)*sin(5*x+2)',x,x3)
ans=
-5.8864e-016
采用解析解函数solve()能求出准确的解,但只能求出其一个根,如果采用fsolve()函数
那么可以让用户自己选择初值,选择不同的初值可能得出不同的结果。
在实际应用时这样的方
法也有其问题,假设x大于1,那么函数值本身就很小,很容易满足数值解的收敛条件,例如选择x0=4,那么由数值解的程序能得出方程解为x0,事实上这样的解不是数学意义下的方程解,但确实能使得该函数的值趋于0。
>>x4=fsolve(f,4)%选择大的初值得出的解不是严格意义下方程的根
x4=
>>subs('exp(-(x+1)^2+pi/2)*sin(5*x+2)',x,x4)
ans=
-5.9913e-013
②可以用下面的语句求解该函数,那么可以得出方程的解,代入原方程那么可以得出误差,可见误差为0,这样说明得出的解确实满足原方程。
>>symsx;y1=solve('(x^2+y^2+x*y)*exp(-x^2-y^2-x*y)=0','y')
y1=
(-1/2+1/2*i*3^(1/2))*x
(-1/2-1/2*i*3^(1/2))*x
>>y2=simple(subs('(x^2+y^2+x*y)*exp(-x^2-y^2-x*y)','y',y1))
y2=
0
0
5、试求解下面的无约束最优化问题。
【求解】无约束最优化问题可以由下面的语句直接求解,并得出所需结果。
>>f=inline(['100*(x
(2)-x
(1)^2)^2+(1-x
(1))^2+',...
'90*(x(4)-x(3)^2)+(1-x(3)^2)^2+',...
'10.1*((x
(2)-1)^2+(x(4)-1)^2)+',...
'19.8*(x
(2)-1)*(x(4)-1)'],'x');
x=fminunc(f,ones(7,1))
x=
1.0e+002*
0.113
1.11232066767234
0.149
-1.126
0.000
0.000
0.000
6、试用图解法求解下面的非线性规划问题,并用数值求解算法验证结果。
【求解】通过选择适当的区域(当然,这需要在较大范围内先观察一下最优点或可行区域,然后再较确切地选择适宜的区域),这样就可以可以绘制出所示的曲面表示,在曲面绘制中先选择整个矩形区域,然后将不满足约束条件的区域剪切掉。
从得出的目标函数曲面看,x=0;y=1处为全局最小点。
>>[x1,x2]=meshgrid(0:
0.02:
1,1:
0.02:
2);
z=x1.^3+x2.^2+4*x1+4;
ii=find(x1-x2+2<0);z(ii)=NaN;
ii=find(-x1.^2+x2-1<0);z(ii)=NaN;
ii=find(x1<0);z(ii)=NaN;ii=find(x2<0);z(ii)=NaN;
surf(x1,x2,z)
下面的语句可以用数值方法求解
function[c,ce]=exc6f4(x)
ce=[];
c=[x
(1)^2-x
(2)+1];
>>f_opt=inline('x
(1)^3+x
(2)^2+4*x
(1)+4','x');
A=[-11];B=2;Aeq=[];Beq=[];xm=[0;0];
x=fmincon(f_opt,[0;1],A,B,Aeq,Beq,xm,[],'exc6f4');
7、试求解此线性规划问题:
【求解】用下面的语句可以求解出线性规划问题
>>f=[0,0,0,0,0,1,1];
Aeq=[1111000;-21-100-11;0310101];
Beq=[4;1;9];xm=[0;0;0;0;0;0;0];A=[];B=[];
x=linprog(f,A,B,Aeq,Beq,xm)
Optimizationterminatedsuccessfully.
x=
0.39517811869632
2.32126957607183
0.538
0.75263896655277
1.533
0.020
0.008
8、试求解下面的二次型规划问题,并用图示的形式解释结果。
【求解】可以由目标函数写出二次型规划的H与f矩阵为
这样由二次型规划求解函数可以直接解出该最优化问题的解。
>>H=[4-4;-48];f=[-6-3];
Aeq=[];Beq=[];A=[11;41];B=[3;9];xm=[0;0];
x=quadprog(H,f,A,B,Aeq,Beq,xm)
x=
1.950
1.000
9、试求解下面的非线性规划问题。
【求解】可以用下面的语句描述目标函数
functiony=exc6fun6(x)
y=exp(x
(1))*(4*x
(1)^2+2*x
(2)^2+4*x
(1)*x
(2)+2*x
(2)+1);
也可以写出约束函数
function[c,ce]=exc6fun6a(x)
ce=[];
c=[x
(1)+x
(2);x
(1)*x
(2)-x
(1)-x
(2)+1.5;-10-x
(1)*x
(2)];
这时调用非线性最优化问题求解函数可以得出如下结果。
>>A=[];B=[];Aeq=[];Beq=[];xm=[-10;-10];xM=[10;10];
x0=(xm+xM)/2;
ff=optimset;ff.TolX=1e-10;ff.TolFun=1e-20;
x=fmincon('exc6fun6',x0,A,B,Aeq,Beq,xm,xM,'exc6fun6a',ff)
Maximumnumberoffunctionevaluationsexceeded;
increaseOPTIONS.MaxFunEvals
x=
0.41947326053910
0.41947326053910
从得出的提示看,该结果并非原问题的解,所以考虑用得出的最优解代入作为初值再求解,
如此可以利用循环,那么可以得出原问题的最优解。
>>i=1;x=x0;
while
(1)
[x,a,b]=fmincon('exc6fun6',x,A,B,Aeq,Beq,xm,xM,'exc6fun6a',ff);
ifb>0,break;end
i=i+1;
end
x,i%循环次数为5
x=
1.645
-1.73976692398900
i=
5
10、试求解0-1线性规划问题,并用穷举方法检验得出的结果。
【求解】问题可以由下面语句直接求解
>>f=[571035];B=[2;0;1];ctype=[1;1;-1];
A=[1-151-4;-26-3-22;0-22-1-1];
intlist=[1;1;1;1;1];xM=intlist;xm=zeros(5,1);
[res,b]=ipslv_mex(f,A,B,intlist,xM,xm,ctype);res'
ans=
01100
用下面的语句利用MATLAB7.0提供的新函数可以得出如下结果,该结果与前面方法得出的
结果是完全一致的。
>>f=[571035];B=[-2;0;1];
A=[-11-5-14;2-632-2;0-22-1-1];
x=bintprog(f,A,B,[],[])'
x=
01100
利用穷举法可以验证上面的结果是正确的。
>>[x1,x2,x3,x4,x5]=ndgrid([0,1]);
i=find((x1-x2+5*x3+x4-4*x5>=2)&(-2*x1+6*x2-3*x3-2*x4+2*x5>=0)&...
(-2*x2+2*x3-x4-x5<=1));
f=5*x1(i)+7*x2(i)+10*x3(i)+3*x4(i)+x5(i);[fmin,ii]=sort(f);fmin'
ans=
17202226
>>index=i(ii
(1));
x=[x1(index),x2(index),x3(index),x4(index),x5(index)]
x=
01100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 国科大申立勇 MATLAB 作业 参考答案