function [X]=sirt(A,D)
%A[M][N]线形方程组的系数矩阵;D[M]线形方程组等号右边的数值矩阵;X[N]解向量;
[M,N]=size(A);
S=zeros(M,1);%S[M]系数矩阵的每行元素的平方和矩阵
E=zeros(N,1);%E[N]系数矩阵每列非零元素的个数矩阵
R=zeros(M,1);%R[M]残差矩阵
X=zeros(N,1);
for i=1:M
for j=1:N
S(i)=S(i)+A(i,j)*A(i,j);%求出系数矩阵的每列元素的平方和
if A(i,j)~=0
E(j)=E(j)+1;%求出系数矩阵每列非零元素的个数
end
end
end
k=1;
while(k)
for i=1:M
a=0;
for j=1:N
a=a+A(i,j)*X(j);
end
R(i)=D(i)-a;%计算残差
end
for j=1:N
B=0;
for i=1:M
B=B+A(i,j)*R(i)/S(i);
end
C(j)=B/E(j);
X(j)=X(j)+C(j);
% /*迭代求解,当-0.001<E[N]<0.001时,确定此时的X[N]为方程的近似解*/
if abs(C(j)>=0.00000001)
k=1;
else
k=0;
end
end
end