admin管理员组

文章数量:1794759

高斯

高斯

算法步骤


例题

 


 程序代码

function x=GaussSeidel(A,b,x0,eps,N)
n=length(b);
if nargin<5N=500;
end
if nargin<4eps=1e-6;
end
if nargin<3x0=zeros(n,1);
end
k=0;
x=zeros(n,1);
while k<Nx(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);for i=2:n-1x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);endx(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);if norm(x-x0,inf)<epsbreak;endx0=x;k=k+1;
end
if k==Nwarning('已达到迭代次数上限');
end
fprintf('k= %d',k)
end

运行结果

>>A=[0.76,-0.01,-0.14,-0.16;-0.01,0.88,-0.03,0.05;-0.14,-0.03,1.01,-0.12;-0.16,0.05,-0.12,0.72];

>> b=[0.68,1.18,0.12,0.74]';

>> x=GaussSeidel(A,b)

k= 8

x =

    1.2762

    1.2981

    0.4890

    1.3027

本文标签: 高斯