最初の行を選択し、各要素に余因子を掛けますが、場合によってはメソッドが を返しnan
ます。例えば、
1 0 0 1
0 2 0 0
0 0 3 0
0 0 0 4
この場合、メソッドは を返しますnan
。
誰かが私が間違ったことを知っていますか?
getDet3
3x3 行列の行列式を返し、正常に動作します。
-(double) getDet4:(double[4][4])mat {
double det = 0;
double small[3][3];
int i, j, k;
int i_ = 1, j_;
for ( i=0; i<4; i++ ){
if (mat[0][i] == 0) continue;
// get the small matrix here
for ( j=0; j<3; j++ ){
j_ = 0;
for ( k=0; k<3; k++ ){
if ( i == j_ ) j_++;
small[j][k] = mat[i_][j_];
j_++;
}
i_++;
}
det += mat[0][i] * [self getDet3:small] * pow(-1, i+j);
}
return det;
}