天天看點

matlab作業1-8

第一章作業

1、安裝MATLAB軟體。

2、學習和掌握MATLAB功能示範,掌握MATLAB幫助系統的運用。

3、繪制正弦函數曲線。時間變量t從0到2*pi,輸出正弦變量x的幅度為2V頻率為1Hz初相位為0。(注意步長的選擇要滿足抽樣定理,最後繪制的正弦波要美觀)

第二章 作業1

2.1 把34.76、-56.9887和1234.567轉換成無符号8位整型,結果是什麼?截圖說明。分析原因。

答案:>> a=uint8(34.76),b=uint8(-56.9887),c=uint8(1234.567)

a =

35

b =

c =

255

原因:uint8函數把輸入的數值變成0到28-1取值範圍内的無符号8位整型,超出此範圍的數變為0或255.

2.2 在指令視窗運作“a=double(45678.23579)”和 “b=single(45678.23579)”結果有什麼差別?在記憶體中有什麼差別?截圖說明。分析原因。

答案:>> a=double(45678.23579),b=single(45678.23579)

a =

4.5678e+04

b =

4.5678e+04

分析:結果沒有差別,隻是單精度型實數在記憶體中占用4個位元組,雙精度型實數在記憶體中占用8個位元組,雙精度型的資料精度更高。

2.3 在指令視窗運作“a=25.36”,回車後顯示什麼?工作空間中變量a是怎樣的存在?截圖說明。再在指令視窗運作“format hex;a”回車後顯示什麼?工作空間中變量a是怎樣的存在?截圖說明。分析原因。Matlab預設的輸出格式是什麼?

答案:

注意:format指令隻影響資料輸出格式,而不影響資料的計算和存儲。Matlab預設的輸出格式是format short。

2.4 在指令視窗用直接輸入法輸入矩陣“a=[1,2,3,4,5;9,8,7,6,5]”和“b=[1,2,3;4,5,6]”後,能不能利用已建好的a矩陣和b矩陣建立更大的矩陣?比如c=[a,b;b,a]?截圖說明。能不能利用已建好的a矩陣和c矩陣建立更大的矩陣?比如d=[a,c;c,a]?截圖說明。分析原因。

答案: a=[1,2,3,4,5;9,8,7,6,5],b=[1,2,3;4,5,6]

a =

1     2     3     4     5
 9     8     7     6     5      

b =

1     2     3
 4     5     6      
c=[a,b;b,a]

c =

1     2     3     4     5     1     2     3
 9     8     7     6     5     4     5     6
 1     2     3     1     2     3     4     5
 4     5     6     9     8     7     6     5      

d=[a,c;c,a]

Error using horzcat

CAT arguments dimensions are not consistent.

分析:用已建好的矩陣建立更大的矩陣時需注意行數和列數的維數問題。

2.5 用冒号表達式産生一個行向量a,它的初始值為0, 終止值為2pi,步長為0.1,用工作空間檢視a,它的第一個值是什麼?最後一個值是什麼?截圖說明。用linspace函數産生行向量b,它的初始值為0, 終止值為2pi,元素總數是63,用工作空間檢視a,它的第一個值是什麼?最後一個值是什麼?截圖說明。如果想用這2種方法産生同樣的矢量該怎麼寫指令語句?

答案:

分析:用冒号表達式産生的行向量a第一個值是0,最後一個值是6.2;用linspace函數産生的行向量第一個值為0, 最後一個值是6.2832。如果想用這2種方法産生同樣的矢量,把用冒号表達式産生行向量a的語句改為“ a=0:2pi/62:2pi;”即可。(我補充的linspace最後一個值一定是範圍最大值 冒号表達式最後一個值不一定是範圍最大值 )

2.6 在指令視窗輸入矩陣“a=[1,2,3,4,5;9,8,7,6,5]”,分别通過采用矩陣元素的下标和采用矩陣元素的序号來引用元素,把元素9變成-300,截圖顯示。分析序号(Index)與下标(Subscript )的關系。

答案:

分析:序号(Index)與下标(Subscript )是一一對應的,以m×n矩陣A為例,矩陣元素A(i,j)的序号為(j-1)*m+i。

2.7 100X100的矩陣a,它的第50行30列個元素對應的序号是什麼?它的序号是89的元素對應的下标是什麼?用指令語句給出答案。

答案:100X100的矩陣a,它的第50行30列個元素對應的序号是2950,它的序号是89的元素對應的下标是[89,1]。

2.8 以下變量名正确的有:A、1_23 H5、_e43E、落葉_a

答案:A (以字母開頭,後接字母數字或下劃線)

2.9 在指令視窗運作“x=sqrt(7)-2i”,回車後顯示的結果是?在指令視窗運作“sqrt(7)-2i”,回車後的顯示結果是什麼?在指令視窗運作“sqrt(7)-2i;”,回車後的顯示結果是什麼?

答案:在指令視窗運作“x=sqrt(7)-2i”,回車後顯示的結果是“x =2.6458 - 2.0000i”;在指令視窗運作“sqrt(7)-2i”,回車後顯示的結果是“ans =2.6458 - 2.0000i”;在指令視窗運作“sqrt(7)-2i;”,回車後的結果是什麼也不顯示。

2.10 exp函數中e的值是多少?在指令視窗運作“a=exp(5),b=exp([4 5]),c=exp([1 2i;0 -1])”的結果是什麼?Help一下exp函數,看看當它的自變量分别為标量、矢量、方陣時,結果怎麼計算?當它的自變量分别實數和複數時,結果怎麼計算?

答案:e=2.7183;在指令視窗運作“a=exp(5),b=exp([4 5]),c=exp([1 2i;0 -1])”的結果是a = 148.4132;b = 54.5982 148.4132;c = 2.7183 -0.4161 + 0.9093i

1.0000 0.3679

Y = exp(X) returns the exponential for each element of X. exp operates element-wise on arrays. For complex x + i * y, exp returns the complex exponential ez = ex(cos y + i sin y). Use expm for matrix exponentials.

2.11 在指令視窗運作“a=log(5),b=log10([4 5]),c=log2([1 2i;0 -1])”的結果是什麼?

答案:在指令視窗運作“a=log(5),b=log10([4 5]),c=log2([1 2i;0 -1])”的結果是“a = 1.6094;

b = 0.6021 0.6990;c =

0             1.0000 + 2.2662i
 -Inf                  0 + 4.5324i”。      

2.12 在指令視窗運作“a=pow2(5),b=pow2([4 5]),c=pow2([1 2i;0 -1])”的結果是什麼?

答案:在指令視窗運作“a=pow2(5),b=pow2([4 5]),c=pow2([1 2i;0 -1])”的結果是“a = 32;b = 16 32;c = 2.0000 0.1835 + 0.9830i

1.0000 0.5000 ”。

2.13 在指令視窗運作“a=abs(-4.5),b=abs(6+6i)”的結果是什麼?

答案:在指令視窗運作“a=abs(-4.5),b=abs(6+6i)”的結果是“a = 4.5000;b =8.4853”。

2.14 在指令視窗運作

