📄 jacobi.c
字号:
#define N 3
#define M 100
#include<stdio.h>
#include<math.h>
main()
{
int i,j,k,h;
double a[N][N]={{1,2,-2},{1,1,1},{2,2,1}},b[N]={1,1,1},t[N]={0,0,0},x[N],e=0.01,s;
double f(double t[N],double x[N]);
/*
printf("e=");
scanf("%f",&e);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
printf("\n");
}
for(i=0;i<N;i++)
{
printf("b[%d]=",i);
scanf("%f",&b[i]);
printf("\n");
}
for(i=0;i<N;i++)
{
printf("t[%d]=",i);
scanf("%f",&t[i]);
printf("\n");
}
*/
for(i=0;i<N;i++)
x[i]=t[i];
for(k=0;k<M;k++)
{
for(i=0;i<N;i++)
{
for(j=0,s=0;j<N;j++)
{
if(j!=i)
s=s+a[i][j]*x[j];
else
continue;
}
t[i]=(b[i]-s)/a[i][i];
}
if(f(t,x)<e)
{
for(i=0;i<N;i++)
printf("t[%d]=%f\n",i,t[i]);
h=1;
break;
}
else
{
h=0;
for(i=0;i<N;i++)
x[i]=t[i];
}
}
printf("k=%d\n",k);
if(h==0)
printf("超过最大迭代次数\n");
}
double f(double t[N],double x[N])
{
int i;
float m=fabs(x[0]-t[0]);
for(i=1;i<N;i++)
{
if(m<fabs(x[i]-t[i]))
m=fabs(x[i]-t[i]);
else continue;
}
return(m);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -