武漢大學(xué)matlab期末課程作業(yè).doc
“MATLAB及其應(yīng)用”課程作業(yè)
院系:
姓名:
學(xué)號(hào):
聯(lián)系方式:
第1章
1. 請(qǐng)指出如下5個(gè)變量名中,哪些是合法的?
abcd-2 xyz_3 3chan a變量 ABCDefgh
答:xyz_3,ABCDefgh是合法的。
2. 在命令窗中,運(yùn)行命令a=sqrt(2)。然后請(qǐng)回答以下問(wèn)題:計(jì)算結(jié)果a是精準(zhǔn)的嗎?該計(jì)算結(jié)果只是5位有效數(shù)字精度的近似嗎?請(qǐng)?jiān)诿畲爸校@示出具有最多位有效數(shù)字的近似值?再請(qǐng)恢復(fù)MATLAB數(shù)值結(jié)果顯示的默認(rèn)設(shè)置。
答:不是精確的。該計(jì)算結(jié)果只是5位有效數(shù)字精度的近似。
3. 命令clear, clf, clc各有什么用處?
答:clear可以清除matlab工作空間中保持的變量。clf可以清除圖形窗。clc清除命令窗中顯示內(nèi)容。
4. 想要在MATLAB中產(chǎn)生二維數(shù)組,下面哪些命令能實(shí)現(xiàn)目的?
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] %整個(gè)命令在中文狀態(tài)下輸入
答:第二條S=[1 2 3;4 5 6;7 8 9]能實(shí)現(xiàn)目的。中文狀態(tài)下逗號(hào)不是有效字符。
第2章
1. 說(shuō)出以下四條命令產(chǎn)生的結(jié)果各屬于哪種數(shù)據(jù)類型,是“雙精度”對(duì)象,還是“符號(hào)”對(duì)象?
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é)果是符號(hào)。vpa(sym(3/7+0.1),4)結(jié)果是符號(hào)。vpa(sym(3/7+0.1))結(jié)果是符號(hào)。
過(guò)程如圖:
2. 已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)))產(chǎn)生精準(zhǔn)符號(hào)數(shù)字,請(qǐng)回答:以下產(chǎn)生的各種符號(hào)數(shù)哪些是精準(zhǔn)的?若不精準(zhǔn),誤差又是多少?能說(shuō)出產(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運(yùn)行程序如下:
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是精準(zhǔn)的。這是由sym(Num)和sym(Num)的區(qū)別帶來(lái)的。前者以字符串的形式傳給符號(hào)運(yùn)算內(nèi)核,可以保留完整的精度;而后者經(jīng)過(guò)浮點(diǎn)運(yùn)算后再轉(zhuǎn)換為符號(hào)類型,存在精度損失。
3. 在不加專門指定的情況下,以下符號(hào)表達(dá)式中的哪一個(gè)變量被認(rèn)為是獨(dú)立自由變量。
sym(sin(w*t)) , sym(a*exp(-X) ) , sym(z*exp(j*th))
答:運(yùn)行程序如下
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. 請(qǐng)讀者先運(yùn)行以下命令
a=0;b=pi;
t1=a:pi/9:pi;
t2=linspace(a,b,10);
T=t1*t2;
F=find(T<0);
然后,請(qǐng)回答變量a、t1、T、F的維度、規(guī)模、長(zhǎng)度分別是多少?t1完全等于t2嗎?為什么?
答:運(yùn)行程序如下
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維;規(guī)模a是1 1,t1是1 10,T是1 1,F(xiàn)是0 0;長(zhǎng)度分別為1,10,1,0;t1和t2是完全相等的。t1產(chǎn)生的是0到pi之前間隔為pi/9的十個(gè)數(shù)值,t2產(chǎn)生的是0到pi之前等分間隔的十個(gè)數(shù)值,是等價(jià)的。
2. 對(duì)于命令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
先請(qǐng)你用一條命令,使A數(shù)組中取值為2、4、8、16的元素都被重新賦值為NaN。然后,再請(qǐng)你用一條命令,把A數(shù)組的第4、5兩列元素都被重新賦值為Inf。
答:運(yùn)行程序如下
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)生成二維數(shù)組A,試求該數(shù)組中所有大于0.5的元素的位置,分別求出它們的“全下標(biāo)”和“單下標(biāo)”。
答:運(yùn)行程序如下:
rng(default);
A=rand(3,5);
B=(A>0.5)
si=find(B)
[r,c]=find(B)
可知,單下標(biāo)為1,2,4,5,8,9,10,12,13,15;
雙下標(biāo)為(1,1)(2,1)(1,2)(2,2)(2,3)(3,3)(1,4)(3,4)(1,5)(3,5)。
第4章
2. 采用數(shù)值計(jì)算方法,畫(huà)出在區(qū)間曲線,并計(jì)算。(提示:cumtrapz快捷,在精度要求不高處可用;integral也可試。巧用find。)
答:運(yùn)行程序如下
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. 求函數(shù)在區(qū)間中的最小值點(diǎn)。(提示:作圖觀察。)
答:運(yùn)行程序如下:
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*)
故最小值點(diǎn)為(-1.285,-0.186)。
第5章
1. 已知橢圓的長(zhǎng)、短軸,用“小紅點(diǎn)線”畫(huà)如下圖所示的橢圓。(提示:參量;點(diǎn)的大??;axis equal)
答:運(yùn)行程序如下:
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三個(gè)城市上半年每個(gè)月的國(guó)民生產(chǎn)總值表p5.1。試畫(huà)出如圖p5-3所示的三城市上半年每月生產(chǎn)總值的累計(jì)直方圖。(提示:bar(x,Y,style); colormap(cool); legend。)
表p5.1 各城市生產(chǎn)總值數(shù)據(jù)(單位:億元)
城市
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
運(yùn)行程序如下:
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. 請(qǐng)分別寫出用for 和while 循環(huán)語(yǔ)句計(jì)算的程序。此外,還請(qǐng)寫出避免循環(huán)的數(shù)值、符號(hào)計(jì)算程序。(提示:sum和“指數(shù)采用數(shù)組”配合; tic, toc可用以記錄計(jì)算所花的時(shí)間。)
答:用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
避免循環(huán)數(shù)值程序:
tic;k=zeros(1,1000000);
d=0:1000000;
k=0.2.^d;
c=sum(k)
t3=toc
符號(hào)計(jì)算程序:
tic;
syms k
d=vpa(symsum(0.2^k,k,0,1000000))
t4=toc
3. 編寫一個(gè)函數(shù)M文件,它的功能:沒(méi)有輸入量時(shí),畫(huà)出單位圓(見(jiàn)圖p6-1);輸入量是大于2的自然數(shù)N時(shí),繪制正N邊形,圖名應(yīng)反映顯示多邊形的真實(shí)邊數(shù)(見(jiàn)圖p6-2);輸入量是“非自然數(shù)”時(shí),給出“出錯(cuò)提示”。此外,函數(shù)M文件應(yīng)有H1行、幫助說(shuō)明和程序編寫人姓名。(提示:nargin, error, int2str)
圖 p6-1
圖 p6-2
編寫程序如下:
function [Y]=rzy(N)
%rzy()則畫(huà)出單位圓。
%rzy(N)中,N為大于2的自然數(shù)時(shí),畫(huà)正N邊形,是非自然數(shù)時(shí),報(bào)錯(cuò)。
%該程序編寫人為饒梓耀
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;
end
end
示例圖如下
收藏
- 資源描述:
-
“MATLAB及其應(yīng)用”課程作業(yè)
院系:
姓名:
學(xué)號(hào):
聯(lián)系方式:
第1章
1. 請(qǐng)指出如下5個(gè)變量名中,哪些是合法的?
abcd-2 xyz_3 3chan a變量 ABCDefgh
答:xyz_3,ABCDefgh是合法的。
2. 在命令窗中,運(yùn)行命令a=sqrt(2)。然后請(qǐng)回答以下問(wèn)題:計(jì)算結(jié)果a是精準(zhǔn)的嗎?該計(jì)算結(jié)果只是5位有效數(shù)字精度的近似嗎?請(qǐng)?jiān)诿畲爸?,顯示出具有最多位有效數(shù)字的近似值?再請(qǐng)恢復(fù)MATLAB數(shù)值結(jié)果顯示的默認(rèn)設(shè)置。
答:不是精確的。該計(jì)算結(jié)果只是5位有效數(shù)字精度的近似。
3. 命令clear, clf, clc各有什么用處?
答:clear可以清除matlab工作空間中保持的變量。clf可以清除圖形窗。clc清除命令窗中顯示內(nèi)容。
4. 想要在MATLAB中產(chǎn)生二維數(shù)組,下面哪些命令能實(shí)現(xiàn)目的?
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] %整個(gè)命令在中文狀態(tài)下輸入
答:第二條S=[1 2 3;4 5 6;7 8 9]能實(shí)現(xiàn)目的。中文狀態(tài)下逗號(hào)不是有效字符。
第2章
1. 說(shuō)出以下四條命令產(chǎn)生的結(jié)果各屬于哪種數(shù)據(jù)類型,是“雙精度”對(duì)象,還是“符號(hào)”對(duì)象?
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é)果是符號(hào)。vpa(sym(3/7+0.1),4)結(jié)果是符號(hào)。vpa(sym(3/7+0.1))結(jié)果是符號(hào)。
過(guò)程如圖:
2. 已知a1=sin(sym(pi/4)+exp(sym(0.7)+sym(pi/3)))產(chǎn)生精準(zhǔn)符號(hào)數(shù)字,請(qǐng)回答:以下產(chǎn)生的各種符號(hào)數(shù)哪些是精準(zhǔn)的?若不精準(zhǔn),誤差又是多少?能說(shuō)出產(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運(yùn)行程序如下:
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是精準(zhǔn)的。這是由sym(Num)和sym(Num)的區(qū)別帶來(lái)的。前者以字符串的形式傳給符號(hào)運(yùn)算內(nèi)核,可以保留完整的精度;而后者經(jīng)過(guò)浮點(diǎn)運(yùn)算后再轉(zhuǎn)換為符號(hào)類型,存在精度損失。
3. 在不加專門指定的情況下,以下符號(hào)表達(dá)式中的哪一個(gè)變量被認(rèn)為是獨(dú)立自由變量。
sym(sin(w*t)) , sym(a*exp(-X) ) , sym(z*exp(j*th))
答:運(yùn)行程序如下
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. 請(qǐng)讀者先運(yùn)行以下命令
a=0;b=pi;
t1=a:pi/9:pi;
t2=linspace(a,b,10);
T=t1*t2;
F=find(T<0);
然后,請(qǐng)回答變量a、t1、T、F的維度、規(guī)模、長(zhǎng)度分別是多少?t1完全等于t2嗎?為什么?
答:運(yùn)行程序如下
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維;規(guī)模a是1 1,t1是1 10,T是1 1,F(xiàn)是0 0;長(zhǎng)度分別為1,10,1,0;t1和t2是完全相等的。t1產(chǎn)生的是0到pi之前間隔為pi/9的十個(gè)數(shù)值,t2產(chǎn)生的是0到pi之前等分間隔的十個(gè)數(shù)值,是等價(jià)的。
2. 對(duì)于命令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
先請(qǐng)你用一條命令,使A數(shù)組中取值為2、4、8、16的元素都被重新賦值為NaN。然后,再請(qǐng)你用一條命令,把A數(shù)組的第4、5兩列元素都被重新賦值為Inf。
答:運(yùn)行程序如下
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)生成二維數(shù)組A,試求該數(shù)組中所有大于0.5的元素的位置,分別求出它們的“全下標(biāo)”和“單下標(biāo)”。
答:運(yùn)行程序如下:
rng(default);
A=rand(3,5);
B=(A>0.5)
si=find(B)
[r,c]=find(B)
可知,單下標(biāo)為1,2,4,5,8,9,10,12,13,15;
雙下標(biāo)為(1,1)(2,1)(1,2)(2,2)(2,3)(3,3)(1,4)(3,4)(1,5)(3,5)。
第4章
2. 采用數(shù)值計(jì)算方法,畫(huà)出在區(qū)間曲線,并計(jì)算。(提示:cumtrapz快捷,在精度要求不高處可用;integral也可試。巧用find。)
答:運(yùn)行程序如下
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. 求函數(shù)在區(qū)間中的最小值點(diǎn)。(提示:作圖觀察。)
答:運(yùn)行程序如下:
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*)
故最小值點(diǎn)為(-1.285,-0.186)。
第5章
1. 已知橢圓的長(zhǎng)、短軸,用“小紅點(diǎn)線”畫(huà)如下圖所示的橢圓。(提示:參量;點(diǎn)的大?。籥xis equal)
答:運(yùn)行程序如下:
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三個(gè)城市上半年每個(gè)月的國(guó)民生產(chǎn)總值表p5.1。試畫(huà)出如圖p5-3所示的三城市上半年每月生產(chǎn)總值的累計(jì)直方圖。(提示:bar(x,Y,style); colormap(cool); legend。)
表p5.1 各城市生產(chǎn)總值數(shù)據(jù)(單位:億元)
城市
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
運(yùn)行程序如下:
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. 請(qǐng)分別寫出用for 和while 循環(huán)語(yǔ)句計(jì)算的程序。此外,還請(qǐng)寫出避免循環(huán)的數(shù)值、符號(hào)計(jì)算程序。(提示:sum和“指數(shù)采用數(shù)組”配合; tic, toc可用以記錄計(jì)算所花的時(shí)間。)
答:用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
避免循環(huán)數(shù)值程序:
tic;k=zeros(1,1000000);
d=0:1000000;
k=0.2.^d;
c=sum(k)
t3=toc
符號(hào)計(jì)算程序:
tic;
syms k
d=vpa(symsum(0.2^k,k,0,1000000))
t4=toc
3. 編寫一個(gè)函數(shù)M文件,它的功能:沒(méi)有輸入量時(shí),畫(huà)出單位圓(見(jiàn)圖p6-1);輸入量是大于2的自然數(shù)N時(shí),繪制正N邊形,圖名應(yīng)反映顯示多邊形的真實(shí)邊數(shù)(見(jiàn)圖p6-2);輸入量是“非自然數(shù)”時(shí),給出“出錯(cuò)提示”。此外,函數(shù)M文件應(yīng)有H1行、幫助說(shuō)明和程序編寫人姓名。(提示:nargin, error, int2str)
圖 p6-1
圖 p6-2
編寫程序如下:
function [Y]=rzy(N)
%rzy()則畫(huà)出單位圓。
%rzy(N)中,N為大于2的自然數(shù)時(shí),畫(huà)正N邊形,是非自然數(shù)時(shí),報(bào)錯(cuò)。
%該程序編寫人為饒梓耀
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;
end
end
示例圖如下
展開(kāi)閱讀全文