“a=rem(0,3),b=rem(1,3),c=rem(2,3),d=rem(3,3),e=rem(4,3),f=rem(10000,3)”的結果是什麼?

答案:在指令視窗運作

“a=rem(0,3),b=rem(1,3),c=rem(2,3),d=rem(3,3),e=rem(4,3),f=rem(10000,3)”的結果是“a = 0;b = 1;c = 2;d = 0;e = 1;f = 1;”。

2.15 fix、floor、ceil、round都是取整函數,他們有什麼差別?在指令視窗運作“fix([-pi/2, -1 .4,0,1.4,pi/2]) ;floor([-pi/2, -1 .4,0,1.4,pi/2]) ;ceil([-pi/2, -1 .4,0,1.4,pi/2]) ;round([-pi/2, -1 .4,0,1.4,pi/2]) ”,結果是什麼?

答案:fix是向0取整、floor是向負無窮取整、ceil向正無窮取整、round是四舍五入取整;在指令視窗運作“fix([-pi/2, -1 .4,0,1.4,pi/2]) ;floor([-pi/2, -1 .4,0,1.4,pi/2]) ;ceil([-pi/2, -1 .4,0,1.4,pi/2]) ;round([-pi/2, -1 .4,0,1.4,pi/2]) ”,結果是

-1 -1 0 0 1 1

-2 -1 0 0 1 1

-1 -1 1 0 2 2

-2 -1 0 0 1 2

2.16 在指令視窗運作”[1 2 ; 3 4]+[-5 6; 7 8]”的結果是什麼?在指令視窗運作”[1 2 ; 3 4]-[-5 6; 7 8]”的結果是什麼?在指令視窗運作”[1 2 0 ; 3 4 5]+[-5 6; 7 8]”的結果是什麼?

答案:

2.17 在指令視窗運作”[1 2 ; 3 4][-5 6; 7 8]”的結果是什麼?在指令視窗運作”[1 2 0 ; 3 4 5]’+[-5 6; 7 8]”的結果是什麼?在指令視窗運作”[1 2 0 ; 3 4 5][-5 6; 7 8]”的結果是什麼?

答案:

2.18 在指令視窗運作”a=2/8,b=8\2”的結果是什麼?

在指令視窗運作”[1 2 ; 3 4]/[-5 6; 7 8]”的結果是什麼?

答案:

2.19在指令視窗輸入“P=rem([0,2,3,5000],3)==0”的結果是什麼?

第三章作業

3.1 産生一個100X3的全零矩陣a,要求它在指令視窗不顯示的語句是什麼?産生一個100列的全1行矢量b,要求它在指令視窗不顯示的語句是什麼?産生一個4X3的機關矩陣c,要求它在指令視窗顯示的語句是什麼?顯示結果截圖。

答案:産生一個100X3的全零矩陣a,要求它在指令視窗不顯示的語句是“a=zeros(100,3);”産生一個100列的全1行矢量b,要求它在指令視窗不顯示的語句是“ b=ones(1,100);”,産生一個4X3的機關矩陣c,要求它在指令視窗顯示的語句是“ c=eye(4,3)”,顯示結果是c =

1     0     0
 0     1     0
 0     0     1
 0     0     0。      

3.2 産生0~1區間均勻分布的4階随機矩陣a,要求它在指令視窗顯示的語句是什麼?顯示結果截圖,用上鍵重新調用這條語句,顯示結果截圖,兩次運作結果一樣嗎?為什麼?

答案:産生0~1區間均勻分布的4階随機矩陣a,要求它在指令視窗顯示的語句是“ a=rand(4)”,顯示結果

a =

0.9575 0.9572 0.4218 0.6557

0.9649 0.4854 0.9157 0.0357

0.1576 0.8003 0.7922 0.8491

0.9706 0.1419 0.9595 0.9340 ,用上鍵重新調用這條語句,顯示結果

a =

0.6787 0.6555 0.2769 0.6948

0.7577 0.1712 0.0462 0.3171

0.7431 0.7060 0.0971 0.9502

0.3922 0.0318 0.8235 0.0344 ,兩次運作結果不一樣,因為rand産生的是随機矩陣。

3.3 産生-3.4~10區間均勻分布的4X3随機矩陣a,要求它在指令視窗顯示的語句是什麼?顯示結果截圖,産生100~999區間均勻分布的4000X3随機整數矩陣b,要求它在指令視窗不顯示的語句是什麼?取整時采用fix、ceil、round、floor對機率密度的均勻分布有無影響?取整時最好采用哪個函數?

答案:産生在任意[a,b]區間上均勻分布的随機數,隻需用yi=a+(b-a)*rand(nxm),是以産生-3.4~10區間均勻分布的4X3随機矩陣a,要求它在指令視窗顯示的語句是 “a=-3.4+(10+3.4)rand(4,3)”,顯示結果截圖a =

5.3783 9.4606 6.6670

-1.2210 1.1612 0.0183

-1.8054 4.4426 3.3798

3.2781 -0.4009 5.9676 ,産生100~999區間均勻分布的4000X3随機整數矩陣b,要求它在指令視窗不顯示的語句是“b=round(100+899rand(4,3));”取整時采用fix、ceil、round、floor對機率密度的均勻分布有影響,取整時采用round對機率密度的均勻分布沒有影響。取整時最好采用round函數。

3.4 産生均值為0、方差為1的5階正态分布随機矩陣a,要求它在指令視窗顯示的語句是什麼?顯示結果截圖,用上鍵重新調用這條語句,顯示結果截圖,兩次運作結果一樣嗎?為什麼?産生的随機矩陣元素為0的機率大嗎?産生的随機矩陣元素趨近于0的機率大嗎?

答案:産生均值為0、方差為1的5階正态分布随機矩陣a,要求它在指令視窗顯示的語句是“a=randn(5)”,顯示結果a =

-0.2437 0.7223 -1.9330 0.1001 0.7394

0.2157 2.5855 -0.4390 -0.5445 1.7119

-1.1658 -0.6669 -1.7947 0.3035 -0.1941

-1.1480 0.1873 0.8404 -0.6003 -2.1384

0.1049 -0.0825 -0.8880 0.4900 -0.8396 ,用上鍵重新調用這條語句,顯示結果“a =

1.3546 -1.9609 1.3790 -0.2779 -1.5771

-1.0722 -0.1977 -1.0582 0.7015 0.5080

0.9610 -1.2078 -0.4686 -2.0518 0.2820

0.1240 2.9080 -0.2725 -0.3538 0.0335

1.4367 0.8252 1.0984 -0.8236 -1.3337” ,兩次運作結果不一樣,因為randn産生的是随機矩陣。産生的随機矩陣元素為0的機率不大,産生的随機矩陣元素趨近于0的機率很大。

3.5 産生均值為0.6、方差為0.1的4x6正态分布随機矩陣a,要求它在指令視窗顯示的語句是什麼?顯示結果截圖。産生均值為-0.6、方差為5、正态分布的4000X3随機整數矩陣b,要求它在指令視窗不顯示的語句是什麼?取整時采用fix、ceil、round、floor對機率密度的正态分布有無影響?取整時最好采用哪個函數?

