|
10.高斯塞德尔
C/C++ code
#include<math.h>
#include<stdio.h>
#define N 20
#define M 99
float a[N][N];
float b[N];
int main()
{ int i,j,k,n;
float sum,no,d,s,x[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 b,i=0…%d:\n",n-1);
for(i=0;i<n;i++) scanf("%f",&b);
for(i=0;i<n;i++) x=0;
k=0;
printf("\nk=%dx=",k);
for(i=0;i<n;i++) printf("%12.8f",x);
do
{ k++;
if(k>M){printf("\nError!\n”);getch();}
break;
}
no=0.0;
for(i=0;i<n;i++)
{ s=x;
sum=0.0;
for(j=0;j<n;j++)
if (j!=i) sum=sum+a[j]*x[j];
x=(b-sum)/a;
d=fabs(x-s);
if (no<d) no=d;
}
printf("\nk=%2dx=",k);
for(i=0;i<n;i++) printf("%f",x);
}
while (no>=0.1e-6);
if(no<0.1e-6)
{ printf("\n\n answer=\n");
printf("\nk=%d",k);
for (i=0;i<n;i++)
printf("\n x[%d]=%12.8f",i,x);
}
getch();
}
关于本帖内容欢迎大家踊跃讨论,与在下交流!
|