function [x,m,n,tol] = jacobi(A,b,x0,eps)
%线性方程的准确解:x
%m判断迭代矩阵收不收敛
%迭代次数:n
%tol为求得的无穷矩阵范数
%线性方程组的系数矩阵:A
%线性方程组的常数向量:b
%迭代的初始向量:x0
%迭代精度:eps
if nargin~=4
disp('输入变量个数不正确'); %检测输入变量的个数
end
D=diag(diag(A)); %求A的对角矩阵
L=-tril(A,-1); %求A的下三角矩阵
U=-triu(A,1); %求A的上三角矩阵
B=D^(-1)*(L+U); %迭代矩阵B
f=D\b;
n=0;
tol=1;
m=norm(B,1); %计算迭代矩阵的矩阵范数
if(m<1) %判断J法解这个方程组收不收敛
disp('||B||=m<1;收敛');
while tol>eps;
x=B*x0+f;
n=n+1;
tol=norm(x-x0,inf);%计算矩阵范数
x0=x;
end
else
disp('不收敛');
return
end
end