答案:産生均值為μ、方差為σ2的随機數,可用yi=μ+σrandn(nxm),是以産生均值為0.6、方差為0.1的4x6正态分布随機矩陣a,要求它在指令視窗顯示的語句是“ a=0.6+sqrt(0.1)*randn(4,6)”,顯示結果a =

0.2458 0.2025 0.1788 0.7238 0.4494 0.3316

1.3988 0.3263 -0.1368 0.7428 0.8726 0.4941

1.1235 0.5442 0.1418 0.5588 0.1694 0.7748

0.6973 0.8503 0.7055 0.6581 0.7439 0.9286。産生均值為-0.6、方差為5、正态分布的4000X3随機整數矩陣b,要求它在指令視窗不顯示的語句是“b=round(-0.6+sqrt(5)*randn(4000,3));”,取整時采用fix、ceil、round、floor對機率密度的正态分布有影響,取整時最好采用round函數。

3.6 産生3階魔方矩陣a,要求它在指令視窗顯示的語句是什麼?計算它的每行、每列及兩條對角線上的元素和是多少?語句怎麼寫?用上鍵重新調用這條語句,兩次運作結果一樣嗎?

答案:産生3階魔方矩陣a,要求它在指令視窗顯示的語句是“ a=magic(3)”,顯示結果截圖。顯示結果a =

8 1 6

3 5 7

4 9 2 ,它的每行、每列及兩條對角線上的元素和是15,語句“b=a.’;sum_h=sum(b);sum_l=sum(a);sum_d1=a(1,1)+a(2,2)+a(3,3);sum_d2=a(3,1)+a(2,2)+a(1,3);”,用上鍵重新調用這條語句,兩次運作結果一樣。

3.7 産生2階魔方矩陣a,計算它的每行、每列及兩條對角線上的元素和是多少?語句怎麼寫?顯示結果截圖。分析結果。

答案:産生2階魔方矩陣a,計算它的每行、每列及兩條對角線上的元素和語句是“ a=magic(2),b=a.’,sum_h=sum(b),sum_l=sum(a),sum_d1=a(1,1)+a(2,2),sum_d2=a(2,1)+a(1,2)”,顯示結果a = 1 3

4 2 ,b = 1 4

3 2,sum_h = 4 6,sum_l = 5 5,sum_d1 = 3,sum_d2 = 7。

結果分析:不符合魔方矩陣其每行、每列及兩條對角線上的元素和都相等的性質,magic函數的要求是n>2。

3.8 将80~95等16個數填入一個4行4列的表格中,要求它的每行每列及對角線的和相等。計算它的每行每列及對角線的和。顯示結果截圖。

答案:将80~95等16個數填入一個4行4列的表格中的語句是“a=79+magic(4)”,顯示結果a = 95 81 82 92s

84 90 89 87

88 86 85 91

83 93 94 80 ,計算它的每行每列及對角線的和的語句是“b=a.’;sum_h=sum(b),sum_l=sum(a),sum_d1=a(1,1)+a(2,2)+a(3,3)+a(4,4)”,顯示結果“sum_h =

350 350 350 350,sum_l = 350 350 350 350,sum_d1 = 350”。

3.9 指定一個向量a=[-3,40,6,2,4],生成以向量a為基礎向量的範得蒙矩陣的語句是什麼?顯示結果截圖。指定一個向量a=[-3,40,0.6,2,4],生成以向量a為基礎向量的範得蒙矩陣的語句是什麼?顯示結果截圖。分析結果。

答案:指定一個向量a=[-3,40,6,2,4],生成以向量a為基礎向量的範得蒙矩陣的語句是“ a=[-3,40,6,2,4]; A=vander(a.’)”,顯示結果A =

81 -27 9 -3 1

2560000 64000 1600 40 1

1296 216 36 6 1

16 8 4 2 1

256 64 16 4 1。指定一個向量a=[-3,40,0.6,2,4],生成以向量a為基礎向量的範得蒙矩陣的語句是“a=[-3,40,0.6,2,4]; A=vander(a)”顯示結果A = 1.0e+06 *

0.0001 -0.0000 0.0000 -0.0000 0.0000

2.5600 0.0640 0.0016 0.0000 0.0000

0.0000 0.0000 0.0000 0.0000 0.0000

0.0000 0.0000 0.0000 0.0000 0.0000

0.0003 0.0001 0.0000 0.0000 0.0000。

結果分析:生成範得蒙矩陣的vander函數并不是對任意指定向量都可以實作的。

3.10 求4階希爾伯特矩陣H及其逆矩陣h的語句是什麼?顯示結果截圖。改變4階希爾伯特矩陣H第四行第四列的值為1/7.0005,使用一般方法求它的逆矩陣a,語句是什麼?顯示結果截圖。(rat:近似有理數)

答案:求4階希爾伯特矩陣及其逆矩陣的語句是“ format rat;H=hilb(4),h=invhilb(4)”,顯示結果H =

16 -120 240 -140

-120 1200 -2700 1680

240 -2700 6480 -4200

-140 1680 -4200 2800 ,

h =

16 -120 240 -140

-120 1200 -2700 1680

240 -2700 6480 -4200

-140 1680 -4200 2800 。改變4階希爾伯特矩陣H第四行第四列的值為1/7.0005,使用一般方法求它的逆矩陣a,語句是“ H(4,4)=1/7.0005, a=inv(H)”,顯示結果H =

1 1/2 1/3 1/4

1/2 1/3 1/4 1/5

1/3 1/4 1/5 1/6

1/4 1/5 1/6 2000/14001 ,

a =

551/34 -39313/321 30772/125 -28247/196

-39313/321 38119/31 -24967/9 46694/27

30772/125 -24967/9 46657/7 -108088/25

-28247/196 46694/27 -108088/25 74941/26 。

3.11 求多項式的x3-7x+6的伴随矩陣a的語句是什麼?顯示結果截圖。求a的特征根。求多項式的4x3-17x2+6x-56的伴随矩陣b的語句是什麼?顯示結果截圖。求b的特征根。分析多項式的系數向量和伴随矩陣的關系。

答案:求多項式的x3-7x+6的伴随矩陣a的語句是“ p=[1,0,-7,6];a=compan§”,顯示結果a = 0 7 -6

1 0 0

0 1 0 ,求a的特征根的語句是“ A=eig(a)”,顯示結果A =

-3.0000

2.0000

1.0000,求多項式的4x3-17x2+6x-56的伴随矩陣b的語句是“ p=[4,-17,6,-56];b=compan§”,顯示結果b =

4.2500 -1.5000 14.0000

1.0000 0 0

0 1.0000 0 ,求b的特征根的語句是“ B=eig(b)”,顯示結果B =

4.5881

-0.1691 + 1.7386i

-0.1691 - 1.7386i 。

結果分析:多項式的系數向量p和伴随矩陣a的關系為:伴随矩陣a的第一行元素為-p(2:n)/p(1),主對角線上下方的元素均為1,其餘元素為0.伴随矩陣a的特征值是多項式的根。

