1 function [u,n]=Jacobi(A,b,u0,eps,varargin) 2 %Jacobi.m函数为用于雅可比迭代法求解线性方程组 3 %A为线性方程组的系数矩阵 4 %b为线性方程组的常数向量 5 %u0为迭代初始向量 6 %eps为解的精度控制 7 %varargin为迭代步数控制 8 %u为线性方程组的解 9 %n为求出所有精度的解实际的迭代步数 10 if nargin==3 11 eps=1.0e-10; 12 M=200; 13 elseif nargin<3 14 error 15 return 16 elseif nargin==5 17 M=varargin{1}; 18 end 19 D=diag(diag(A));%求A的对角矩阵 20 L=-tril(A,-1);%求A的下三角阵 21 U=-triu(A,1);%求A的上三角阵 22 B=D\(L+U); 23 f=D\b; 24 u=B*u0+f; 25 n=1; %迭代次数 26 while norm(u-u0)>=eps & n<=1000 27 u0=u; 28 u=B*u0+f; 29 n=n+1; 30 % if (n>=M) 31 % disp(\'Warning:迭代次数太多,可能不收敛!\'); 32 % return; 33 % end 34 end