Preface
Matrix Multiplication
這就是套公式, 對公式不熟的可以參考 Wiki - Matrix multiplication. 但在影片有提到幾個觀念值得在這邊提.
Multiplication - Way 1
如果以 "矩陣" x "只有一行的矩陣"的角度來看:
以 GLA 的範例代碼來驗證會是:
- // Multiplication W1
- // A(mxn) * B(nxp) = C(mxp)
- // C(c1) = A*(Column 1 of B) <--- a="" column="" combinatioin="" of="" span=""> --->
- // C(c2) = A*(Column 2 of B)
- // ...
- Matrix A = LA.newMtx3(2, 3, [1,2,3,4,5,6])
- Matrix B = LA.newMtx3(3, 2, [1,0,0,2,1,0])
- Matrix C = A*B
- printf("%s\n", C)
- // First column of C ---> c1
- Matrix O = A.col2Mtx(0)*B.val(0, 0)+A.col2Mtx(1)*B.val(1, 0)+A.col2Mtx(2)*B.val(2, 0)
- assertEquals(O.c(0), C.c(0))
- // Second column of C ---> c2
- O = A.col2Mtx(0)*B.val(0, 1)+A.col2Mtx(1)*B.val(1, 1)+A.col2Mtx(2)*B.val(2, 1)
- assertEquals(O.c(0), C.c(1))
Multiplication - Way 2
如果以 "只有一列的矩陣" x "矩陣" 的角度來看:
以 GLA 的範例代碼來驗證會是:
- // Multiplication W2
- // A(mxn) * B(nxp) = C(mxp)
- // C(r1) = (Row 1 of A)*B
- // C(r2) = (Row 2 of A)*B
- // ...
- // First row of C ---> r1
- O = B.row2Mtx(0)*A.val(0, 0)+B.row2Mtx(1)*A.val(0, 1)+B.row2Mtx(2)*A.val(0, 2)
- assertEquals(O.r(0), C.r(0))
- // Second row of C ---> r2
- O = B.row2Mtx(0)*A.val(1, 0)+B.row2Mtx(1)*A.val(1, 1)+B.row2Mtx(2)*A.val(1, 2)
- assertEquals(O.r(0), C.r(1))
(13:40) 接著考慮 Column of A x Row of B:
Multiplication - Way 4
如果把一個 Matrix 看成數個 Block 組成的角度來看:
Inverse Matrix
(24:00) 接著看 Invertible Matrix:
這裡解釋 Invertible Matrix 所具備的特性以及何謂 Singular Matrix.
Gauss-Jordan
(34:30) 這裡開始解釋如何求 Matrix A 的反矩陣. 一個做法是使用 Gauss-Jordan Reduction.
Supplement
* Inverse of a matrix by Gauss-Jordan elimination
沒有留言:
張貼留言