3.12 提取矩陣a=[1 2 3 ; 4 5 6 ; 7 8 9; -1 3 5]的對角線元素,指令視窗的語句怎麼寫?顯示結果截圖。用提取的對角線元素向量b構造對角矩陣c,指令視窗的語句怎麼寫?顯示結果截圖。

答案:提取矩陣a=[1 2 3 ; 4 5 6 ; 7 8 9; -1 3 5]的對角線元素,指令視窗的語句是“a=[1 2 3 ; 4 5 6 ; 7 8 9; -1 3 5], b=diag(a)”,顯示結果a =

1 2 3

4 5 6

7 8 9

-1 3 5 ,b =[ 1 5 9]’;用提取的對角線元素向量b構造對角矩陣c,指令視窗的語句是“ c=diag(b)”,顯示結果c =

1 0 0

0 5 0

0 0 9 。

3.13 先建立5×5矩陣A,A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];然後将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。指令視窗的語句怎麼寫?顯示結果截圖。

答案:先建立5×5矩陣A,A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];然後将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。指令視窗的語句為“A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19],D=diag(1:5),DA”,顯示結果A =

17 0 1 0 15

23 5 7 14 16

4 0 13 0 22

10 12 19 21 3

11 18 25 2 19

D =

1 0 0 0 0

0 2 0 0 0

0 0 3 0 0

0 0 0 4 0

0 0 0 0 5

ans =

17 0 1 0 15

46 10 14 28 32

12 0 39 0 66

40 48 76 84 12

55 90 125 10 95。

3.14 先建立5×5矩陣A,A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];然後将A的第一列元素乘以1,第二列乘以2,…,第五列乘以5。指令視窗的語句怎麼寫?顯示結果截圖。

答案:先建立5×5矩陣A,A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19];然後将A的第一列元素乘以1,第二列乘以2,…,第五列乘以5。指令視窗的語句為“A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19],D=diag(1:5),AD”,顯示結果A =

17 0 1 0 15

23 5 7 14 16

4 0 13 0 22

10 12 19 21 3

11 18 25 2 19

D =

1 0 0 0 0

0 2 0 0 0

0 0 3 0 0

0 0 0 4 0

0 0 0 0 5

ans =

17 0 3 0 75

23 10 21 56 80

4 0 39 0 110

10 24 57 84 15

11 36 75 8 95 。

讨論:指令視窗的語句

“A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19],D=diag(1:5),DA”中DA表示用D左乘A,對A的每行乘以一個指定常數,如果改成AD會怎麼樣?

結論:DA表示用D左乘A,對A的每行乘以一個指定常數,A*D表示用D右乘A,對A的每列乘以一個指定常數。

3.15 求矩陣A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19]的上三角陣和下三角陣,指令視窗的語句怎麼寫?顯示結果截圖。

答案:求矩陣A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19]的上三角陣和下三角陣,指令視窗的語句為

“ A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;11,18,25,2,19],a=triu(A),b=tril(A)”,顯示結果A =

17 0 1 0 15

23 5 7 14 16

4 0 13 0 22

10 12 19 21 3

11 18 25 2 19

a =

17 0 1 0 15

0 5 7 14 16

0 0 13 0 22

0 0 0 21 3

0 0 0 0 19

b =

17 0 0 0 0

23 5 0 0 0

4 0 13 0 0

10 12 19 21 0

11 18 25 2 19 。

3.16 産生一個0~1之間均勻分布的3階随機矩陣a,并求它的轉置矩陣b和共轭轉置矩陣c。指令視窗的語句怎麼寫?顯示結果截圖。把a的第一行第一列元素置為“1+i”,再求它的轉置矩陣b和共轭轉置矩陣c。指令視窗的語句怎麼寫?顯示結果截圖。

答案:産生一個0~1之間均勻分布的3階随機矩陣a,并求它的轉置矩陣b和共轭轉置矩陣c。指令視窗的語句為“ a=rand(3),b=a.’,c=a’”,顯示結果

a =

0.3243 0.4460 0.2129

0.6288 0.2314 0.2718

0.7517 0.5677 0.1759

b =

0.3243 0.6288 0.7517

0.4460 0.2314 0.5677

0.2129 0.2718 0.1759

c =

0.3243 0.6288 0.7517

0.4460 0.2314 0.5677

0.2129 0.2718 0.1759。把a的第一行第一列元素置為“1+i”,再求它的轉置矩陣b和共轭轉置矩陣c。指令視窗的語句為“ a(1,1)=1+i,b=a.’,c=a’”,顯示結果

a =

1.0000 + 1.0000i 0.4460 0.2129

0.6288 0.2314 0.2718

0.7517 0.5677 0.1759

b =

1.0000 + 1.0000i 0.6288 0.7517

0.4460 0.2314 0.5677

0.2129 0.2718 0.1759

c =

1.0000 - 1.0000i 0.6288 0.7517

0.4460 0.2314 0.5677

0.2129 0.2718 0.1759 。

3.17 産生一個-1~1之間均勻分布的3階随機矩陣a,利用函數rot90(A,k)将矩陣A旋轉90º的k倍,k分别為1、2、3。指令視窗的語句怎麼寫?顯示結果截圖。

答案:産生一個-1~1之間均勻分布的3階随機矩陣a,利用函數rot90(a,k)将矩陣a旋轉90º的k倍,k分别為1、2、3。指令視窗的語句為

“a=-1+2rand(3),b1=rot90(a),b2=rot90(a,2),b3=rot90(a,3)”,顯示結果

a =

0.5512 0.4641 0.3773

-0.8363 0.3065 -0.7784

0.0975 0.3061 -0.2843

b1 =

0.3773 -0.7784 -0.2843

0.4641 0.3065 0.3061

0.5512 -0.8363 0.0975

b2 =

-0.2843 0.3061 0.0975

-0.7784 0.3065 -0.8363

0.3773 0.4641 0.5512

b3 =

0.0975 -0.8363 0.5512

0.3061 0.3065 0.4641

-0.2843 -0.7784 0.3773 。

3.18 産生一個-1~1之間均勻分布的3階随機矩陣a,并求它的逆矩陣b。指令視窗的語句怎麼寫?顯示結果截圖。産生矩陣c=[1 0 3 ;4 0 0; -5 0 6],并求它的逆矩陣d。指令視窗的語句怎麼寫?顯示結果截圖。分析結果。

答案:産生一個-1~1之間均勻分布的3階随機矩陣a,并求它的逆矩陣。指令視窗的語句為“ a=-1+2rand(3),b=inv(a)”,顯示結果

a = 0.2019 -0.7655 0.7534

-0.3042 -0.1681 -0.2936

0.6241 0.5896 0.6301

b = -1.3710 -18.9220 -7.1763

-0.1725 7.0048 3.4697

1.5193 12.1875 5.4484 ,産生矩陣c=[1 0 3 ;4 0 0; -5 0 6],并求它的逆矩陣d。指令視窗的語句“c=[1 0 3 ;4 0 0; -5 0 6],d=inv©”,顯示結果c =

1 0 3

4 0 0

-5 0 6

