【数值计算】数值解析--n元一次联立方程组

n元1次联立方程组

ls_matrix.eq1.gif元1次方程组用一个ls_matrix.eq2.gif的矩阵按如下方式表示:

【数值计算】数值解析--n元一次联立方程组_第1张图片

这里的ls_matrix.eq4.gif是系数项,ls_matrix.eq5.gif为常数。用矢量表示,即

ls_matrix.eq6.gif

1次方程组可以根据Cramer's fomula求解. ls_matrix.eq7.gif如果存在逆矩阵的话,上式可由:

ls_matrix.eq8.gif

解的. 逆矩阵ls_matrix.eq9.gif如果用余子式矩阵ls_matrix.eq10.gif表示,即

ls_matrix.eq11.gif

这里的ls_matrix.eq12.gifls_matrix.eq7.gif的行列式(determinant),且ls_matrix.eq13.gif. 另外,余子式矩阵ls_matrix.eq10.gif由,

ls_matrix.eq14.gif

构成.这里的ls_matrix.eq15.gif是去掉ls_matrix.eq7.gifls_matrix.eq16.gifls_matrix.eq17.gif列后的ls_matrix.eq18.gif 的行列式.

将余子式矩阵带入逆矩阵公式中.

【数值计算】数值解析--n元一次联立方程组_第2张图片

可由,

ls_matrix.eq20.gif

求出未知数ls_matrix.eq21.gif的值. 之后,右侧的ls_matrix.eq22.gif的项中,把ls_matrix.eq7.gif的第ls_matrix.eq17.gif列用\V{b}替换,即:

【数值计算】数值解析--n元一次联立方程组_第3张图片

这便是Cramer公式

使用Cramer公式的计算次数是ls_matrix.eq24.gif次,计算量很大. 矩阵的元素数很少或者检验解的时候虽然可行,但是当矩阵的size很大时则求解困难.这里介绍一些数值解析中常用的求近似解方法.

联立方程的数值解法可以大体分成如下两类,

  • 直接解法(direct method)
  • 迭代解法(iterative method)

之后,将分别对直接解法中的高斯消去法和高斯-约当(Gauss-Jordan)法,迭代解法中的雅可比法,高斯-塞德尔(Gauss-Seidel)法,共轭梯度法进行叙述.同时,三角分解法主要用于前处理,之后也会对其中的LU分解,Cholesky分解法进行说明.

  • n元1次方程组:直接解法
  • n元1次方程组:迭代法
  • n元1次方程组:三角分解
  • n元1次方程组:共轭梯度法
  • n元1次方程组:双共轭梯度法

SourceCode

上述方法的Visual Studio 2010代码如下.

filelinearsystem_v1.1.zip

包含的方法有,

  • 高斯消去,高斯-约当
  • 雅可比法,高斯-塞德尔
  • 共轭梯度法,包含前处理的共轭梯度法

参考文献 

  • 川上一郎, ``数値計算の基礎'', http://www7.ocn.ne.jp/~kawa1/
  • Yousef Saad, Iterative methods for sparse linear systems 2nd ed., SIAM, 2003.

你可能感兴趣的:(数值计算)