我选择第一行并将每个元素乘以其辅因子,但在某些情况下,该方法返回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;
}