当前位置:   article > 正文

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

雅可比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[

a11000a22000ann
\right] \space L=\left[
000a2100an1an20
\right] \space U=\left[
0a12a1n00a2n000
\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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/176837
推荐阅读
相关标签
  

闽ICP备14008679号