雅可比迭代法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
雅可比迭代法
雅可比迭代法
班级:计算062 姓名:王保翔 3060811028 目的意义:设方程组Ax=b的系数矩阵A 非奇异而且aii
裂为A=D+L+U,可以使计算简便。其中D
00...an2
............
,将
A分
,
a120 0
............
思想:A=D+L+U,其中D
00...an2
............
n
,
a120 0
............
1aii
将方程组
j
乘以,得到等价的方程组
n
,i=1,2,…n
算法:
Step1:给定一组x,即初值。 Step2:用for循环计算:
n
x[k+1]=(b[i]-
Step3:当abs(x[k+1]-x[k])
程序:
#include #define p 0.1 #define N 5 void main() {
int i,j,k,s,n;
double x[N],a[N][N],b[N],q[N],c[N],d[N]; double t,u;
printf("Input n:");
scanf("%d",&n); for(i=0;i
printf("Input x[%d],b[%d]:",i,i); scanf("%lf,%lf",&x[i],&b[i]); } for(i=0;i
printf("Input a[%d][%d]:",i,j); scanf("%lf",&a[i][j]); }
for(i=0;i
printf("a=%lf\n",a[i][j]); for(k=0; ;k++) { t=0;
for(s=0;s
for(i=0;i
d[i]=x[i];
for(j=0;j
if(j!=i)
u=u+a[i][j]*d[j]; else continue; }
printf("u=%lf\n",u); x[i]=(b[i]-u)/a[i][i]; q[i]=x[i]-d[i];
printf("x[%d]=%lf\n",i,x[i]); }
for(i=0;i
if(q[i]>=0) c[i]=q[i];
else c[i]=-q[i]; t=t+c[i]; }
if(t
}
printf("k=%d\n",k); for(i=0;i
printf("x[%d]=%lf\n",i,x[i]);
}算例及运算结果:
分析:输入初始向量和矩阵为数经过k次迭代后输出x的值,结果正确可靠。参考文献
[1]刑志栋,矩阵数值分析,陕西:陕西科学技术出版社, 2019。 [2]谭浩强,C 语言程序设计,北京:清华大学出版社,2019。
[3]翁惠玉,c语言程序设计思想与方法,北京:人民邮电出版社,2019