Matlab实现——Jacobi Iteration and Gauss-Seidel Iteration

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》

Use Jacobi Iteration and Gauss-Seidel Iteration to solve the following linear system with several different initial guesses for p.

x+z=2

-x+y=0

x+2y-3z=0 

下面是这两个程序对比:

 

%Program 3.4 (Jacobi Iteration)

function X=jacobi (A, B, P, delta, max1)

% Input  - A is an N x N nonsingular matrix

%        - B is an N x 1 matrix

%        - P is an N x 1 matrix; the initial guess

%         - delta is the tolerance for P

%         - max1 is the maximum number of iterations

% Output - X is an N x 1 matrix: the jacobi approximation to

%           the solution of AX = B

N = length(B);

for k=1:max1

   for j=1:N

      X(j)=(B(j)-A(j, [1:j-1, j+1:N])*P([1:j-1, j+1:N]))/A(j, j);

   end

   err=abs(norm(X'-P));   relerr=err/(norm(X)+eps);

   P=X' ;

   if (err<delta)|(relerr<delta)

      break

   end

end

X=X' ;


 

%Program 3.5 (Gauss-Seidel Iteration)

function X=gseid(A,B,P,delta, max1)

% Input  - A is an N x N nonsingular matrix

%        - B is an N x 1 matrix

%        - P is an N x 1 matrix; the initial guess

%    - delta is the tolerance for P

%    - max1 is the maximum number of iterations

% Output - X is an N x 1 matrix: the gauss-seidel approximation

%           to the solution of AX = B

N = length(B);

for k=1:max1

   for j=1:N

      if j==1

        X(1)=(B(1)-A(1,2:N)*P(2:N))/A(1,1);

      elseif j==N

         X(N)=(B(N)-A(N,1:N-1)*(X(1:N-1))')/A(N,N);

      else

                 %X contains the kth approximations and P the (k-1)st

        X(j)=(B(j)-A(j,1:j-1)*X(1:j-1)'-A(j,j+1:N)*P(j+1:N))/A(j,j);

      end

   end

err=abs(norm(X'-P));

   relerr=err/(norm(X)+eps);

   P=X' ;

   if (err<delta)|(relerr<delta)

       break

   end

end

 

X=X' ;


 

 

 

对于同一个初时状态:

Utitled3.m

<span style="color:#000000">A=[1,0,1;

    -1,1,0;

    1,2,-3;];

B=[2;0;0;];

P=[1;2;3;];

delta=10e-15;

max1=200;

X=jacobi (A, B, P, delta, max1)</span>




运行的结果显示:

Jacobi Iteration 收敛,而Gauss-Seidel Iteration发散!

事实上,对P=[x0;y0;z0=1;]Gauss-Seidel Iteration收敛。

 

欢迎前往个人博客 驽马点滴 和视频空间 哔哩哔哩-《挨踢日志》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值