Warning: Matrix is singular to working precision.

d =

Inf Inf Inf

Inf Inf Inf

Inf Inf Inf 。

結果分析:如果矩陣不是一個方陣,或者是一個非滿秩的方陣時,矩陣沒有逆矩陣。

3.19 産生矩陣c=[1 0 3 ;4 0 0; -5 0 6],并求它的僞逆矩陣d。指令視窗的語句怎麼寫?顯示結果截圖。分析結果。

答案:産生矩陣c=[1 0 3 ;4 0 0; -5 0 6],并求它的僞逆矩陣d。指令視窗的語句“ c=[1 0 3 ;4 0 0; -5 0 6],d=pinv©”,顯示結果c =

1 0 3

4 0 0

-5 0 6

d =

0.1085 0.1550 -0.0543

0 0 0

0.1318 0.0930 0.1008 。

3.20 用求逆矩陣的方法解線性方程組。指令視窗的語句怎麼寫?顯示結果截圖。用左除運算符“\”求解此線性代數方程組,指令視窗的語句怎麼寫?顯示結果截圖。如果用右除運算符“/”代替左除運算符“\”,會出現什麼情況?

答案:用求逆矩陣的方法解線性方程組指令視窗的語句“A=[1,2,3;1,4,9;1,8,27],b=[5,-2,6]’,x=inv(A)*b”,顯示結果

A = 1 2 3

1 4 9

1 8 27

b = 5

-2

6

x = 23.0000

-14.5000

3.6667 ,用左除運算符“\”求解此線性代數方程組,指令視窗的語句“ A=[1,2,3;1,4,9;1,8,27],b=[5,-2,6]’,x=A\b”,顯示結果

A = 1 2 3

1 4 9

1 8 27

b = 5

-2

6

x = 23.0000

-14.5000

3.6667 。如果用右除運算符“/”代替左除運算符“\”,會出現報錯“Error using /

Matrix dimensions must agree.”。

分析結果:A\B等效于A的逆左乘B矩陣,也就是inv(A)B,而B/A等效于A矩陣的逆右乘B矩陣,也就是Binv(A)。

3.21 求方陣A=[1,2,3;1,4,9;1,8,27]所對應的行列式的值、A的秩和迹,指令視窗的語句怎麼寫?顯示結果截圖。

答案:求方陣A=[1,2,3;1,4,9;1,8,27]所對應的行列式的值、A的秩和迹,指令視窗的語句“A=[1,2,3;1,4,9;1,8,27],b=det(A), c=rank(A),d=trace(A)”,顯示結果

A = 1 2 3

1 4 9

1 8 27 ,b = 12 , c = 3,d = 32。

3.22 求向量V=[1,-4,3.6]的2—範數、1—範數和∞—範數;求矩陣A=[1,2,3;1,4,9;1,8,27;-3,0.4,0]的2—範數、1—範數和∞—範數;指令視窗的語句怎麼寫?顯示結果截圖。

答案:求向量V=[1,-4,3.6]的2—範數、1—範數和∞—範數,指令視窗的語句“V=[1,-4,3.6],v1=norm(V),v2=norm(V,1),v3=norm(V,inf)”顯示結果

V = 1.0000 -4.0000 3.6000,v1 =5.4736,v2 = 8.6000,v3 = 4,求矩陣A=[1,2,3;1,4,9;1,8,27;-3,0.4,0]的2—範數、1—範數和∞—範數,指令視窗的語句

“ A=[1,2,3;1,4,9;1,8,27;-3,0.4,0],a1=norm(A),a2=norm(A,1),a3=norm(A,inf)”,顯示結果

A = 1.0000 2.0000 3.0000

1.0000 4.0000 9.0000

1.0000 8.0000 27.0000

-3.0000 0.4000 0 ,a1 = 30.0404,a2 = 39,a3 = 36。

3.23 求矩陣A=[1,2,3;1,4,9;1,8,27]的特征值和特征向量。指令視窗的語句怎麼寫?顯示結果截圖。

答案:求矩陣A=[1,2,3;1,4,9;1,8,27]的特征值和特征向量。指令視窗的語句“A=[1,2,3;1,4,9;1,8,27],[V,D]=eig(A)”,顯示結果

A = 1 2 3

1 4 9

1 8 27 ,V = -0.1198 -0.8484 -0.7163

-0.3295 0.5150 -0.6563

-0.9365 -0.1222 0.2371 ,

D = 29.9428 0 0

0 0.2179 0

0 0 1.8393 。

3.24 用求特征值的方法解方程3x5-7x4+5x2+2x-18=0。指令視窗的語句怎麼寫?顯示結果截圖。用直接求多項式p的零點的方法解方程3x5-7x4+5x2+2x-18=0。指令視窗的語句怎麼寫?顯示結果截圖。

答案:用求特征值的方法解方程3x5-7x4+5x2+2x-18=0。指令視窗的語句

“ p=[3,-7,0,5,2,-18],A=compan§,x1=eig(A) ”,顯示結果p = 3 -7 0 5 2 -18,

A = 2.3333 0 -1.6667 -0.6667 6.0000

1.0000 0 0 0 0

0 1.0000 0 0 0

0 0 1.0000 0 0

0 0 0 1.0000 0 ,

x1 = 2.1837

1.0000 + 1.0000i

1.0000 - 1.0000i

-0.9252 + 0.7197i

-0.9252 - 0.7197i 。用直接求多項式p的零點的方法解方程3x5-7x4+5x2+2x-18=0。指令視窗的語句“p=[3,-7,0,5,2,-18],x2=roots§ ”,顯示結果p = 3 -7 0 5 2 -18,

x2 = 2.1837

1.0000 + 1.0000i

1.0000 - 1.0000i

-0.9252 + 0.7197i

-0.9252 - 0.7197i 。

3.25 産生一個全0的100階矩陣a,置a的50行60列元素為5,将矩陣a轉化為稀疏存儲方式的矩陣A。指令視窗的語句怎麼寫?顯示workspace的結果截圖。

答案:産生一個全0的100階矩陣a,置a的50行60列元素為5,将矩陣a轉化為稀疏存儲方式的矩陣A。指令視窗的語句“ a=zeros(100);a(50,60)=5;A=sparse(a);”,workspace的結果 。

第四章作業

4.1 編寫腳本檔案求一進制二次方程ax2 +bx+c=0的根。a、b、c用input函數輸入,根用disp函數輸出。

答案:編寫的腳本檔案如下:a=input(‘a=?’);b=input(‘b=?’);c=input(‘c=?’);

d=bb-4ac;x=[(-b+sqrt(d))/(2a),(-b-sqrt(d))/(2a)];

disp([‘x1=’,num2str(x(1)),’,x2=’,num2str(x(2))]);(或者disp(x);)

讨論:語句disp([‘x1=’,num2str(x(1)),’,x2=’,num2str(x(2))]);和語句disp(x);有何差別?

結論:語句1輸出項為字元串,語句2輸出為矩陣。

4.2 編寫腳本檔案計算分段函數

,x用input函數輸入;編寫函數檔案計算此分段函數,x為輸入形參,y為輸出形參。

