📄 5.jacobi.c
字号:
#include<stdio.h>
#include<math.h>
#define n 3
void main()
{
int m=0; //用m控制叠代的次数
int i,j;
double a[n][n],b[n];
double x1[n],x0[n],dis[n];
double sum,max;
printf("Please input a[n][n]:\n");
for(i=0;i<=n-1;i++)
{
for(j=0;j<=n-1;j++)
{
scanf("%lf",&a[i][j]);
}
}
printf("Please input b[n]:\n");
for(i=0;i<=n-1;i++)
{
scanf("%lf",&b[i]);
}
printf("input x0[n]:\n");
for(i=0;i<=n-1;i++)
{
scanf("%lf",&x0[i]);
} //输入a[n][n],b[n]以及初值x0[n]
while(m<100)
{
for(i=0;i<=n-1;i++)
{
sum=0;
for(j=0;j<=n-1;j++)
{
sum+=a[i][j]*x0[j];
}
sum-=a[i][i]*x0[i];
x1[i]=((b[i]-sum)/a[i][i]);
}
m+=1;
for(i=0;i<=n-1;i++)
{
dis[i]=fabs(x1[i]-x0[i]);
}
max=dis[0];
for(i=0;i<=n-1;i++)
{
if(max<dis[i])
{
max=dis[i];
}
}
if(max<=1.0e-5)
{
break;
}
for(i=0;i<=n;i++)
{
x0[i]=x1[i];
}
printf("The number of m is %d.",m);
printf("Solve is:\n");
for(i=0;i<=n-1;i++)
{
printf("x%d=%lf\n",i,x1[i]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -