第一章作業
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分解矩陣法求解法求解下列線性方程組。分析它們的實作條件。