收藏 分销(赏)

武汉大学matlab期末课程作业.doc

上传人:精**** 文档编号:2047061 上传时间:2024-05-14 格式:DOC 页数:18 大小:525.47KB 下载积分:8 金币
下载 相关 举报
武汉大学matlab期末课程作业.doc_第1页
第1页 / 共18页
武汉大学matlab期末课程作业.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
“MATLAB及其应用”课程作业 院系: 姓名: 学号: 联系方式: 第1章 1. 请指出如下5个变量名中,哪些是合法的? abcd-2 xyz_3 3chan a变量 ABCDefgh 答:xyz_3,ABCDefgh是合法的。 2. 在命令窗中,运行命令a=sqrt(2)。然后请回答以下问题:计算结果a是精准的吗?该计算结果只是5位有效数字精度的近似吗?请在命令窗中,显示出具有最多位有效数字的近似值?再请恢复MATLAB数值结果显示的默认设置。 答:不是精确的。该计算结果只是5位有效数字精度的近似。 3. 命令clear, clf, clc各有什么用处? 答:clear可以清除matlab工作空间中保持的变量。clf可以清除图形窗。clc清除命令窗中显示内容。 4. 想要在MATLAB中产生二维数组,下面哪些命令能实现目的? S=[1,2,3;4,5,6;7,8;9] S=[1 2 3;4 5 6;7 8 9] S=[1,2,3;4,5,6;7,8,9] %整个命令在中文状态下输入 答:第二条S=[1 2 3;4 5 6;7 8 9]能实现目的。中文状态下逗号不是有效字符。 第2章 1. 说出以下四条命令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”对象? 3/7+0.1, sym(3/7+0.1), vpa(sym(3/7+0.1),4), vpa(sym(3/7+0.1)) 答:3/7+0.1结果是双精度。sym(3/7+0.1)结果是符号。vpa(sym(3/7+0.1),4)结果是符号。vpa(sym(3/7+0.1))结果是符号。 过程如图: 2. 已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)))产生精准符号数字,请回答:以下产生的各种符号数哪些是精准的?若不精准,误差又是多少?能说出产生误差的原因吗? a2=sin(sym(pi/4)+exp(sym(0.7))*exp(sym(pi/3))) a3=sin(sym('pi/4')+exp(sym('0.7'))*exp(sym('pi/3'))) a4=sin(sym('pi/4')+exp(sym('0.7+pi/3'))) a5=sin(sym(pi/4)+exp(sym(0.7+pi/3))) a6=sin(sym(pi/4)+sym(exp(0.7+pi/3))) a7=sin(sym(pi/4+exp(0.7+pi/3))) a8=sym(sin(pi/4+exp(0.7+pi/3))) (提示:可用vpa观察误差;注意数位的设置)。 答:matlab运行程序如下: format long; a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3))); a2=sin(sym(pi/4)+exp(sym(0.7))*exp(sym(pi/3))); a3=sin(sym('pi/4')+exp(sym('0.7'))*exp(sym('pi/3'))); a4=sin(sym('pi/4')+exp(sym('0.7+pi/3'))); a5=sin(sym(pi/4)+exp(sym(0.7+pi/3))); a6=sin(sym(pi/4)+sym(exp(0.7+pi/3))); a7=sin(sym(pi/4+exp(0.7+pi/3))); a8=sym(sin(pi/4+exp(0.7+pi/3))); b2=vpa(a1-a2,40) b3=vpa(a1-a3,40) b4=vpa(a1-a4,40) b5=vpa(a1-a5,40) b6=vpa(a1-a6,40) b7=vpa(a1-a7,40) b8=vpa(a1-a8,40) 观察可知,只有a2是精准的。这是由sym('Num')和sym(Num)的区别带来的。前者以字符串的形式传给符号运算内核,可以保留完整的精度;而后者经过浮点运算后再转换为符号类型,存在精度损失。 3. 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是独立自由变量。 sym('sin(w*t)') , sym('a*exp(-X)' ) , sym('z*exp(j*th)') 答:运行程序如下 clear symvar(sym('sin(w*t)') ,1) symvar(sym('a*exp(-X)' ) ,1) symvar(sym('z*exp(j*th)') ,1) 可知分别为w,a,z。 第3章 1. 请读者先运行以下命令 a=0;b=pi; t1=a:pi/9:pi; t2=linspace(a,b,10); T=t1*t2'; F=find(T<0); 然后,请回答变量a、t1、T、F的维度、规模、长度分别是多少?t1完全等于t2吗?为什么? 答:运行程序如下 clear a=0; b=pi; t1=a:pi/9:pi; t2=linspace(a,b,10); T=t1*t2'; F=find(T<0); a1=ndims(a),a2=ndims(t1),a3=ndims(T),a4=ndims(F) b1=size(a),b2=size(t1),b3=size(T),b4=size(F) c1=length(a),c2=length(t1),c3=length(T),c4=length(F) 可知,维度都是2维;规模a是1 1,t1是1 10,T是1 1,F是0 0;长度分别为1,10,1,0;t1和t2是完全相等的。t1产生的是0到pi之前间隔为pi/9的十个数值,t2产生的是0到pi之前等分间隔的十个数值,是等价的。 2. 对于命令A=reshape(1:18,3,6)产生的数组 A = 1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18 先请你用一条命令,使A数组中取值为2、4、8、16的元素都被重新赋值为NaN。然后,再请你用一条命令,把A数组的第4、5两列元素都被重新赋值为Inf。 答:运行程序如下 A=[1 4 7 10 13 16; 2 5 8 11 14 17; 3 6 9 12 15 18]; A([2 4 8 16])=NaN; A A([10 11 12 13 14 15])=Inf; A 3. 由命令rng('default'),A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。 答:运行程序如下: rng('default'); A=rand(3,5); B=(A>0.5) si=find(B) [r,c]=find(B) 可知,单下标为1,2,4,5,8,9,10,12,13,15; 双下标为(1,1)(2,1)(1,2)(2,2)(2,3)(3,3)(1,4)(3,4)(1,5)(3,5)。 第4章 2. 采用数值计算方法,画出在区间曲线,并计算。(提示:cumtrapz快捷,在精度要求不高处可用;integral也可试。巧用find。) 答:运行程序如下 x=eps:0.01:10; z=sin(x)./x; y=cumtrapz(x,z); plot(x,y),grid on; a=find(x==4.5); y(a) 故=1.6541 5. 求函数在区间中的最小值点。(提示:作图观察。) 答:运行程序如下: format long t=-5:0.00001:5; y=@(t)(sin(5*t))^2*exp(0.06*t^2)-1.5*t*cos(2*t)+1.8*abs(t+0.5); ezplot(y,[-5,5]),grid on,hold on [t1,y1]=fminbnd(y,-5,5) plot(t1,y1,'r*') 故最小值点为(-1.285,-0.186)。 第5章 1. 已知椭圆的长、短轴,用“小红点线”画如下图所示的椭圆。(提示:参量;点的大小;axis equal) 答:运行程序如下: a=4;b=2; t=0:pi/75:2*pi; plot(a*cos(t),b*sin(t),'r.','markersize',15) axis equal,xlabel('x'),ylabel('y'); 3. A,B,C三个城市上半年每个月的国民生产总值表p5.1。试画出如图p5-3所示的三城市上半年每月生产总值的累计直方图。(提示:bar(x,Y,'style'); colormap(cool); legend。) 表p5.1 各城市生产总值数据(单位:亿元) 城市 1月 2月 3月 4月 5月 6月 A 170 120 180 200 190 220 B 120 100 110 180 170 180 C 70 50 80 100 95 120 图 p5-3 运行程序如下: X=[1;2;3;4;5;6]; Y=[170 120 70;120 100 50;180 110 80;200 180 100;190 170 95;220 180 120]; bar(X,Y,'stacked'),colormap(cool),legend('A','B','C',2) 第6章 1. 请分别写出用for 和while 循环语句计算的程序。此外,还请写出避免循环的数值、符号计算程序。(提示:sum和“指数采用数组”配合; tic, toc可用以记录计算所花的时间。) 答:用for的写法: tic;a=0; for k=0:1000000; a=a+0.2^k; end a t1=toc 用while的写法: tic;b=0;k=0; while k<=1000000 b=b+0.2^k; k=k+1; end b t2=toc 避免循环数值程序: tic;k=zeros(1,1000000); d=0:1000000; k=0.2.^d; c=sum(k) t3=toc 符号计算程序: tic; syms k d=vpa(symsum(0.2^k,k,0,1000000)) t4=toc 3. 编写一个函数M文件,它的功能:没有输入量时,画出单位圆(见图p6-1);输入量是大于2的自然数N时,绘制正N边形,图名应反映显示多边形的真实边数(见图p6-2);输入量是“非自然数”时,给出“出错提示”。此外,函数M文件应有H1行、帮助说明和程序编写人姓名。(提示:nargin, error, int2str) 图 p6-1 图 p6-2 编写程序如下: function [Y]=rzy(N) %rzy()则画出单位圆。 %rzy(N)中,N为大于2的自然数时,画正N边形,是非自然数时,报错。 %该程序编写人为饶梓耀 switch nargin case 0 N=1000; t=0:pi/N:2*pi; plot(cos(t),sin(t),'r','linewidth',3),title('Circle') axis equal;axis off; case 1 if N~=round(N)||N<0 error('输入N应为自然数'); elseif N==round(N)&&N>2 t=0:2*pi/N:2*pi; plot(cos(t),sin(t),'r','linewidth',3),title(['Polygon with ',int2str(N),' edges']); axis equal;axis off; end end 示例图如下
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 大学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服