答案:編寫的腳本檔案如下:

x=input(‘請輸入x的值:’);

if x==10

y=cos(x+1)+sqrt(xx+1);

else

y=xsqrt(x+sqrt(x));

end

編寫的函數檔案如下,存為lyl_4_3_2:

function y=fenduan(x)

if x==10

y=cos(x+1)+sqrt(xx+1);

else

y=xsqrt(x+sqrt(x));

End

讨論:函數檔案名可以和存盤的檔案名不一樣嗎?

結論:可以。

4.3 某商場對顧客所購買的商品實行打折銷售,标準如下(商品價格用price來表示):

price<200 沒有折扣

200≤price<500 3%折扣

500≤price<1000 5%折扣

1000≤price<2500 8%折扣

2500≤price<5000 10%折扣

5000≤price 14%折扣

輸入所售商品的價格,求其實際銷售價格。分别編寫腳本檔案和函數檔案實作。

答案:編寫的腳本檔案如下:

price=input(‘請輸入商品價格’);

switch fix(price/100)

case {0,1} %價格小于200

rate=0;

case {2,3,4} %價格大于等于200但小于500

rate=3/100;

case num2cell(5:9) %價格大于等于500但小于1000

rate=5/100;

case num2cell(10:24) %價格大于等于1000但小于2500

rate=8/100;

case num2cell(25:49) %價格大于等于2500但小于5000

rate=10/100;

otherwise %價格大于等于5000

rate=14/100;

end

price=price(1-rate) %輸出商品實際銷售價格

編寫的函數檔案如下:function [price,rate ] = prace_rate( price )

switch fix(price/100)

case {0,1} %價格小于200

rate=0;

case {2,3,4} %價格大于等于200但小于500

rate=3/100;

case num2cell(5:9) %價格大于等于500但小于1000

rate=5/100;

case num2cell(10:24) %價格大于等于1000但小于2500

rate=8/100;

case num2cell(25:49) %價格大于等于2500但小于5000

rate=10/100;

otherwise %價格大于等于5000

rate=14/100;

end

price=price*(1-rate); %輸出商品實際銷售價格

4.4 編寫函數檔案實作矩陣乘法運算要求兩矩陣的維數相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉去求兩矩陣的點乘。代入A=[ 1,2, 3;4 ,5, 6],B=[1,2;3,4],調用編寫的函數檔案lyl_4_6_2.m,給出C1=lyl_4_6_2(A,B)和C2=lyl_4_6_2(A’,B)的顯示結果。

答案:編寫的函數檔案如下:

function C=chengfa(A,B)

try

C=A*B;

catch

C=A.B;

End

在指令視窗輸入“A=[ 1,2, 3;4 ,5, 6];B=[1,2;3,4];C1=lyl_4_6_2(A,B)”,顯示結果

Error using .

Matrix dimensions must agree.

Error in lyl_4_6_2 (line 5)

C=A.B;在指令視窗輸入“ A=[ 1,2, 3;4 ,5, 6];B=[1,2;3,4];C2=lyl_4_6_2(A’,B)”,顯示結果

C2 =13 18

17 24

21 30 。

4.5 一個三位整數各位數字的立方和等于該數本身則稱該數為水仙花數。輸出全部水仙花數。編寫腳本檔案實作。

答案:編寫的腳本檔案如下:

for m=100:999

m1=fix(m/100); %求m的百位數字

m2=rem(fix(m/10),10); %求m的十位數字

m3=rem(m,10); %求m的個位數字

if m==m1m1m1+m2m2m2+m3m3*m3

disp(m)

end

end

4.6 已知,當n=100時,求y的值。編寫腳本檔案實作。如果不采用循環語句,該怎麼實作?

答案:編寫的腳本檔案如下:y=0;n=100;

for i=1:n

y=y+1/i/i;

end

Y ,如果不采用循環語句,可以這樣實作:n=100;

i=1:n;

f=1./i.^2;

y=sum(f) 。

4.7 寫出下列程式的執行結果。s=0;

a=[12,13,14;15,16,17;18,19,20;21,22,23];

for k=a

s=s+k;

end

disp(s’);

答案:程式的執行結果為“39 48 57 66”。

分析結果:for語句更一般的格式為:

for 循環變量=矩陣表達式

循環體語句

end

執行過程是依次将矩陣的各列元素賦給循環變量,然後執行循環體語句,直至各列元素處理完畢。

4.8 從鍵盤輸入若幹個數,當輸入0時結束輸入,求這些數的平均值和它們之和。編寫腳本檔案實作。

答案:編寫的腳本檔案如下:sum=0;

n=0;

val=input(‘Enter a number (end in 0):’);

while (val~=0)

sum=sum+val;

n=n+1;

val=input(‘Enter a number (end in 0):’);

end

if (n > 0)

sum

mean=sum/n

end

4.9 求[100,200]之間第一個能被21整除的整數。編寫腳本檔案實作。

答案:編寫的腳本檔案如下:for n=100:200

if rem(n,21)~=0

continue

end

break

end

n

4.10 利用函數的遞歸調用,求n!編寫函數檔案實作。

答案:編寫的函數檔案如下:function f=factor(n)

if n<=1

f=1;

else

f=factor(n-1)*n; %遞歸調用求(n-1)!

End

第五章作業

5.1 在0≤X≤2區間内,繪制曲線y=2e-0.5xsin(2πx)。程式如下:

x=0:pi/100:2pi;

y=2exp(-0.5x).sin(2pix);

plot(x,y),要想使所繪圖形用雙劃線、星号标記,該如何修改程式?

答案:要想使所繪圖形用星号标記,把plot(x,y)改為plot(x,y,’–’)即可。

5.2 用不同線型和顔色在同一坐标内繪制曲線y=2e-0.5xsin(2πx)及其包絡線。程式如下: x=(0:pi/100:2pi)’;

y1=2exp(-0.5x)[1,-1];

y2=2exp(-0.5x).sin(2pix);

x1=(0:12)/2;

y3=2exp(-0.5x1).sin(2pix1);

plot(x,y1,‘g:’,x,y2,‘b–’,x1,y3,‘rp’);請問y1的維數是多少?顔色和線型是什麼?Y2的維數是多少?顔色和線型是什麼?y3的維數是多少?顔色和标記符号是什麼?

答案:y1的維數是201x2,顔色是綠色,線型是虛線。Y2的維數是201x1,顔色是藍色,線型是雙劃線。y3的維數是1x13,顔色是紅色,标記符号是五角星符。

5.3 用不同标度在同一坐标内繪制曲線y1=e-0.5xsin(2πx)及曲線y2=sin(x)。要求x軸的坐标從[0,2pi],y1軸的坐标從[-1.5,1.5],程式如下,請把程式補充完整。

x1=0:pi/100:2pi;

x2=0:pi/100:3pi;

y1=exp(-0.5x1).sin(2pix1);

y2= sin(x2);

plotyy(x1,y1,x2,y2);

答案:在程式的最後面加上語句:“axis([0,2pi,-1.5,1.5])”。

