工程数学(3)——矩阵的直接三角分解法

文章目录


一、三对角方程组追赶法

A x = f Ax=f Ax=f的系数矩阵呈对三角形
A = ( b 1 c 1 a 2 b 2 c 2 ⋱ ⋱ ⋱ a n − 1 b n − 1 c n − 1 a n b n ) A= \begin{pmatrix} b_{1} & c_{1} \\ a_{2} & b_{2} & c_2\\ & \ddots & \ddots & \ddots\\ &&a_{n-1} & b_{n-1} &c_{n-1}\\ &&&a_{n}&b_{n}\\ \end{pmatrix} A=⎝⎜⎜⎜⎜⎛​b1​a2​​c1​b2​⋱​c2​⋱an−1​​⋱bn−1​an​​cn−1​bn​​⎠⎟⎟⎟⎟⎞​
A = L U A=LU A=LU具有以下形式
L = ( 1 l 2 1 l 3 ⋱ ⋱ 1 l n 1 ) L= \begin{pmatrix} 1 \\ l_{2} & 1 \\ &l_3& \ddots\\ && \ddots& 1\\ &&& l_n & 1\\ \end{pmatrix} L=⎝⎜⎜⎜⎜⎛​1l2​​1l3​​⋱⋱​1ln​​1​⎠⎟⎟⎟⎟⎞​

U = ( u 1 d 1 u 2 d 2 ⋱ ⋱ u n − 1 d n − 1 u n ) U= \begin{pmatrix} u_1&d_1 \\ & u_{2} & d_2 \\ &&\ddots& \ddots\\ &&&u_{n-1}& d_{n-1}\\ &&&& u_n\\ \end{pmatrix} U=⎝⎜⎜⎜⎜⎛​u1​​d1​u2​​d2​⋱​⋱un−1​​dn−1​un​​⎠⎟⎟⎟⎟⎞​

计算公式如下:
d i = c i d_i=c_i di​=ci​
u 1 = b 1 u_1=b_1 u1​=b1​
l i = a i / u i − 1 l_i=a_i/u_{i-1} li​=ai​/ui−1​
u i = b i − l i c i − 1 u_i=b_i-l_ic_{i-1} ui​=bi​−li​ci−1​
计算次序是 u 1 , l 2 , u 2 , l 3 , u 3 , ⋯   , l n , u n u_1,l_2,u_2,l_3,u_3,\cdots,l_n,u_n u1​,l2​,u2​,l3​,u3​,⋯,ln​,un​
原方程组转化为
L y = f Ly=f Ly=f
U x = y Ux=y Ux=y
即可得解
求解三对角方程组前提条件是A是严格对角占优阵或对称正定

二、对称正定的Cholesky分解法

若A对称正定,则存在一个实的下三角阵L,使 A = L L T A=LL^T A=LLT
这种分解是唯一的
L = ( l 11 l 21 l 22 ⋯ ⋱ l n 1 l n 2 ⋯ l n n ) L= \begin{pmatrix} l_{11} \\ l_{21} & l_{22} \\ \cdots & & \ddots\\ l_{n1}&l_{n2}& \cdots&l_{nn}\\ \end{pmatrix} L=⎝⎜⎜⎛​l11​l21​⋯ln1​​l22​ln2​​⋱⋯​lnn​​⎠⎟⎟⎞​
逐列计算L的元素,即 l 11 , l 21 , ⋯   , l n 1 , l 22 , ⋯   , l n 2 , ⋯   , l n n l_{11},l_{21},\cdots,l_{n1},l_{22},\cdots,l_{n2},\cdots,l_{nn} l11​,l21​,⋯,ln1​,l22​,⋯,ln2​,⋯,lnn​
原方程组转化为 L y = b Ly=b Ly=b
L T x L^Tx LTx=y
PS:Matlab有专用的函数来计算 L L L

L=chol(A)

为了避免相对耗时的平方根运算,将A分解为 A = L D L T A=LDL^T A=LDLT
其中 L = ( 1 l 21 1 ⋯ ⋱ l n 1 l n 2 ⋯ 1 ) L= \begin{pmatrix} 1 \\ l_{21} &1\\ \cdots & & \ddots\\ l_{n1}&l_{n2}& \cdots&1\\ \end{pmatrix} L=⎝⎜⎜⎛​1l21​⋯ln1​​1ln2​​⋱⋯​1​⎠⎟⎟⎞​
D = ( d 1   d 2 ⋱ d n ) D= \begin{pmatrix} d_1 \\ \ &d_2\\ & & \ddots\\ && &d_n\\ \end{pmatrix} D=⎝⎜⎜⎛​d1​ ​d2​​⋱​dn​​⎠⎟⎟⎞​
称为改进的平方根法

上一篇:走进量子计算的大门——使用量桨PaddleQuantum创建单量子比特门


下一篇:亚马逊跟卖,如何进行安全跟卖?