2013-11-27 30 views
0

首先對所有C.I即時通訊新的嘗試得到的n×n矩陣的行列式與此代碼無法得到確切的結果行列式

double Determinant(double *A, int N){ 
int i; 
int j; 
int k; 
double y[100][100]; 
double x[100][100]; 
int sign = 1; 
double result = 0; 
int arrayRow; 
int arrayColumn; 

for(i = 0 ; i < N ; i++){ 
    for(j = 0; j < N ;j++){ 
     x[i][j] = A[(N*i)+j];}} 

if(N == 2){ 
    result =x[0][0]*x[1][1] - x[0][1]*x[1][0]; 
    } 
else 
    { 
    for(i = 0; i < N ; i++){ 
     arrayRow = 0; 
     arrayColumn = 0; 
     for(j = 1 ;j < N; j++){ 
      for(k = 0; k < N ; k++){ 
       if(k == i){ 
       continue;} 
       y[arrayRow][arrayColumn] =x[j][k]; 
       arrayColumn++; 
      } 
      arrayColumn = 0; 
      arrayRow++; 
     } 



     result += sign*x[0][i]*Determinant(*y,N-1); 
     sign = -sign;} 
} 
printf("%d",result); 
return result; 
} /* end-Determinant */ 

,但它顯示像-85899一件很意外的數...這是測試代碼和行列式不會返回正確的結果。

int main(){ 
double A[] = {5, 2, 4, 2, 4, 6, 1, 2, 8}; 
int a ; 

if(Determinant(A, 3) == 80){ 
    a = Determinant(A,3); 
    printf("%d",a);}; 
    getchar(); 
} /* end-main */ 

回答