function[x,k]=jacobimethod(A,b,x0,N,emg)
%A是线性方程组的左端矩阵
%b是右端向量
%x0是迭代初始值
%N迭代次数上限,若迭代次数大于N,则迭代失败
%emg表示控制精度
%用jacobi迭代法求线性方程组A*x=b的解
%k表示迭代次数
%x表示用迭代法求得线性方程组的近视解
n=length(A);
x1=zeros(n,1);x2=zeros(n,1);
x1=x0;k=0;
r=max(abs(b-A*x1));
while r>emg
for i=1:n
sum=0;
for j=1:n
if i~=j
sum=sum+A(i,j)*x1(j);
end
end
x2(i)=(b(i)-sum)/A(i,j);
end
r=max(abs(x2-x1));
x1=x2;
k=k+1;
if k>N
disp('迭代失败,返回');
return;
end
end
x=x1;
%A是线性方程组的左端矩阵
%b是右端向量
%x0是迭代初始值
%N迭代次数上限,若迭代次数大于N,则迭代失败
%emg表示控制精度
%用jacobi迭代法求线性方程组A*x=b的解
%k表示迭代次数
%x表示用迭代法求得线性方程组的近视解
n=length(A);
x1=zeros(n,1);x2=zeros(n,1);
x1=x0;k=0;
r=max(abs(b-A*x1));
while r>emg
for i=1:n
sum=0;
for j=1:n
if i~=j
sum=sum+A(i,j)*x1(j);
end
end
x2(i)=(b(i)-sum)/A(i,j);
end
r=max(abs(x2-x1));
x1=x2;
k=k+1;
if k>N
disp('迭代失败,返回');
return;
end
end
x=x1;