MATLAB作业6参考答案修.doc

上传人:wj 文档编号:1220765 上传时间:2023-04-30 格式:DOC 页数:6 大小:60.50KB
下载 相关 举报
MATLAB作业6参考答案修.doc_第1页
第1页 / 共6页
MATLAB作业6参考答案修.doc_第2页
第2页 / 共6页
MATLAB作业6参考答案修.doc_第3页
第3页 / 共6页
MATLAB作业6参考答案修.doc_第4页
第4页 / 共6页
MATLAB作业6参考答案修.doc_第5页
第5页 / 共6页
MATLAB作业6参考答案修.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MATLAB作业6参考答案修.doc

《MATLAB作业6参考答案修.doc》由会员分享,可在线阅读,更多相关《MATLAB作业6参考答案修.doc(6页珍藏版)》请在冰点文库上搜索。

MATLAB作业6参考答案修.doc

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.750949292642762e-008

>>x3=fsolve(f,-1)%选择不同的初值可以得出其他的解

x3=

-1.02831853071796

>>subs('exp(-(x+1)^2+pi/2)*sin(5*x+2)',x,x3)

ans=

-5.886413288211306e-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.913350831018913e-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.10546446798713

1.11232066767234

0.06782323911149

-1.11504746457726

0.01000000000000

0.01000000000000

0.01000000000000

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.53091333867908

0.75263896655277

1.50527793310533

0.00000000000020

0.00000000000008

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.95000000000000

1.05000000000000

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.18249727581645

-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模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2