行演算を使って正方行列の行列式を計算しようとしています。 私はこのコードに遭遇しましたが、実際の動作は分かりません。行列の行列式を計算する
subi
とsubj
は何をしますか?行操作を使用していますか?
このコードの背景にある論理は何ですか?
int c, subi, i, j, subj;
double submat[10][10],d=0;
if (n == 2) {
return((mat[0][0] * mat[1][1]) - (mat[1][0] * mat[0][1]));
}
else {
for (c = 0; c < n; c++) {
subi = 0;
for (int i = 1; i < n; i++) {
subj = 0;
for (j = 0; j < n; j++) {
if (j == c)
continue;
submat[subi][subj] = mat[i][j];
subj++;
}
subi++;
}
d = d + (pow(-1, c)*mat[0][c] * determinant(n - 1, submat));
}
}
return d;
'double determinant(int n、double mat [10] [10]) 'のような関数シグネチャがありません。 –
[行列の決定子](http://www.geeksforgeeks。 org /行列の行列式/)はかなり良いと説明されています。 submatは、行がsubiで列がsubjである一時的な行列です。 – Skywrath