function [x,n] = jacobi(A,b,x0,eps,M)
%线性方程的准确解:x
%迭代次数:n
%线性方程组的系数矩阵:A
%线性方程组的常数向量:b
%迭代的初始向量:x0
%迭代精度:eps
%迭代的最大次数控制:M
if nargin==3
eps=1.0e-6;
M=10000;
end
D=diag(diag(A)); %求A的对角矩阵
L=-tril(A,-1); %求A的下三角矩阵
U=-triu(A,1); %求A的上三角矩阵
B=D\(L+U); %迭代矩阵B
f=D\b;
x=x0;
n=0;
tol=1;
while tol>eps;
x=B*x0+f;
n=n+1;
tol=norm(x-x0);
x0=x;
if (n>=M)
disp('迭代次数太多,可能不收敛!');
return;
end
end