1.程序代码
function x=majacobi(A,b,x0,ep,N)
n=length(b);
if nargin<5
N=500;
end
if nargin<4
ep=1e-6;
end
if nargin<3
x0=zeros(n,1);
end
x=zeros(n,1);
k=0;
while k<N
for i=1:n
x(i)=(b(i)-A(i,[1:i-1,i+1:n])*x0([1:i-1,i+1:n]))/A(i,i);
end
if norm(x-x0,inf)<ep
break;
end
x0=x;
%disp('x=');
%disp(x); 可输出中间结果
k=k+1;
end
if k==N
warning('已到达迭代次数上限!');
end
disp(['k=',num2str(k)])
2.示例
取初值性x(0)=(0,0,0,0)T, 精度要求ε=10-6,用Jacobi迭代法解下列线性方程组
![](https://img-blog.csdnimg.cn/20190529194754709.PNG)
在命令窗口输入如下命令:
>> A=[14 4 4 4;4 14 4 4 ;4 4 14 4;4 4 4 14];
>> b1=[-4;16;36;56];
>> x0=[0;0;0;0];
>> ep=1e-6;
>> N=500;
>> x=majacobi(A,b1,x0,ep,N)
运行结果:
k=94
x=
-2.0000
0.0000
2.0000
4.0000