Matlab_用高斯赛德尔(Gaoss-Seidel)迭代法解线性方程组

1.程序代码

function x=Gauss(A,b,x0,ep,N)

%用途:用高斯迭代法解线性方程组Ax=b

%A为系数矩阵,b为右端向量,x0为初始向量(默认零向量)

%ep为精度(1e-6),N为最大迭代次数(默认500次),x返回近似解向量

n=length(b);

if nargin<5

    N=500;

end

if nargin<4

    ep=1e-6;

end

if nargin<3

    x0=zeros(n,1);

end

x=zeros(n,1);

k=0;

while k<N

    for i=1:n

        if i==1

            x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);

        elseif i==n

                x(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);

        else

                x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);

        end

    end

    if norm(x-x0,inf)<ep

        break;

    end

    x0=x;

    %disp('x=');

    %disp(x);可输出中间结果

    k=k+1;

end

if k==N

    Warning('已到达迭代次数上限!');

end

disp(['k=',num2str(k)])

 

2.示例

取初值性x(0)=(0,0,0,0)T, 精度要求ε=10-6,用Gaoss-Seidel迭代法解线性方程组

 

在命令窗口输入如下命令:

>> B=[6,-2,-1,-1;-2,12,-1,-1;-1,-1,6,-2;-1,-1,-1,12];

>> b2=[-16;6;8;54];

>> x0=[0;0;0;0];

>> ep=1e-6;

>> N=500;

>> x=Gauss(B,b2,x0,ep,N)

 

运行结果:

k=11

 

x=

 

   -1.0782

    0.9553

    2.8897

    4.7306

  • 37
    点赞
  • 230
    收藏
    觉得还不错? 一键收藏
  • 33
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值