搜索
您的当前位置:首页正文

用Gauss-Seidel迭代求线性方程组解

来源:爱够旅游网


程序2.2: 用Gauss-Seidel迭代求线性方程组解

文件: Gaussmethod.m

function[x,k] = Gaussmethod(A,b,x0,N,eps)

n = length(A);

x1 = zeros(n,1);

x2 = zeros(n,1);

x1 = x0;

r = max(abs(b-A*x1));

k = 0;

while r>eps

for i=1:n

sum = 0;

for j=1:n

if j>i

sum = sum+A(i,j)*x1(j);

elseif jsum = sum+A(i,j)*x2(j);

end

x2(i) = (b(i)-sum)/A(i,i);

end

end

r = max(abs(x2-x1));

x1 = x2;

k = k+1;

if k>N

disp('迭代失败');

return;

end

end

x=x1;

实例: 用Gauss-Seidel迭代法求解方程组

-4x1 + x2 + x3 + x4 = 1

x1 -4x2 + x3 + x4 = 1

x1 + x2 -4x3 + x4 = 1

x1 + x2 + x3 -4x4 = 1

输入:

A=[-4,1,1,1;1,-4,1,1;1,1,1,-4,1;1,1,1,-4];

b=[1;1;1;1];

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

[x,k] = Gaussmethod(A,b,x0,100,10^-5);

结果:

k=21

x=

-9.999896e-001

-9.999910e-001

-9.999992e-001

-9.999932e-001

因篇幅问题不能全部显示,请点此查看更多更全内容

Top