• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB实现Jacobi迭代法【例】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi dbgrid 修改、更新、删除发布时间:2022-07-18
下一篇:
Qt利用QPainter自绘实现扫描雷达功能scanneritem - 疯狂delphi发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap