需要掌握
- MATLAB語言中特殊矩陣
- MATLAB語言中矩陣的變幻
- MATLAB語言矩陣如何求值
- MATLAB語言中特征值與特征向量
- MATLAB語言中稀疏矩陣
2.1 特殊矩陣
如何建立矩陣?
逐個按行的順序,輸入矩陣的各個元素,全部元素用中括號括起來,同一行的元素用,或者空格分隔,不同行的元素之間用分號(;)分隔。
l 通用性的特殊矩陣——0矩陣,1矩陣,單位矩陣等等
l 用於專門學科的特殊矩陣——范德蒙矩陣,魔方矩陣等等
1.通用的特殊矩陣
zeros函數:產生全0矩陣,即零矩陣。
ones函數:產生全1矩陣,即幺矩陣。
eye函數:產生對角線為1的矩陣。當矩陣是方陣時,得到一個單位矩陣。
rand函數:產生(0,1)區間均勻分布的隨機矩陣。
randn函數:產生均值為0,方差為1的標准正態分布隨機矩陣。
zeros函數的調用格式:
zeros(m):產生m×m零矩陣。
zeros(m,n):產生m×n零矩陣。
zeros(size(A)):產生與矩陣A同樣大小的零矩陣。 Size返回A的行數和列數
>> A=zeros(2,3)
A = 0 0 0
0 0 0
>> zeros(size(reshape(A,3,2))) // reshape將A轉變為三行兩列的矩陣,size得到向量3和2
ans = 0 0
0 0
0 0
例1 產生5階兩位隨機整數(10-99)矩陣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));
>> B=0.6+sqrt(0.1)*randn(5);
>> C=eye(5); //產生五階單位陣
>> (A+B)*C==C*A+B*C
ans =
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.用於專門學科的特殊矩陣
(1)魔方矩陣——Magic Square
>> M=magic(3) //和均為15
M = 8 1 6
3 5 7
4 9 2
n階魔方陣由1,2,3,…,n2共n2個整數組成,且每行、每列以及主、副對角線上各n個元素之和都相等。
n階魔方陣每行每列元素的和為(1+2+3+…+ n^2)/n=(n+n^3)/2
n>2時有很多不同的n階魔方陣,MATLAB函數magic(n)產生一個特定的魔方陣。
例2 產生8階魔方陣,求其每行每列元素的和。
>> M=magic(8);
>> sum(M(1,:)) //每列
ans =
260
>> sum(M(:,1)) //每行
ans =
260
(2)范德蒙矩陣
范德蒙(Vandermonde)矩陣是法國數學家范德蒙提出的一種特殊矩陣。范得蒙矩陣的最后一列全為1,即向量v各元素的零次方,倒數第二列為指定的向量v,即向量v各元素的一次方, 其他各列是其后列與倒數第二列的點乘積。
在MATLAB中,函數vander(V)生成以向量V為基礎的范得蒙矩陣。
>> A=vander(1:5) //以1.2.3.4.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 編碼(里德-所羅門編碼)即以范德蒙矩陣為基礎。
(3) 希爾伯特矩陣
n階希爾伯特(Hilbert)矩陣的一般形式為:
希爾伯特矩陣的元素為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
希爾伯特矩陣是著名的病態矩陣,即任何一個元素發生較小的變動,整個矩 陣的值和逆矩陣都會發生很大變化。病態程度和矩陣的階數相關,隨着階數的增加病態越嚴重。
(4)托普利茲矩陣、
托普利茲(Toeplitz)矩陣除第一行第一列外,其他元素都與左上角的元素相等,即T(i,j)=T(i-1,i-1)。
toeplitz(x,y): 生成以x為第一列, y為第一行的托普利茲矩陣。
toeplitz(x): 用向量x生成一個對稱的托普利茲矩陣。 //x和y均為向量,長度不必相等。
(5)伴隨矩陣
設多項式p(x)為anxn+an-1xn-1+…+a1x+a0,則多項式的伴隨矩陣是:
p(x)稱為A的特征多項式,方程p(x)=0的根稱為A的特征值。第一行由系數組成
MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在后。例如,生成多項式x3-2x2-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列元素即為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
Tip:單位矩陣:它是個方陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0。
設A是數域上的一個n階矩陣,若在相同數域上存在另一個n階矩陣B,使得: AB=BA=E ,則我們稱B是A的逆矩陣,而A則被稱為可逆矩陣。注:E為單位矩陣。