雅可比迭代法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档