MATLAB基础及其应用教程周开利邓春晖课后答案.docx

上传人:b****6 文档编号:6667418 上传时间:2023-01-08 格式:DOCX 页数:26 大小:596.09KB
下载 相关 举报
MATLAB基础及其应用教程周开利邓春晖课后答案.docx_第1页
第1页 / 共26页
MATLAB基础及其应用教程周开利邓春晖课后答案.docx_第2页
第2页 / 共26页
MATLAB基础及其应用教程周开利邓春晖课后答案.docx_第3页
第3页 / 共26页
MATLAB基础及其应用教程周开利邓春晖课后答案.docx_第4页
第4页 / 共26页
MATLAB基础及其应用教程周开利邓春晖课后答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

MATLAB基础及其应用教程周开利邓春晖课后答案.docx

《MATLAB基础及其应用教程周开利邓春晖课后答案.docx》由会员分享,可在线阅读,更多相关《MATLAB基础及其应用教程周开利邓春晖课后答案.docx(26页珍藏版)》请在冰豆网上搜索。

MATLAB基础及其应用教程周开利邓春晖课后答案.docx

MATLAB基础及其应用教程周开利邓春晖课后答案

第三章习题及参考答案

解答:

>>p=[1-1-1];

>>roots(p)

ans=

-0.6180

1.6180

解答:

取n=5,m=61

>>x=linspace(0,2*pi,5);y=sin(x);

>>xi=linspace(0,2*pi,61);

>>y0=sin(xi);

>>y1=interp1(x,y,xi);

>>y2=interp1(x,y,xi,'spline');

>>plot(xi,y0,'o',xi,y1,xi,y2,'-.');

>>subplot(2,1,1);plot(xi,y1-y0);gridon

>>subplot(2,1,2);plot(xi,y2-y0);gridon

分段线性和三次样条插值方法与精确值之差

取n=11,m=61

>>x=linspace(0,2*pi,11);y=sin(x);

>>xi=linspace(0,2*pi,61);

>>y0=sin(xi);

>>y1=interp1(x,y,xi);

>>y2=interp1(x,y,xi,'spline');

>>plot(xi,y0,'o',xi,y1,xi,y2,'-.');

>>subplot(2,1,1);plot(xi,y1-y0);gridon

>>subplot(2,1,2);plot(xi,y2-y0);gridon

分段线性和三次样条插值方法与精确值之差

 

解答:

>>x=[0,300,600,1000,1500,2000];

>>y=[0.9689,0.9322,0.8969,0.8519,0.7989,0.7491];

>>xi=0:

100:

2000;

>>y0=1.0332*exp(-(xi+500)/7756);

>>y1=interp1(x,y,xi,'spline');

>>p3=polyfit(x,y,3);

>>y3=polyval(p3,xi);

>>subplot(2,1,1);plot(xi,y0,'o',xi,y1,xi,y3,'-.');

>>subplot(2,1,2);plot(xi,y1-y0,xi,y3-y0);gridon

插值和拟合方法相比较,都合理,误差也相近。

解答:

梯形法积分

>>x=-3:

0.01:

3;

>>y=exp(-x.^2/2);

>>z=trapz(x,y)/(2*pi)

z=

0.3979

辛普森积分

>>z=quad('exp(-x.^2/2)',-3,3)/(2*pi)

z=

0.3979

积分区间改为-5~5:

梯形法积分

>>x=-5:

0.01:

5;

>>y=exp(-x.^2/2);

>>z=trapz(x,y)/(2*pi)

z=

0.3989

辛普森积分

>>z=quad('exp(-x.^2/2)',-5,5)/(2*pi)

z=

0.3989

积分区间改变了,两种积分的结果依然相同。

梯形积分中改变x的维数为2维数组

>>x(1,:

)=-5:

0.01:

5

>>x(2,:

)=-5:

0.01:

5

>>y=exp(-x.^2/2);

>>z=trapz(x,y)/(2*pi)

?

?

?

Errorusing==>trapz

LENGTH(X)mustequalthelengthofthefirstnon-singletondimensionofY.

结论参考教材第82页。

解答:

>>x=linspace(0,1,4);

>>y=x./(x.^2+4);

>>t=cumsum(y)*(1-0)/(4-1);

>>z1=t(end)

>>z2=trapz(x,y)

>>z3=quad('x./(x.^2+4)',0,1)

