Skip to content

Note_NAA_线性方程组直接解法

在有限元分析中,经过单元推导-->组装-->边界条件之后,最终求解的方程一般有形如【一般[A]的大小在1w+】:

\[ [A]X=b\tag{1} \]

Img

对于规模线性方程组的求解,直接法(如高斯消元法,Choleski 分解法等)比迭代法(如牛顿法,SOR法等)会更加受欢迎.本文介绍高斯消元法和Choleski法的数值求解方法.

高斯消元法

公式1展开后如下,上标(0)表示初始值.

Img

首先,消元\(x_1\),有:

Img

\(x_1\)带入剩下的公式,有:

Img

接下,消元\(x_2\)和其余\(x_p(p=3...n)\).可以发现,当消元\(x_k\)时:

Img

经过n-1此消元后,有:

Img

这样就可以以\(x_n,x_{n-1},...,x_{1}\)的顺序完成求解.

如果每一步的消元过程中,如果对角系数\(a_{11}^{(0)},a_{22}^{(1)},a_{33}^{(2)}....\)出现0值,我们需要进行行变换来得到非0值.如果行变换行不通,那就说明[A]是奇异矩阵

Choleski法

该方法基于一个事实:任何方阵[a]都可以表示为上下三角矩阵的乘积.

将A分解为A=LU

系统方程为\([A]X=b\),[A]可以写作:

Img

Img

Img

Img

满足A=LU的唯一因式分解的[L],[U]可以逐个元素求得,求解顺序是:

Img

\(l_{ij},u_{ij}\)满足:

Img

至此,完成LU分解.

求解方程组

将A=LU带入到[A]X=b可得:LUX=b.方程求解步骤为:

令:

\[ [U]\vec{X}=\vec{Z} \]

其中Z满足:

\[ [L]\vec{Z}=\vec{b} \]

展开后:

Img

以上,第一个式子可以求出z1,之后就可以依次求出z2,z3,....,zn【只要\(l_{ii}\)中没有0值】,一旦z_i求得后,则有:

Img

类似高斯消元,以\(x_n,x_{n-1},...,x_{1}\)的顺序可以完成求解.

对称矩阵的CHOLESKI分解

在大多数的有限元分析中,[A]一般是对称正定矩阵.此时,A有唯一的分解式:

Img

矩阵[U]由下式确定:

Img

对称矩阵的逆

首先进行 \(A=U^TU\)分解,然后:

Img

\(U^{-1}\)满足\(U^{-1}U=[I]\),\(U^{-1}\)的元素\(\lambda_{ij}\)满足:

Img

可以看出\(U^{-1}\)也是上三角阵,\(U^{-1}\)的逆为:

Img

最后,A的逆为:

Img