我已經做了高斯 - 賽德爾方法,它正在爲所有的輸入,除了下面的公式編程:高斯賽德爾方法不工作的特定的輸入
1.876 x1+2.985 x2-11.620 x3=-0.972
12.214 x1+2.367 x2 +3.672 x3=7.814
2.412 x1+9.879 x2 +1.564 x3 =4.890
當我與該輸入運行,有「浮點溢出」是一個運行時錯誤它工作正常,如果我使用整數input.My代碼如下:
//高斯 - 賽德爾迭代
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define e 0.001
void main() {
int i,j,n,count;
double a[10][10],x[10];
double sum,temp,error,big;
printf("Enter the number of equations: ");
scanf("%d",&n) ;
printf("Enter the co-efficients of the equations: \n");
for(i=0;i<n;i++) {
for(j=0;j<n+1;j++) {
printf("a[%d][%d]= ",i,j);
scanf("%lf",&a[i][j]);
}
}
for(i=0;i<n;i++)
x[i]=0;
count=1;
do {
big=0;
for(i=0;i<n;i++) {
sum=0;
for(j=0;j<n;j++) {
if(j!=i) {
sum = sum+a[i][j]*x[j];
}
}
temp = (a[i][n]-sum)/a[i][i];
error = fabs((x[i]-temp)/temp);
if(error>big) {
big=error;
}
x[i]=temp;
printf("%d\tx[%d] =%lf",count,i,x[i]);
}
printf("\n");
count++;
}while(big>=e);
printf("\n\nconverges to solution");
for(i=0;i<n;i++) {
printf("\nx[%d]=%lf",i,x[i]);
}
getch();
}//end
我找不到WHA t將被修改。
你試過調試過嗎?你看到的很可能是由於除以0而導致的錯誤。 – 2013-05-07 13:18:21
由於目前格式化,所以不可能使這個代碼的首部或尾部。我建議你整理它並通過@IvayloStrandjev建議的調試器來運行它。 – Vicky 2013-05-07 13:24:56
對不起,我想我剛纔給的答案是胡說,讓我再想一想。 – James 2013-05-07 14:06:38