📄 jacobi.c
字号:
#include <stdio.h>
#include <math.h>
Jacobidiedai(int n, double *a, double *b,double *x)
{
int i,j;
double *x0,m=0,eps;
x0= (double *) malloc(n*sizeof(double));
for(i=0;i<n;i++)
x0[i]=x[i];
while(1)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
m+=a[i*n+j]*x0[j];
m-=a[i*n+i]*x0[i];
x[i]=(b[i]-m)/a[i*n+i];
m=0;
}
for(i=1;i<n;i++)
{
eps=fabs(x[0]-x0[0]);
if(eps<fabs(x[i]-x0[i]))
eps=fabs(x[i]-x0[i]);
}
if(eps<1e-3) return 1;
for(i=0;i<n;i++)
x0[i]=x[i];
}
free(x0);
}
void main()
{
int i,j,n;
double *a;
double *b;
double *x;
printf("请输入方程个数 n\n");
scanf("%d",&n);
a = (double *) malloc(sizeof(double) * n*n);
b = (double *) malloc(sizeof(double) * n);
x = (double *) malloc(sizeof(double) * n);
printf("请输入方程序数 a[j][i]\n");
for (i=0;i<n*n;i++) scanf("%lf",&a[i]);
printf("请输入 b[j]\n");
for (j=0;j<n;j++) scanf("%lf",&b[j]);
(void) Jacobidiedai(n,a,b,x);
for(i=0;i<n;i++) printf("x[%d]=%f\n",i,x[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -