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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章习题及参考答案解答:p=[1-1-1];roots(p)ans=-0.61801.6180解答:取n=5,m=61x=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);gridonsubplot(2,1,2);plot(xi,y2-y0);gridon分段线性和三次样条插值方法与精确值之差取n=11,m=61x=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);gridonsubplot(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:5x(2,:)=-5:0.01:5y=exp(-x.^2/2);z=trapz(x,y)/(2*pi)???Errorusing==trapzLENGTH(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.1437z2=0.1104z3=0.1116z4=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))end00.000.000.000.0011.801.801.501.5020.540.480.660.6631.311.321.221.2240.810.790.860.8651.131.131.091.0900.000.000.000.0011.801.081.100.8820.971.021.021.0030.991.001.001.0041.001.001.001.0051.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))end00.000.000.000.0012.161.121.270.9720.621.100.981.0331.060.951.001.0041.001.011.001.0051.001.001.001.00若取w=0.02,以下结果表明收敛速度更快:00.000.000.000.0011.841.091.120.8920.941.021.021.0030.991.001.001.0041.001.001.001.0051.001.001.001.00解答:tic;A=[5121;2511;12102;12210];b=[991515]';[x,flag,relres,iter,resvec]=pcg(A,b,1e-6,10);t1=toct1=0.0064用同样的方法计算得到不同迭代方法所用时间,迭代次数都取10次Jacobi迭代法t1=0.0279Gauss-Seidel迭代法t1=0.0221SOR迭代法t1=0.0272可见上述三种迭代法的用时相当,而共轭梯度法用时只有它们的1/4左右。解答:先将微分方程写成自定义函数ex9fun.mfunctionf=ex9fun(x,y)f=-2*x*y;二三阶龙格-库塔法:在命令窗口输入以下语句:[x,y]=ode23('ex9fun',[0:0.1:1.2],1)x=00.10000.20000.30000.40000.50000.60000.70000.80000.90001.00001.10001.2000y=1.00000.99000.96080.91390.85220.77880.69770.61270.52730.44490.36790.29820.2369改进欧拉法:在命令窗口输入以下语句:[x,y]=euler2('ex9fun',[01.2],1,0.1)x=00.10000.20000.30000.40000.50000.60000.70000.80000.90001.00001.10001.2000y=1.00000.99000.96070.91380.85200.77880.69780.61290.52790.44570.36910.29970.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=35D.teacher=(teacher.age(1)=35)(2)对于题(1)创建的结构数组teacher,若进行下列操作,其结果为__A__。fieldnames(teacher)A.ans='name''age'B.ans=nameageC.ans=name:'John'age:25D.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:25B.a1=name:Johnage:25C.a2=JohnD.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=25B.a1=30C.出错信息D.a1=5teacher05=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:'xx01

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功