>>z4=quadl('x./(x.^2+4)',0,1)

z1=

0.1437

z2=

0.1104

z3=

0.1116

z4=

0.1116

 

解答:

>>A=[5121;2511;12102;12210];

>>b=[991515]';

>>tol=1.0*10^-6;

>>imax=5;

>>x0=zeros(1,4);

>>tx=jacobi(A,b,imax,x0,tol);

>>forj=1:

size(tx,1)

fprintf('%4d%4.2f%4.2f%4.2f%4.2f\n',...

j-1,tx(j,1),tx(j,2),tx(j,3),tx(j,4))

end

00.000.000.000.00

11.801.801.501.50

20.540.480.660.66

31.311.321.221.22

40.810.790.860.86

51.131.131.091.09

00.000.000.000.00

11.801.081.100.88

20.971.021.021.00

30.991.001.001.00

41.001.001.001.00

51.001.001.001.00

解答:

>>A=[5121;2511;12102;12210];

>>b=[991515]';

>>tol=1.0*10^-6;

>>imax=5;

>>x0=zeros(1,4);

>>w=1.2;

>>tx=sor(A,b,imax,x0,tol,w);

>>forj=1:

size(tx,1)

fprintf('%4d%4.2f%4.2f%4.2f%4.2f\n',...

j-1,tx(j,1),tx(j,2),tx(j,3),tx(j,4))

end

00.000.000.000.00

12.161.121.270.97

20.621.100.981.03

31.060.951.001.00

41.001.011.001.00

51.001.001.001.00

若取w=0.02,以下结果表明收敛速度更快:

00.000.000.000.00

11.841.091.120.89

20.941.021.021.00

30.991.001.001.00

41.001.001.001.00

51.001.001.001.00

解答:

>>tic;

>>A=[5121;2511;12102;12210];

>>b=[991515]';

>>[x,flag,relres,iter,resvec]=pcg(A,b,1e-6,10);

>>t1=toc

t1=

0.0064

用同样的方法计算得到不同迭代方法所用时间,迭代次数都取10次

Jacobi迭代法

t1=

0.0279

Gauss-Seidel迭代法

t1=

0.0221

SOR迭代法

t1=

0.0272

可见上述三种迭代法的用时相当,而共轭梯度法用时只有它们的1/4左右。

解答:

先将微分方程写成自定义函数ex9fun.m

functionf=ex9fun(x,y)

f=-2*x*y;

二三阶龙格-库塔法:

在命令窗口输入以下语句:

>>[x,y]=ode23('ex9fun',[0:

0.1:

1.2],1)

x=

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

1.1000

1.2000

y=

1.0000

0.9900

0.9608

0.9139

0.8522

0.7788

0.6977

0.6127

0.5273

0.4449

0.3679

0.2982

0.2369

改进欧拉法:

在命令窗口输入以下语句:

>>[x,y]=euler2('ex9fun',[01.2],1,0.1)

x=

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

1.1000

1.2000

y=

1.0000

0.9900

0.9607

0.9138

0.8520

0.7788

0.6978

0.6129

0.5279

0.4457

0.3691

0.2997

0.2387

方程的解析解用Dsolve('Dy=-2*x*y','y(0)=1','x')求得为y=exp(-x^2)。

 

第四章习题及参考答案

1.填空题

(1)结构数组元素是__结构__类型数据,细胞数组元素是细胞类型数据。

(2)结构数组名与域名之间以_圆点“.”_间隔,同一域的数据类型__相同__。

(3)创建结构数组可以对结构数组的域直接赋值和采用函数_struct_,当采用函数创建时,可以一次给多个元素赋值,此时,各元素值应以_{}_括号括起来,如果某个_域_的值都相同,则可以只输入一次。

(4)创建细胞数组可以对细胞元素直接赋值或采用函数_cell_,采用函数创建的细胞数组所有元素的值为_空值。

(5)删除域名的函数是_rmfield_,删除结构数组元素的方法是将欲删除的元素赋空值。

(6)利用函数_fieldnames_可以得到结构数组的域名,利用函数_getfield_可以得到结构数组的域值,利用多种方法可以访问结构数组的元素。

(7)将细胞元素赋以空值可以删除细胞元素内容(用花括号),如果要从细胞数组中删除某个细胞元素,则需要_将细胞元素(用园括号)赋以空值。

(8)利用花括号和下标可以得到细胞数组的元素内容,利用圆括号和下标可以得到细胞数组的元素。

