雅克比迭代法介绍以及matlab代码实现-线性方程组求解

Posted Sophiaecho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了雅克比迭代法介绍以及matlab代码实现-线性方程组求解相关的知识,希望对你有一定的参考价值。

1).前沿   

 谈到雅克比迭代法,首先就谈下迭代法的基本原理

     设线性方程组

                                      Ax = b

 系数矩阵A为n阶非奇异矩阵(|A|≠0,且右端常数项向量b≠0,则将上式改写为

                                    x = Bx +f

采用迭代的思想:    x^{k+1} = B*x^{k+1} +f   k=0,1,2...,n

其基本思想是将A拆分成如下

                                       A = M-N

此时 B=M^(-1)*N = M^(-1) = I - M^(-1)*A   ,f = M^(-1)*b .(注:I 是单位矩阵)

          X^(K+1) = I -  M^(-1)*A + M^(-1)*b 

2).雅克比迭代法

     就上拆分的思想,将n阶线性方程组  Ax =b拆分成(A = (aij)nxn ,且aij≠0)

                                     A = D + L +U                

其中

   

则根据aij≠0,则D^(-1) 存在,则将线性方程组 AX=B 改为

                                               x=-D^(-1)*(L+U)*x + D^(-1)*b

由此得到迭代公式

                                              x^(k+1)=-D^(-1)*(L+U)*x^(k+1) + D^(-1)*b

证明:标注为粉红的公式

                               由 Ax = b ,将A=D+L+U代如得,

                                (D+L+U)x = b

                                  Dx+(L+U)x = b

                                  Dx = -(L+U)x + b

                                  x = D^(-1)*(L+U)*x + D^(-1)*b   

证毕。

 

将   x=-D^(-1)*(L+U)*x + D^(-1)*b 展开

 

 

...

最终结果为:

                         

 

3).Matlab 雅克比迭代程序

具体程序如下所示:

clear; 
A=input(\'请输入线性方程组的系数矩阵:\'); 
b=input(\'请输入线性方程组的常向量:\'); 
x1=input(\'请输入解向量的初始值:\'); 
n=numel(b); 
 
e_max=1e6;       %%前一次和后一次之差
while e_max>=1e-6 
    e_max=0; 
    for i=1:n 
        s=0;           %%初始化变量
        for j=1:n 
            if j~=i 

                s=s+A(i,j)*x1(j); 
            end 
        end 
        x2(i) = (b(i)-s)/A(i,i); 
        e = abs(x2(i)-x1(i));     
        if e > e_max  
            e_max = e; 
        end 
    end 
    x1=x2      %%不带分号,观察每步迭代结果 
end 

 

测试矩阵

A = [10 -1 -2;-1 10 -2;-1 -1 5];

b= [72 83 42];

迭代初值x(0) =  [0 0 0];

调试结果

 

  

以上是关于雅克比迭代法介绍以及matlab代码实现-线性方程组求解的主要内容,如果未能解决你的问题,请参考以下文章

强化学习 马尔科夫决策过程(价值迭代策略迭代雅克比迭代)

matlab牛顿迭代法急!!(100分悬赏)

急!!如何用matlab语言编写一个用牛顿迭代法求解经过有限差分法处理过的非线性方程组

matlab怎么画迭代过程图?

非线性方程组迭代法的matlab实现详细介绍

高斯-牛顿迭代