雅可比(Jacobi)迭代法的MATLAB代码

雅可比(Jacobi)迭代法的MATLAB代码

数值分析学习(四)

一、迭代原理

考虑线性方程组Ax = b时,A为可逆矩阵,当A的主对角线元素不为0时,A可写为:

A=D+L+UD,L,U可写为:
D = [ a 11 0 … 0 0 a 22 … 0 … … … … 0 0 … a n n ]   L = [ 0 0 … 0 a 21 0 … 0 … … … … a n 1 a n 2 … 0 ]   U = [ 0 a 12 … a 1 n 0 0 … a 2 n … … … … 0 0 … 0 ] D=\left[\begin{matrix} a_{11} & 0 & … &0 \\ 0 & a_{22} & …&0\\ …&…&…&…\\ 0&0&…&a_{nn} \end{matrix}\right] \space L=\left[\begin{matrix} 0 & 0 & … &0 \\ a_{21} & 0 & …&0\\ …&…&…&…\\ a_{n1}&a_{n2}&…&0 \end{matrix}\right] \space U=\left[\begin{matrix} 0 & a_{12} & … &a_{1n} \\ 0 & 0& …&a_{2n}\\ …&…&…&…\\ 0&0&…&0 \end{matrix}\right] D= a11000a22000ann  L= 0a21an100an2000  U= 000a1200a1na2n0

故将LU移到左边,可得:

x i = 1 a i i [ b i − ∑ j = 1   j ≠ i n a i j x j ] ,   i = 1 , 2 … n 即 x = B x + f ,  其中 B = I − D − 1 A = − D − 1 ( L + U ) 故可以迭代 X ( k + 1 ) = B x ( k ) + f x_i=\frac{1}{a_{ii}}\left[ b_i-\sum_{j=1 \space j \neq i}^{n}{a_{ij}x_j} \right] ,\space i=1,2…n \\ 即x=Bx+f,\space 其中B=I-D^{-1}A=-D^{-1}(L+U)\\ 故可以迭代X^{(k+1)}=Bx^{(k)}+f xi=aii1 bij=1 j=inaijxj , i=1,2nx=Bx+f, 其中B=ID1A=D1(L+U)故可以迭代X(k+1)=Bx(k)+f

二、迭代收敛性

如果 lim ⁡ n → + ∞ x ( n ) \lim_{n \rightarrow +\infty}{x^{(n)}} limn+x(n)存在,则迭代法收敛;否则,迭代法不收敛。

三、算法分析

1 、 1、 1将矩阵解写为上述形式;
2 、 2、 2给定迭代准确度(即误差)与迭代初值;
3 、 3、 3逐次迭代.

四、MATLAB代码

function [x,j] = Jacobi(A,b)
  %% A为n×n矩阵
  %% b为n维列向量
  %% x为输出解
  %% j为迭代次数
   n = length(b);
   D = zeros(n,n);
   D = sparse(diag(diag(A)));
   Dinv = sparse(diag(1./diag(A)));

   B = Dinv*(D-A);
   f = Dinv*b;

   TOL = 1.0e-3;
   Max_iter = 1000;
   error = 1;

   j = 0;
   x0 = [0;0;0];
   while error>TOL && j<Max_iter
     xk = B*x0+f;
     error = norm(xk-x0,inf);
     x0=xk;
     j=j+1;
   end
   x=xk;
   j;
end
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值