(9)结构细胞数组的元素是结构类型数据,元素值是结构。

2.选择题

(1)在MATLAB命令窗口输入语句:

>>teacher=struct('name',{'John','Smith'},'age',{25,30});

现需将结构数组teacher的第一个age域值修改为35,则应使用__C__。

A.setfield(teacher,'age

(1)',35)

B.teacher

(1)=setfield(teacher

(1),'age',35)

C.teacher

(1).age=35

D.teacher=(teacher.age

(1)=35)

(2)对于题

(1)创建的结构数组teacher,若进行下列操作,其结果为__A__。

>>fieldnames(teacher)

A.ans=

'name'

'age'

B.ans=

name

age

C.ans=

name:

'John'

age:

25

D.ans=

name:

'Smith'

age:

30

(3)对于题

(1)创建的结构数组teacher,若需要引用Smith的年龄,可以使用__BD__。

A.getfield(teacher,'age

(2)')

B.getfield(teacher

(2),'age')

C.teacher.age

(2)

D.teacher

(2).age

(4)在MATLAB命令窗口输入语句:

>>teacher=struct('name',{'John','Smith'},'age',{25,30});

则,再输入a1=teacher

(1)的结果为__A__,输入a2=teacher

(1).name的结果为__C__。

A.a1=

name:

'John'

age:

25

B.a1=

name:

John

age:

25

C.a2=

John

D.a2=

'John'

(5)在MATLAB命令窗口输入语句:

>>teacher1=struct('name',{'John','Smith'},'age',{25,30});

>>teacher2=struct('name',{'John','Smith'},'age',{'25','30'});

则,再输入a1=teacher1

(1).age

(2)的结果为__C__,输入a1=teacher2

(1).age

(2)的结果为__D__,输入a1=teacher1

(1).age的结果为__A__,输入a1=teacher2

(1).age的结果为__A__。

A.a1=

25

B.a1=

30

C.出错信息

D.a1=

5

>>teacher05=struct('id',{'xx010','xx016'},...

'name',{'黎明','王佳薇'},'course',{{'高数'},{'电路''模电'}});

>>student05=struct('number',{'20050731021','20050731031',...

'20050731036'},'name',{'张小霞','郭凯','周明辉'},...

'course',{{'高数''电路''模电'}},...

'score',{[708778],[829088],[889291]});

>>teacher05

(1)

ans=

id:

'xx010'

name:

'黎明'

course:

{'高数'}

>>teacher05

(2)

ans=

id:

'xx016'

name:

'王佳薇'

course:

{'电路''模电'}

>>student05

(1)

ans=

number:

'20050731021'

name:

'张小霞'

course:

{'高数''电路''模电'}

score:

[708778]

>>student05

(2)

ans=

number:

'20050731031'

name:

'郭凯'

course:

{'高数''电路''模电'}

score:

[829088]

>>student05(3)

ans=

number:

'20050731036'

name:

'周明辉'

course:

{'高数''电路''模电'}

score:

[889291]

>>class05_strct{1}=teacher05;

>>class05_strct{2}=student05;

>>class05_strct{1}

(1),class05_strct{1}

(2)

ans=

id:

'xx010'

name:

'黎明'

course:

{'高数'}

ans=

id:

'xx016'

name:

'王佳薇'

course:

{'电路''模电'}

>>class05_strct{2}

(1),class05_strct{2}

(2),class05_strct{2}(3)

ans=

number:

'20050731021'

name:

'张小霞'

course:

{'高数''电路''模电'}

score:

[708778]

ans=

number:

'20050731031'

name:

'郭凯'

course:

{'高数''电路''模电'}

score:

[829088]

ans=

number:

'20050731036'

name:

'周明辉'

course:

{'高数''电路''模电'}

score:

[889291]

>>teacher04=struct('id',{'xx012','xx016'},...

'name',{'姚大志','王佳薇'},'course',{{'数电'},{'高频'}});

>>student04=struct('number',{'20040734005','20040734036'},...

'name',{'王雪梅','高志刚'},...

'course',{{'数电''高频'}},'score',{[7580],[5665]});

>>class04_strct{1}=teacher04;

>>class04_strct{2}=student04;

>>class={class05_strct,class04_strct};

>>celldisp(class)

class{1}{1}=

1x2structarraywithfields:

id

name

course

class{1}{2}=

1x3structarraywithfields:

number

name

course

score

class{2}{1}=

1x2structarraywithfields:

id

name

course

class{2}{2}=

1x2structarraywithfields:

number

name

course

score

>>class{2}

ans=

[1x2struct][1x2struct]

>>class

(2)

ans=

{1x2cell}

>>class{2}

(2)

ans=

[1x2struct]

>>class{2}{2}

ans=

1x2structarraywithfields:

number

name

course

score

>>class{2}{2}

(2)

ans=

number:

'20040734036'

name:

'高志刚'

course:

{'数电''高频'}

score:

[5665]

>>class{2}{2}

(2).name,class{2}{2}

(2).course,class{2}{2}

(2).score

ans=

高志刚

ans=

'数电''高频'

ans=

5665

>>class{2}{2}

(2).score

(1)=85;class{2}{2}

(2).course

(1),class{2}{2}

(2).score

(1)

ans=

'数电'

ans=

85

 

第五章习题及参考答案

 

 

解答:

>>symsabcx

>>f=(a*x^2+b*x+c-3)^3-a*(c*x^5+4*b*x-1)-18*b*((2+5*x)^7-a+c)

>>fx=collect(f,x)

fx=

-1406250*b*x^7+(a^3-3937500*b)*x^6+(3*b*a^2-a*c-4725000*b)*x^5+(-3150000*b+(c-3)*a^2+2*b^2*a+a*(2*(c-3)*a+b^2))*x^4+(-1260000*b+4*(c-3)*b*a+b*(2*(c-3)*a+b^2))*x^3+((c-3)*(2*(c-3)*a+b^2)+2*b^2*(c-3)+a*(c-3)^2-302400*b)*x^2+(3*(c-3)^2*b-4*b*a-40320*b)*x+(c-3)^3-18*b*(128+c-a)+a

>>fa=collect(f,a)

fa=

x^6*a^3+3*(b*x+c-3)*x^4*a^2+(18*b-c*x^5-4*b*x+1+3*(b*x+c-3)^2*x^2)*a+(b*x+c-3)^3-18*b*((2+5*x)^7+c)

解答:

>>symsxy

>>f=x^2*y+x*y-x^2-2*x;

>>g=-(1/4)*x*exp(-2*x)+(3/16)*exp(-2*x);

>>fx=collect(f)

fx=

(y-1)*x^2+(y-2)*x

>>gepx=collect(g,exp(-2*x))

gepx=

(-1/4*x+3/16)*exp(-2*x)

解答:

(1)

>>symsx

>>f=x^3-3*x^2-3*x+1;

>>F=factor(f)

F=

(x+1)*(x^2-4*x+1)

(2)

>>symsx

>>g=x^3-7*x+6;

>>G=factor(g)

G=

(x-1)*(x-2)*(x+3)

 

解答:

>>symsx

>>f1=cos(x)+sqrt(-sin(x)^2);

>>f2=x^3+3*x^2+3*x+1;

>>simple(f1)

simplify:

cos(x)+(-1+cos(x)^2)^(1/2)

radsimp:

cos(x)+i*sin(x)

combine(trig):

cos(x)+1/2*(-2+2*cos(2*x))^(1/2)

factor:

cos(x)+(-sin(x)^2)^(1/2)

expand:

cos(x)+(-sin(x)^2)^(1/2)

combine:

cos(x)+1/2*(-2+2*cos(2*x))^(1/2)

convert(exp):

1/2*exp(i*x)+1/2/exp(i*x)+1/4*4^(1/2)*((exp(i*x)-1/exp(i*x))^2)^(1/2)

convert(sincos):

cos(x)+(-sin(x)^2)^(1/2)

convert(tan):

(1-tan(1/2*x)^2)/(1+tan(1/2*x)^2)+(-4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2)^(1/2)

collect(x):

cos(x)+(-sin(x)^2)^(1/2)

mwcos2sin:

cos(x)+(-sin(x)^2)^(1/2)

ans=

cos(x)+i*sin(x)

>>simple(f2)

simplify:

x^3+3*x^2+3*x+1

radsimp:

x^3+3*x^2+3*x+1

combine(trig):

x^3+3*x^2+3*x+1

factor:

(x+1)^3

expand:

x^3+3*x^2+3*x+1

combine:

x^3+3*x^2+3*x+1

convert(exp):

x^3+3*x^2+3*

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1