高斯-赛德尔迭代法

高斯-赛德尔迭代法的代码实现

function x=agui_GS(a,b)
n=length(b);
N=100;
e=10^(-4);
x0=zeros(n,1);
x=x0;
x0=x+2*e;
k=0;
a1=tril(a);
a2=inv(a1);
while norm(x0-x,inf)>e&k<N
    k=k+1;
    x0=x;
    x=-a2*(a-a1)*x0+a2*b;
    format long
    k
    disp(x')
end
if k==N warning('已达最大迭代次数');end

 如求以下方程

 

输入代码 

a=[5 2 1;-1 4 2;2 -3 10]
b=[-12;20;3]
x=agui_GS(a,b)

 

得到如下结果  

a =

     5     2     1
    -1     4     2
     2    -3    10

b =

   -12
    20
     3
k =

     1

  -2.40000000000000   4.40000000000000   2.10000000000000


k =

     2

  -4.58000000000000   2.80500000000000   2.05750000000000


k =

     3

  -3.93350000000000   2.98787500000000   1.98306250000000


k =

     4

  -3.99176250000000   3.01052812500000   2.00151093750000


k =

     5

  -4.00451343750000   2.99811617187500   2.00033753906250


k =

     6

  -3.99931397656250   3.00000273632813   1.99986361621094


k =

     7

  -3.99997381777344   3.00007473745117   2.00001718479004


k =

     8

  -4.00003333193848   2.99998307462036   2.00000158877380


x =

  -4.00003333193848
   2.99998307462036
   2.00000158877380

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值