武漢大學(xué)matlab期末課程作業(yè).doc
“MATLAB及其應(yīng)用”課程作業(yè)院系:姓名:學(xué)號:聯(lián)系方式:第1章1. 請指出如下5個變量名中,哪些是合法的?abcd-2xyz_33chana變量ABCDefgh 答:xyz_3,ABCDefgh是合法的。2. 在命令窗中,運行命令a=sqrt(2)。然后請回答以下問題:計算結(jié)果a是精準的嗎?該計算結(jié)果只是5位有效數(shù)字精度的近似嗎?請在命令窗中,顯示出具有最多位有效數(shù)字的近似值?再請恢復(fù)MATLAB數(shù)值結(jié)果顯示的默認設(shè)置。答:不是精確的。該計算結(jié)果只是5位有效數(shù)字精度的近似。3. 命令clear, clf, clc各有什么用處?答:clear可以清除matlab工作空間中保持的變量。clf可以清除圖形窗。clc清除命令窗中顯示內(nèi)容。4. 想要在MATLAB中產(chǎn)生二維數(shù)組,下面哪些命令能實現(xiàn)目的?S=1,2,3;4,5,6;7,8;9S=1 2 3;4 5 6;7 8 9S=1,2,3;4,5,6;7,8,9 %整個命令在中文狀態(tài)下輸入答:第二條S=1 2 3;4 5 6;7 8 9能實現(xiàn)目的。中文狀態(tài)下逗號不是有效字符。第2章1 說出以下四條命令產(chǎn)生的結(jié)果各屬于哪種數(shù)據(jù)類型,是“雙精度”對象,還是“符號”對象?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結(jié)果是雙精度。sym(3/7+0.1)結(jié)果是符號。vpa(sym(3/7+0.1),4)結(jié)果是符號。vpa(sym(3/7+0.1)結(jié)果是符號。過程如圖:2 已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)產(chǎn)生精準符號數(shù)字,請回答:以下產(chǎn)生的各種符號數(shù)哪些是精準的?若不精準,誤差又是多少?能說出產(chǎn)生誤差的原因嗎?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觀察誤差;注意數(shù)位的設(shè)置)。答: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)的區(qū)別帶來的。前者以字符串的形式傳給符號運算內(nèi)核,可以保留完整的精度;而后者經(jīng)過浮點運算后再轉(zhuǎn)換為符號類型,存在精度損失。3 在不加專門指定的情況下,以下符號表達式中的哪一個變量被認為是獨立自由變量。sym(sin(w*t) , sym(a*exp(-X) ) , sym(z*exp(j*th)答:運行程序如下clearsymvar(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的維度、規(guī)模、長度分別是多少?t1完全等于t2嗎?為什么?答:運行程序如下cleara=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維;規(guī)模a是1 1,t1是1 10,T是1 1,F(xiàn)是0 0;長度分別為1,10,1,0;t1和t2是完全相等的。t1產(chǎn)生的是0到pi之前間隔為pi/9的十個數(shù)值,t2產(chǎn)生的是0到pi之前等分間隔的十個數(shù)值,是等價的。2 對于命令A(yù)=reshape(1:18,3,6)產(chǎn)生的數(shù)組A = 1 4 7 10 13 16 2 5 8 11 14 17 3 6 9 12 15 18先請你用一條命令,使A數(shù)組中取值為2、4、8、16的元素都被重新賦值為NaN。然后,再請你用一條命令,把A數(shù)組的第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;AA(10 11 12 13 14 15)=Inf;A3. 由命令rng(default),A=rand(3,5)生成二維數(shù)組A,試求該數(shù)組中所有大于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. 采用數(shù)值計算方法,畫出在區(qū)間曲線,并計算。(提示: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.65415. 求函數(shù)在區(qū)間中的最小值點。(提示:作圖觀察。)答:運行程序如下:format longt=-5:0.00001:5;y=(t)(sin(5*t)2*exp(0.06*t2)-1.5*t*cos(2*t)+1.8*abs(t+0.5);ezplot(y,-5,5),grid on,hold ont1,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三個城市上半年每個月的國民生產(chǎn)總值表p5.1。試畫出如圖p5-3所示的三城市上半年每月生產(chǎn)總值的累計直方圖。(提示:bar(x,Y,style); colormap(cool); legend。)表p5.1 各城市生產(chǎn)總值數(shù)據(jù)(單位:億元)城市1月2月3月4月5月6月A170120180200190220B120100110180170180C70508010095120 圖 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 循環(huán)語句計算的程序。此外,還請寫出避免循環(huán)的數(shù)值、符號計算程序。(提示:sum和“指數(shù)采用數(shù)組”配合; tic, toc可用以記錄計算所花的時間。)答:用for的寫法:tic;a=0;for k=0:1000000; a=a+0.2k;endat1=toc用while的寫法:tic;b=0;k=0;while k<=1000000 b=b+0.2k; k=k+1;endbt2=toc避免循環(huán)數(shù)值程序:tic;k=zeros(1,1000000);d=0:1000000;k=0.2.d;c=sum(k)t3=toc 符號計算程序:tic;syms kd=vpa(symsum(0.2k,k,0,1000000)t4=toc3. 編寫一個函數(shù)M文件,它的功能:沒有輸入量時,畫出單位圓(見圖p6-1);輸入量是大于2的自然數(shù)N時,繪制正N邊形,圖名應(yīng)反映顯示多邊形的真實邊數(shù)(見圖p6-2);輸入量是“非自然數(shù)”時,給出“出錯提示”。此外,函數(shù)M文件應(yīng)有H1行、幫助說明和程序編寫人姓名。(提示:nargin, error, int2str)圖 p6-1圖 p6-2編寫程序如下:function Y=rzy(N)%rzy()則畫出單位圓。%rzy(N)中,N為大于2的自然數(shù)時,畫正N邊形,是非自然數(shù)時,報錯。%該程序編寫人為饒梓耀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應(yīng)為自然數(shù)); 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; endend示例圖如下