此程序为解线性方程组的Jacobi迭代法的MATLAB源程序
源代码在线查看: jacobi迭代法.txt
Jacobi迭代法的MATLAB函数文件Jacobi.m如下:
function s=jacobi(A,b,x0,eps)
%Jacobi迭代法解线性方程组
%A为系数矩阵,b为方程组Ax=b的右端项,x0为初值,eps为允许误差值
if nargin==3
eps=1.0e-6;
elseif nargin error
return
end
D=diag(diag(A)); %求A的对角矩阵
L=-tril(A,-1); %求A的下三角阵
U=-triu(A,1); %求A的上三角阵
B=D\(L+U);
f=D\b;
s=B*x0+f;
n=1; %迭代次数
while norm(s-x0)>=eps
x0=s;
s=B*x0+f;
n=n+1;
end
例:10x1-2x1-x3=3
-2x1+10x2-x3=15
-x1-2x2+5x3=10
用MATLAB实现,在命令窗口输入
A=[10 -2 -1;-2 10 -1;-1 -2 5];
b=[3 15 10]';
x0=[0 0 0]';
eps=0.0001;
s=jacobi(A,b,x0,eps)