jacobi迭代法求解线性方程组

首先将 方程组中的 系数矩阵 A分解成三部分,即: A = L+D+U,如图1所示,其中 D为对角阵, L为下 三角矩阵U为上三角矩阵。
之后确定迭代格式,X^(k+1) =  B*X^(k) + f ,(这里^表示的是上标,括号内数字即迭代次数),如图2所示,其中 B称为迭代矩阵,雅克比迭代法中一般记为 J。(k = 0,1,......)
再选取初始迭代 向量X^(0),开始逐次迭代。
Ax= b ,其中 A=D+L+U 非奇异矩阵 ,且对角阵 D 也非奇异,则当迭代矩阵J的 谱半径 ρ(J) <1时,雅克比迭代法收敛。
#include<stdio.h>
#include<math.h>
#include <stdlib.h>
main(){
float e=0.001,z,m,a[3][3]={5,2,1,-1,4,2,2,-3,10},b[3]={-12,20,3},x[3]={0,0,0},y[3];
int n=3,j,i,k=1;
while(1) {
for(i=0;i<3;i++) {
for(j=0;j<3;j++)
m=m+a[i][j]*x[j];
m=m-x[i]*a[i][i];
y[i]=(b[i]-m)/a[i][i];
m=0;
}
i=0;
while(i<3) {
z=fabs(x[i]-y[i]);
if(z>e)
break;
i++;
}
if(i!=3) {
for(i=0;i<3;i++)
x[i]=y[i];
k++;
}
else if(i==3)
break;
}
printf("%f\n%f\n%f\n",y[0],y[1],y[2]);
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值