⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jacobi.c

📁 此代码是数值分析中的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 + -