5.4 在一個圖形視窗中以子圖形式同時繪制正弦、餘弦、正切、餘切曲線。程式如下:

x=linspace(0,2pi,60); 2

y=sin(x);z=cos(x);

t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); 1

subplot(2,2,1);

plot(x,y);title(‘sin(x)’);axis ([0,2pi,-1,1]);

subplot(2,2,2);

plot(x,z);title(‘cos(x)’);axis ([0,2pi,–1,1]);

subplot(2,2,3);

plot(x,t);title(‘tangent(x)’);axis ([0,2pi,-40,40]);

subplot(2,2,4);

plot(x,ct);title(‘cotangent(x)’);axis ([0,2pi,-40,40]);請問:語句1為什麼要+eps?如果語句2改為x=linspace(0,2pi,6000); 語句1改為t=sin(x)./cos(x); ct=cos(x)./sin(x); 圖形會出現什麼變化?截圖對比。

答案:語句1+eps是為了避免除以0,如果語句2改為x=linspace(0,2pi,6000); 語句1改為t=sin(x)./cos(x); ct=cos(x)./sin(x); 圖形會出現變化,

5.5 要削掉正弦波頂部或底部大于0.5的部分,可使用下面的程式:

x=0:pi/10:4*pi;

y=sin(x);

i=find(abs(y)>0.5); 1

x(i)=NaN;

plot(x,y);如果想削掉正弦波頂部或底部小于0.15的部分,該怎麼修改程式?

答案:如果想削掉正弦波頂部或底部小于0.15的部分,把語句1修改為i=find(abs(y)<0.15);即可。

第六章作業

6.1 求向量x=[-43,72,9,16,23,47]的最大值及該元素的位置、最小值及該元素的位置;求矩陣A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]的最大值、最小值;指令視窗語句怎麼寫?顯示結果截圖。

答案:求向量x=[-43,72,9,16,23,47]的最大值及該元素的位置、最小值及該元素的位置指令視窗語句為“x=[-43,72,9,16,23,47],[x_max,k1]=max(x),[x_min,k2]=min(x)”;顯示結果

x = -43 72 9 16 23 47,x_max = 72,k1 = 2,x_min = -43,k2 = 1。求矩陣A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]的最大值、最小值指令視窗語句為

“A=[13,-56,78;25,63,-235;78,25,563;1,0,-1],a_max=max(max(A)),a_min=min(min(A))”,顯示結果A = 13 -56 78

25 63 -235

78 25 563

1 0 -1 ,a_max = 563,a_min = -235 。

6.2 求矩陣A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]的每行元素之和和全部元素之和。指令視窗語句怎麼寫?顯示結果截圖。

答案:求矩陣A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]的每行元素之和和全部元素之和。指令視窗語句“A=[13,-56,78;25,63,-235;78,25,563;1,0,-1],S=sum(A,2),D=sum(S)”,顯示結果

A = 13 -56 78

25 63 -235

78 25 563

1 0 -1 ,

S = 35

-147

666

0 ,D = 554 。

6.3 求向量x=[9,-2,5,6,7,12]的平均值和中值。求向量x=[9,-2,5,6,7,12,18]的平均值和中值。指令視窗語句怎麼寫?顯示結果截圖。

答案:求向量x=[9,-2,5,6,7,12]的平均值和中值。指令視窗語句

“x=[9,-2,5,6,7,12],a=mean(x),b=median(x)”,顯示結果x = 9 -2 5 6 7 12,

a = 6.1667,b = 6.5000。求向量x=[9,-2,5,6,7,12,18]的平均值和中值指令視窗語句“x=[9,-2,5,6,7,12,18],a=mean(x),b=median(x)”,顯示結果x = 9 -2 5 6 7 12 18,

a = 7.8571,b = 7.

6.4 求s=1!+2!+…+6!的值。指令視窗語句怎麼寫?顯示結果截圖。

答案:求s=1!+2!+…+6!的值。指令視窗語句“x=cumprod(1:6);s=sum(x)”顯示結果s = 873。

6.5 對矩陣a=[1,-8,5;4,12,6;13,7,-13]做:每行按升序排序、每列按降序排序并将每個元素所在行号送矩陣I。指令視窗語句怎麼寫?顯示結果截圖。

答案:對矩陣a=[1,-8,5;4,12,6;13,7,-13]做:每行按升序排序、每列按降序排序并将每個元素所在行号送矩陣I指令視窗語句“a=[1,-8,5;4,12,6;13,7,-13],b=sort(a,2),[X,I]=sort(a,‘descend’)”,顯示結果a = 1 -8 5

4 12 6

13 7 -13

b = -8 1 5

4 6 12

-13 7 13

X = 13 12 6

4 7 5

1 -8 -13

I = 3 2 2

2 3 1

1 1 3。

6.6 計算(x3-2x2+5x+3)+(6x-1)和(x3-2x2+5x+3)-(2x2-x+3)。指令視窗語句怎麼寫?顯示結果截圖。

答案:計算(x3-2x2+5x+3)+(6x-1)指令視窗語句“a=[1,-2,5,3];b=[0,0,6,-1];c=a+b”,顯示結果

c =1 -2 11 2;計算(x3-2x2+5x+3)-(2x2-x+3)指令視窗語句“a=[1,-2,5,3];b=[0,-2,-1,3];c=a-b”,顯示結果c = 1 0 6 0 。

6.7 求多項式x4+8x3-10與多項式2x2-x+3的乘積。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“a=[1,8,0,0,-10];b=[2,-1,3];C=conv(a,b)”顯示結果C = 2 15 -5 24 -20 10 -30.

6.8 求多項式2x6+15x5-5x4+24x3-20x2+10x-30與x4+8x3-10的商式和餘式。指令視窗語句怎麼寫?顯示結果截圖。

答案:“a=[2 15 -5 24 -20 10 -30],b=[1,8,0,0,-10],[c,d]=deconv(a,b)”,顯示結果

a = 2 15 -5 24 -20 10 -30

b = 1 8 0 0 -10

c = 2 -1 3

d = 0 0 0 0 0 0 0 。

6.9 求多項式x4+8x3-10除以多項式2x2-x+3的結果。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“ a=[1,8,0,0,-10],b=[2,-1,3],[c,d]=deconv(a,b)”,顯示結果

a = 1 8 0 0 -10

b = 2 -1 3

c = 0.5000 4.2500 1.3750

d = 0 0 0 -11.3750 -14.1250 。

6.10 某多項式除以多項式-2x2-10x+3的結果是4x-4,求這個多項式的表達式。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“a=[-2,-10,3],b=[4,-4],c=conv(a,b)”,顯示結果a = -2 -10 3,

b = 4 -4,c = -8 -32 52 -12。

6.11 某多項式除以多項式-2x2-10x+3的商式是13x3-4x 2+5,餘式是4x-4,求這個多項式的表達式。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“a=[-2,-10,3],b=[13,-4,0,5],c=[0,0,0,0,4,-4],d=conv(a,b)+c”,顯示結果

a = -2 -10 3,b = 13 -4 0 5,c = 0 0 0 0 4 -4,

