MATLAB实现Jacobi迭代法【例】

MATLAB实现Jacobi迭代法【例】
jacobi.m
function tx=jacobi(A,b,imax,x0,tol) %利用jacobi 迭代法解线性方程组AX=b,迭
%代初值为x0,迭代次数由imax 提供,精确
%度由tol 提供
del=10^-10; %主对角的元素不能太小,必须大于del
tx=[x0] ; n=length(x0);
for i=1:n
dg=A(i,i);
if abs(dg)< del
disp('diagonal element is too small');
return
end
end
for k = 1:imax %Jacobi 迭代法的运算循环体开始
for i = 1:n
sm=b(i) ;
for j = 1:n
if j~=i
sm = sm -A(i,j)*x0(j) ;
end
end %for j
x(i)=sm/A(i,i) ; %本次迭代得到的近似解
end
tx=[tx ;x] ; %将本次迭代得到的近似解存入变量tx 中
if norm(x-x0)
return
else
x0=x ;
end
end

test.m
A=[10 -1 2 0;-1 11 -1 3;2 -1 10 -1;1 3 -1 8];
b=[6 25 -11 15]';
tol=1.0*10^-6 ;
imax =10;
x0= zeros(1,4);
tx=jacobi(A,b,imax,x0,tol) ;
for j=1:size(tx,1)
fprintf('M %f %f %f %f\n', j, tx(j,1),tx(j,2),tx(j,3),tx(j,4))
end

结果:
   1 0.000000 0.000000 0.000000 0.000000
   2 0.600000 2.272727 -1.100000 1.875000
   3 1.047273 1.715909 -0.805227 0.810227
   4 0.932636 2.073760 -1.056841 0.999972
   5 1.018744 1.988716 -0.979154 0.848655
   6 0.994702 2.044875 -1.020012 0.879494
   7 1.008490 2.030564 -1.006504 0.856333
   8 1.004357 2.039363 -1.013008 0.861664
   9 1.006538 2.036941 -1.010769 0.858068
  10 1.005848 2.038324 -1.011807 0.858984
  11 1.006194 2.037917 -1.011439 0.858422

转载于:https://www.cnblogs.com/dreamsyeah/archive/2013/03/04/5878538.html

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值