一、特殊矩陣
1.一些通用的特殊矩陣
zeros函數:產生全0矩陣,即零矩陣;
ones函數:產生全1矩陣,即幺矩陣;
eye函數:產生對角線為1的矩陣。當矩陣是方陣時,得到一個單位矩陣;
rand函數:產生(0,1)區間均勻分布的隨機矩陣;
randn函數:產生均值為0,方差為1的標准正態分布隨機矩陣。
1.1zeros函數的調用格式:
zeros(m):產生m×m零矩陣;
zeros(m,n):產生m×n零矩陣;
zeros(size(A)):產生與矩陣A同樣大小的零矩陣。
A=zeros(2,3)
A =
0 0 0
0 0 0
zeros(size(reshape(A,3,2)))
ans =
0 0
0 0
0 0
注:reshape重組數組;將23的數組重塑為32的數組,size求矩陣的大小。
例1 首先產生5階兩位隨機整數矩陣A,再產生均值為0.6、方差為0.1的5階正態分布隨機矩陣B,最后驗證(A+B)I=IA+BI(I為單位矩陣)。
rand函數:產生(0,1)開區間均勻分布的隨機數x;
fix(a+(b-a+1)*x):產生[a,b]區間上均勻分布的隨機整數;
randn函數:產生均值為0、方差為1的標准正態分布隨機數x;
μ+σx:得到均值為μ、方差為σ^2的隨機數。
A=fix(10+(99-10+1)*rand(5)) %%生成10-99隨機整數矩陣
B=0.6+sqrt(0.1)*randn(5) %%產生均值為0.6、方差為0.1的5階正態分布隨機矩陣
C=eye(5) %%單位矩陣
(A+B)C==CA+B*C
A =
24 64 50 84 19
81 33 17 58 96
38 68 30 99 10
57 72 92 17 79
24 77 23 49 83
B =
1.0361 0.5121 0.1013 0.9565 0.0465
0.2654 0.8218 0.7606 0.7107 0.5097
0.4518 -0.0488 0.6892 0.5054 0.3371
0.5138 0.4881 0.6106 0.6072 0.2903
0.9474 0.3396 0.1783 0.5171 0.2343
C =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
ans =
5×5 logical 數組
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
2、魔方矩陣(Magic square)
n階魔方陣由1,2,3,…,n2共n2個整數組成,且每行、每列以及主、副對角線上各n個元素之和都相等;
n階魔方陣每行每列元素的和為(1+2+3+…+ n2)/n=(n+n3)/2;
n>2時有很多不同的n階魔方陣,MATLAB函數magic(n)產生一個特定的魔方陣。
例2 產生8階魔方陣,求其每行每列元素的和
M=magic(6)
sum(M(1,:))%%第一行的和
sum(M(:,1))%%第一列的和
(6+6^3)/2
M =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
ans =
111
ans =
111
ans =
111
3.范德蒙矩陣
范德蒙矩陣的最后一列全為1,即向量v各元素的零次方,倒數第二列為指定的向量v,即向量v各元素的一次方, 其他各列是其后列與倒數第二列的點乘積;
在MATLAB中,函數vander(V)生成以向量V為基礎的范得蒙矩陣。
A=vander(1:5)
A =
1 1 1 1 1
16 8 4 2 1
81 27 9 3 1
256 64 16 4 1
625 125 25 5 1
注:范德蒙矩陣常用在各種通信系統的糾錯編碼中,例如,常用的Reed-Solomon編碼即以范德蒙矩陣為基礎。感興趣的同學可自行查閱相關資料
4.希爾伯特矩陣
希爾伯特矩陣的元素為H(i,j)=1/(i+j-1);
在MATLAB中,生成n階希爾伯特矩陣的函數是hilb(n)。
format rat
H=hilb(4)
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 1/7
注:format rat :使用分數來表示數值。
希爾伯特矩陣是著名的病態矩陣,即任何一個元素發生較小的變動,整個矩陣的值和逆矩陣都會發生很大變化。病態程度和矩陣的階數相關,隨着階數的增加病態越嚴重。
5.伴隨矩陣
設多項式p(x)為a(n)x^n+a(n-1)x(n-1)+…+a1x+a0,則多項式可轉為伴隨矩陣
p(x)稱為A的特征多項式,方程p(x)=0的根稱為A的特征值。
MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在后。例如,生成多項式x3-2*x2-5x+6的伴隨矩陣。
p=[1,-2,-5,6];
A=compan(p)
A =
2 5 -6
1 0 0
0 1 0
可以求出伴隨矩陣的特征值,該特征值等於多項式方程的根。
6.帕斯卡矩陣
根據二項式定理,(x+y)^n展開后的系數隨着n的增大組成一個三角形表,這個三角形稱為楊輝三角形;
把二項式系數依次填寫在矩陣的左側對角線上,然后提取左側的n行n列元素即為n階帕斯卡(Pascal)矩陣;
帕斯卡矩陣的第一行元素和第一列元素都為1,其余位置的元素是該元素的左邊元素與上面元素相加,即P(i,j)=P(i,j-1)+P(i-1,j),且P(i,1)=1,P(1,j)=1;
函數pascal(n)生成一個n階帕斯卡矩陣。
例3.生成5階帕斯卡矩陣,驗證它的逆矩陣的所有元素也為整數。
format rat
P=pascal(5)
P =
1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70
inv(P)
ans =
5 -10 10 -5 1
-10 30 -35 19 -4
10 -35 46 -27 6
-5 19 -27 17 -4
1 -4 6 -4 1