d = -26 -122 79 -22 -46 11 。

6.12 求多項式x4+8x3-10的導函數。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“a=[1,8,0,0,-10],b=polyder(a)”,顯示結果a = 1 8 0 0 -10;

b = 4 24 0 0 。則多項式x4+8x3-10的導函數是4x3+8x2。

6.13 求有理分式的導數。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句“P=1; Q=[1,0,5]; [p,q]=polyder(P,Q)”,顯示結果p = -2 0,

q = 1 0 10 0 25。

6.14 求多項式x4+8x3-10與多項式2x2-x+3乘積的導數。指令視窗語句怎麼寫?結果截圖。

答案:指令視窗語句“P=[1,8,0,0,-10]; Q=[2,-1,3]; p=polyder(P,Q)”,顯示結果p = 12 75 -20 72 -40 10,即多項式x4+8x3-10與多項式2x2-x+3乘積的導數為12x5+75x4-20x3+72x2-40x+10。

6.15 已知多項式x4+8x3-10,分别取x1=1.2和矩陣x2=[-1,1.2,-1.4;2,-1.8,1.6]為自變量,計算該多項式的值。指令視窗語句怎麼寫?顯示結果截圖。

答案:指令視窗語句

“A=[1,8,0,0,-10]; x1=1.2;x2=[-1,1.2,-1.4;2,-1.8,1.6];y1=polyval(A,x1),y2=polyval(A,x2) ”,顯示結果y1 = 5.8976,y2 = -17.0000 5.8976 -28.1104

70.0000 -46.1584 29.3216 。

6.16 已知多項式x4+8x3-10,以矩陣x=[-1,1.2;2,-1.8]為自變量分别用polyval和polyvalm計算該多項式的值。指令視窗語句怎麼寫?顯示結果截圖。分析結果。

答案:指令視窗語句“A=[1,8,0,0,-10]; x=[-1,1.2;2,-1.8];y1=polyval(A,x),y2=polyvalm(A,x)”,顯示結果y1 = -17.0000 5.8976

70.0000 -46.1584,y2 = -60.5840 50.6496

84.4160 -94.3504。

結果分析:設A為方陣,P代表多項式x4+8x3-10,那麼polyvalm(P,A)的含義是:

AAAA+8AAA-10*eye(size(A));而polyval(P,A)的含義是:

A.*A.*A.A+8A.A.A-10ones(size(A))。

6.17 已知:,① 計算f(x)=0 的全部根。② 由方程f(x)=0的根構造一個多項式g(x),并與f(x)進行對比。指令視窗語句怎麼寫?顯示結果截圖。

答案:①指令視窗語句“P=[3,0,4,-5,-7.2,5]; X=roots§”,顯示結果

X = -0.3046 + 1.6217i

-0.3046 - 1.6217i

-1.0066

1.0190

0.5967

②指令視窗語句“G=poly(X)”,顯示結果

G =1.0000 -0.0000 1.3333 -1.6667 -2.4000 1.6667,是以由方程f(x)=0的根構造一個多項式為

P=[3,0,4,-5,-7.2,5];

G =[1.0000 -0.0000 1.3333 -1.6667 -2.4000 1.6667];

x=-100:100;

Z1=polyval(P,x);

z=polyval(G,x);

plot(x,z,’😮’,x,z1,'m-’)

驗證:指令視窗語句“P=[1,0,1.3333,-1.6667,-2.4,1.6667]; X=roots§”

結果分析:不同的多項式可能具有同樣的根。

6.18 某次實驗測得的資料如下表所示,用不同的插值方法計算f([0.461,0.462,0.463,0.464,0.465,0.466,0.467,0.468,0.469,0.471,0.472,0.473,0.474,0.475,0.476,0.477,0.478,0.479,0.481,0.482,0.483,0.484,0.485,0.486,0.487,0.488,0.489])。以x為自變量繪制用不同的插值方法得到的曲線F(x),并進行比較。

x 0.46 0.47 0.48 0.49

F(x) 0.48465 0.49375 0.50274 0.51166

答案:

x=0.46:0.01:0.49; %給出x和f(x)

f=[0.4846555,0.4937542,0.5027498,0.5116683];

x1=[0.461,0.462,0.463,0.464,0.465,0.466,0.467,0.468,0.469,0.471,0.472,0.473,0.474,0.475,0.476,0.477,0.478,0.479,0.481,0.482,0.483,0.484,0.485,0.486,0.487,0.488,0.489]

format long

a=interp1(x,f,x1,‘linear’) %用預設方法,即線性插值計算f(x1)

b=interp1(x,f,x1,‘nearest’) %用最近點插值計算f(x1)

c=interp1(x,f,x1,‘pchip’) %用3次Hermite插值計算f(x1)

d=interp1(x,f,x1,‘spline’) %用3次樣條插值計算f(x1)

format short

plot(x,f,‘g:o’,x1,a,‘r*-’,x1,b,‘b±.’,x1,c,‘md–’,x1,d,‘kh’)

figure

subplot(2,2,1)

plot(x,f,‘g:o’,x1,a,‘r*-’)

subplot(2,2,2)

plot(x,f,‘g:o’,x1,b,‘b±.’)

subplot(2,2,3)

plot(x,f,‘g:o’,x1,c,‘md–’)

subplot(2,2,4)

plot(x,f,‘g:o’,x1,d,‘kh’)

6.19 用一個3次多項式在區間[0,2π]内逼近函數sin(x)。(1)在給定區間上,均勻地選擇50個采樣點,并計算采樣點的函數值,然後利用3次多項式逼近。(1)在給定區間上,均勻地選擇20個采樣點,并計算采樣點的函數值,然後利用3次多項式逼近。分析結果有什麼不同。

答案:

X1=linspace(0,2pi,50);

Y1=sin(X1);

X2=linspace(0,2pi,20);

Y2=sin(X2);

P1=polyfit(X1,Y1,3);

P2=polyfit(X2,Y2,3);

Z1=polyval(P1,X1);

Z2=polyval(P2,X2);

subplot(2,1,1)

plot(X1,Y1,’😮’,X1,Z1,’-’)

subplot(2,1,2)

plot(X2,Y2,’😮’,X2,Z2,’-’)

6.20 分别用一個3次多項式和一個5次多項式在區間[0,2π]内逼近函數f(x)=sin(x)+cos(x)。在給定區間上,均勻地選擇20個采樣點,并計算采樣點的函數值,然後利用多項式逼近。分析結果有什麼不同。

答案:X=linspace(0,2pi,20);

Y=sin(X)+cos(X);

P1=polyfit(X,Y,3);

P2=polyfit(X,Y,5);

Z1=polyval(P1,X);

Z2=polyval(P2,X);

subplot(2,1,1)

plot(X,Y,’😮’,X,Z1,’-’)

subplot(2,1,2)

plot(X,Y,’😮’,X,Z2,’-*’)

第八章作業

8.1 分别用直接解法、LU分解矩陣法、QR分解矩陣法、Cholesky分解矩陣法求解法求解下列線性方程組。分析它們的實作條件。

繼續閱讀