数学建模社区-数学中国

标题: 重要的算法C语言实现源代码7 [打印本页]

作者: 青年梦想家    时间: 2015-8-28 16:46
标题: 重要的算法C语言实现源代码7
7.雅克比迭代,求解方程近似解

C/C++ code
#include <stdio.h>
#include <math.h>
#define N 20
#define MAX 100
#define e 0.00001
int main()
{ int n;
int i,j,k;
float t;
float a[N][N],b[N][N],c[N],g[N],x[N],h[N];
printf("\nInput dim of n:");   scanf("%d",&n);
if(n>N)
{ printf("Faild! Check if 0<n<N!\n"); getch(); return 1; }
if(n<=0)
{printf("Faild! Check if 0<n<N!\n"); getch(); return 1;}
printf("Input a[i,j],i,j=0…%d:\n",n-1);
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   scanf("%f",&a[j]);
printf("Input c,i=0…%d:\n",n-1);
for(i=0;i<n;i++)
scanf("%f",&c);
for(i=0;i<n;i++)
   for(j=0;j<n;j++)
   { b[j]=-a[j]/a;   g=c/a; }
  for(i=0;i<MAX;i++)
   { for(j=0;j<n;j++)
     h[j]=g[j];
     { for(k=0;k<n;k++)
       { if(j==k) continue; h[j]+=b[j][k]*x[k]; }
     }
     t=0;
     for(j=0;j<n;j++)
     if(t<fabs(h[j]-x[j])) t=fabs(h[j]-x[j]);
     for(j=0;j<n;j++)
     x[j]=h[j];
     if(t<e)
     { printf("x_i=\n");
       for(i=0;i<n;i++)     
printf("x[%d]=%f\n",i,x);
       getch();
       return 0;
     }
     printf("after %d repeat , return\n",MAX);
     getch();
     return 1;
   }
   getch();
}



关于本帖内容欢迎大家踊跃讨论,与在下交流!






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5