矩陣相乘:
如果A是一個mXp
矩陣,而B是pXn
矩陣,它們就可以相乘產生mXn
矩陣。
在此介紹兩個經常出錯的概念:
矩陣的相乘與數組的相乘;
-
矩陣的相乘:
兩個矩陣的階數可以不同,可以點乘(數量積)也可以叉乘(向量積)
-
數組的相乘
數組的相乘是點乘(數量積),得到的是一個數
>> A = [2 1; 1 2];
>> B = [3 4; 5 6];
>> A.*B
ans =
6 4
5 12
現在我們把“.”
去掉,進行結果不同的矩陣相乘:
>> A * B
ans =
11 14
13 16
下面是一個例子:
矩陣A
是一個3X2
矩陣,而B是一個2X3
矩陣,由於A
的列數和B
的行數相匹配 。我們可以計算AB
的向量積
>> A = [1 4;8 0; -1 3];
>> B = [-1 7 4;2 1 -2];
>> C = A * B
C =
7 11 -4
-8 56 32
7 -4 -10
雖然這種形式的矩陣可以進行相乘,但不能進行數組的相乘,要使用數組相乘,行數和列數必須相等。
更多基本操作
- 矩陣加上某個元素
- 矩陣的左除與右除
- 矩陣元素的平方
MATLAB
允許你把數量添加到一個數組(向量或者矩陣)中,即把數加到數組的每個元素中。
>> A = [1 2 3 4];
>> b = 2;
>> C = A + b
C =
3 4 5 6
矩陣的左除與右除
這時數組元素與元素相匹配,因此兩個數組必須等大。
- 右除:
>> A = [2 4 6 8];
>> B = [2 2 3 1];
>> C = A./B
C =
1 2 2 8
- 左除:
>> E = A.\B
E =
1.0000 0.5000 0.5000 0.1250
E = A.\B
與E = B./A
相同
- 對數組的每個元素平方:
>> B = [2 4; -1 6];
>> B.^2
ans =
4 16
1 36
特殊類型矩陣:
-
單位矩陣:
主對角線元素全爲1,其餘全爲0的方形矩陣。
使用以下命令創建一個nxn的單位矩陣
eye(n);
>> eye(5)
ans =
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
- 零矩陣:
- nxn階矩陣:
zeros(n);
>> zeros(4)
ans =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
- mxn階矩陣
zeros(m,n);
>> zeros(4,5)
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
- 元素全爲1:元素全爲1的n階矩陣
ones(n);
>> ones(4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
元素全爲1的mxn階矩陣
ones(m,n);
>> ones(4,5)
ans =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
引用矩陣元素
在MATLAB
中,矩陣的單個元素或者整列都能夠被引用
>> A = [1 2 3; 4 5 6; 7 8 9];
>> A
A =
1 2 3
4 5 6
7 8 9
可以用A(m,n)
選出第m
行第n
列的元素:
>> A(2,3)
ans =
6
用A(:,i)引用第i列的全部元素:
>> A(:,2)
ans =
2
5
8
使用A(:,i:j)
選出從第i
列到第j
列的所有元素
>> A(:,2:3)
ans =
2 3
5 6
8 9
也可以選出矩陣特定的一小塊:
>> A(2:3,1:2)
ans =
4 5
7 8
也可以通過引用改變矩陣的值,例如把第一行第一列的值改爲-8
>> A(1,1) = -8
A =
-8 2 3
4 5 6
7 8 9
要在MATLAB
中創建空數組,只需在方括號裏留空即可,它可以用來刪除行或者列。
刪除矩陣的第二行:
>> A(2,:) = []
A =
-8 2 3
7 8 9
通過複製矩陣中的元素來創建新的矩陣:
複製矩陣的第一行四次來創建一個新的矩陣:
A =
-8 2 3
7 8 9
>> E = A([1,1,1,1],:)
E =
-8 2 3
-8 2 3
-8 2 3
-8 2 3
又如,引用兩次A的第一行創建新的矩陣:
>> A = [-8, 2, 3;7, 8, 9];
>> F = A([1,2,1],:)
F =
-8 2 3
7 8 9
-8 2 3
行列式與線性方程組求解
用係數矩陣左除向量矩陣(方程右邊的值組成的矩陣)
要計算矩陣A
的行列式的值,只需用命令det(A)
,如:
2X2
矩陣的行列式:
>> A = [1 3;4 5];
>> det(A)
ans =
-7
4X4
矩陣的行列式:
>> B = [3 -1 2 4; 0 2 1 8; -9 17 11 3; 1 2 3 -3];
>> det(B)
ans =
-533.0000
考慮下面的方程組:
5x + 2y -9z = -18
-9x - 2y + 2z = -7
6x + 7y + 3z = 29
解這樣的方程組需要兩步:
首先求係數矩陣A
的行列式,在本例中:
>> A = [5 2 -9; -9 -2 2; 6 7 3];
>> A
A =
5 2 -9
-9 -2 2
6 7 3
>> det(A)
ans =
437
如果行列式不爲0,說明有解,解是列向量:
X = [x;y;z]
使用左除就可以得到解,不過要先創建由方程右邊組成的向量:
b = [-18;-7;29]
b =
-18
-7
29
解爲:
>> A\b
ans =
1.0000
2.0000
3.0000