linear equation🚧
linear equation
特殊的矩陣有著特殊的演算法,降低時間複雜度。
(1) identity matrix
copy and paste O(1)
⎡ 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 ⎦
(2) diagonal matrix
element-wise scaling O(N)
⎡ 4 0 0 0 0 ⎤
⎢ 0 9 0 0 0 ⎥
⎢ 0 0 8 0 0 ⎥
⎢ 0 0 0 6 0 ⎥
⎣ 0 0 0 0 2 ⎦
(3) bidiagonal matrix / tridiagonal matrix
Thomas's algorithm O(N)
⎡ 4 0 0 0 0 ⎤ ⎡ 4 2 0 0 0 ⎤
⎢ 3 9 0 0 0 ⎥ ⎢ 3 9 0 0 0 ⎥
⎢ 0 4 8 0 0 ⎥ ⎢ 0 4 8 2 0 ⎥
⎢ 0 0 3 6 0 ⎥ ⎢ 0 0 3 6 4 ⎥
⎣ 0 0 0 9 2 ⎦ ⎣ 0 0 0 9 2 ⎦
(4) triangular matrix
forward/backward substitution O(N²)
⎡ 4 2 7 1 8 ⎤
⎢ 0 9 0 5 6 ⎥
⎢ 0 0 8 2 9 ⎥
⎢ 0 0 0 6 4 ⎥
⎣ 0 0 0 0 2 ⎦
(5) almost triangular matrix (Hessenberg matrix)
LU decomposition O(N²)
⎡ 4 2 7 1 8 ⎤
⎢ 3 9 0 5 6 ⎥
⎢ 0 4 8 2 9 ⎥
⎢ 0 0 3 6 4 ⎥
⎣ 0 0 0 9 2 ⎦
(6) band matrix
LU decomposition O(K²N)
⎡ 4 2 7 0 0 ⎤
⎢ 3 9 0 5 0 ⎥
⎢ 0 4 8 2 9 ⎥
⎢ 0 0 3 6 4 ⎥
⎣ 0 0 0 9 2 ⎦
(7) symmetric positive definite matrix
Cholesky decomposition O(N³)
⎡ 9 1 2 1 0 ⎤
⎢ 1 8 1 2 1 ⎥
⎢ 2 1 9 1 2 ⎥
⎢ 1 2 1 8 1 ⎥
⎣ 0 1 2 1 9 ⎦
(8) diagonal-constant matrix (Toeplitz matrix)
Levinson–Durbin algorithm O(N²)
fast Fourier transform O(NlogN)
⎡ 5 9 8 0 6 ⎤
⎢ 2 5 9 8 0 ⎥
⎢ 1 2 5 9 8 ⎥
⎢ 4 1 2 5 9 ⎥
⎣ 3 4 1 2 5 ⎦
linear least squares
特殊的矩陣有著特殊的演算法,降低時間複雜度。
https://www.mathworks.com/help/matlab/math/iterativemethods.png https://www.mathworks.com/help/matlab/math/iterative-methods-for-linear-systems.html
direct method vs. iterative method
古人將一次方程組演算法分成兩類:直接法、遞推法。前者得到精確解、後者得到近似解。
事實上,一次方程組演算法全部都是遞推法。例如高斯消去法是逐個橫條遞推、反覆調整矩陣。分類標題名不副實。分類標題應是函數遞推(反覆調整矩陣)、變數遞推(反覆調整解向量)。
直接法:
一、LU分解。例如高斯消去法、高斯喬登消去法、LU分解、Cholesky分解。
二、QR分解。例如Gram–Schmidt投影、Householder鏡射、Givens旋轉。
順帶一提,特徵分解、奇異值分解,也可以使用QR分解的三種基礎演算法。
遞推法:
一、鬆弛法。例如Jacobi's method、Gauss–Seidel method。
二、投影法。例如Kaczmarz's method。
三、最佳化演算法。例如Richardson's method、conjugate gradient method。
Toeplitz matrix🚧
Toeplitz matrix(constant-diagonal matrix)
「常對角矩陣」。每一條左上右下斜線是相同元素的矩陣。
⎡ 1 5 3 2 ⎤ ⎢ 2 1 5 3 ⎥ ⎢ 7 2 1 5 ⎥ ⎣ 0 7 2 1 ⎦
演算法(Levinson–Durbin algorithm)
https://ocw.mit.edu/courses/6-341-discrete-time-signal-processing-fall-2005/06e8ddb9555ede1b094f5dc9d17ea254_lec13.pdf https://hitonanode.github.io/cplib-cpp/linear_algebra_matrix/levinson.hpp.html