Matlab 数值分析 Jacobi 雅可比迭代法 代码
%* Jacobi迭代法求解线性方程组-----------------------------------------------
%* 输入方程组、预处理-------------------------------------------------------
A=[5,2,1;-1,4,2;2,-3,10];
b=[-12;20;3];
eps=1e-3; % 精度要求
max=1000; % 最大迭代次数
n=length(A); % 系数矩阵A的维数
x=zeros(n,1); % 初始值设置为0
x1=zeros(n,1);
%* 开始迭代求解------------------------------------------------------------
k=0;
while 1
%* 先计算x1(1)
x1(1)= ( b(1)-A(1,2:n)*x(2:n,1) )/A(1,1);
%* 再计算x1(i),i=2,3,...,n-1
for i=2:n-1
x1(i)=( b(i)-A(i,1:i-1)*x(1:i-1,1)-A(i,i+1:n)*x(i+1:n,1) )/A(i,i);
end
%* 最后计算x1(n)
x1(n)=( b(n)-A(n,1:n-1)*x(1:n-1,1) )/A(n,n);
k=k+1;
%* 计算前后迭代解x1的误差
if sum( abs(x1-x) )<eps
fprintf('迭代次数=%d\n',k);
break;
end
%* 当迭代次数超过给定最大迭代次数时,迭代不收敛
if k>=max
fprintf('迭代法不收敛\n');
break;
end
%* 未达到给定精度要求则继续迭代
x=x1;
end
%* 输出迭代求解------------------------------------------------------------
if k<max
for i=1:n
fprintf('x[%d]=%f\n',i,x1(i));
end
end
武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks ,Hyperworks, Protel,CAXA,OpenWorks LandMark,MATLAB,Enovia,Winchill,TeamCenter,MathCAD,Ansys, Abaqus,ls-dyna, Fluent, MSC,Bentley,License,UG,ug,catia,Dassault Systèmes,AutoDesk,Altair,autocad,PTC,SolidWorks,Ansys,Siemens PLM Software,Paradigm,Mathworks,Borland,AVEVA,ESRI,hP,Solibri,Progman,Leica,Cadence,IBM,SIMULIA,Citrix,Sybase,Schlumberger,MSC Products...