解线性方程组迭代法之Jacobi迭代法及其算法实现
在上一篇博客里面,笔者介绍了解线性方程组的LU分解法,这篇来介绍一个新的方法,迭代法.解线性方程组的迭代法有多种,其中就有Jacobi迭代法,它的原理是什么呢?有如下的线性方程组Ax=b,可将其变形为=>Mx=Nx+b=>x=M -1 Nx+M -1 b,设B=M -1 N=M -1 (M-A)=E-M -1 A,f=M -1 b,即可得到迭代式:X (k+1) =Bx (k) +f,这里我们只需要设置一个初始的x向量,依次将前一步的x k 代入到迭代式中,就可以得到x (k+1) 的结果 关于迭代法的两个注意事项: 1.迭代法相比于其他方法在计算大型稀疏矩阵矩阵方面,是有优势的,但不意味着只能解大型稀疏矩阵 2.并非所有的线性方程组都可以用迭代法进行求解,这是因为不是所有的迭代方程都是收敛的,可能会出现的情况就是,在迭代的过程中,会出现迭代解偏离精确解的情况,并且随着迭代的次数增多,会越偏越大 3.遇到不收敛的情况,就不能用迭代法求解,可以选用前面的Guass消元法或者LU分解法 接下来看代码实现~ 老规矩,初始化 double * * init_Matrix ( int r , int c ) { double * * p = new double * [ r ] ; int d = c + 1 ; for ( int i = 0 ; i < r ; i ++ ) { p [