NxN行列 C# の行列式をどのように計算しますか?
8895 次
4 に答える
8
OP は、4x4 マトリックスについて具体的に尋ねる別の質問を投稿しましたが、この質問の正確な複製としてクローズされました。一般的な解決策を探しているのではなく、代わりに 4x4 行列のみに制約されている場合は、この見苦しいが実証済みのコードを使用できます。
public double GetDeterminant() {
var m = _values;
return
m[12] * m[9] * m[6] * m[3] - m[8] * m[13] * m[6] * m[3] -
m[12] * m[5] * m[10] * m[3] + m[4] * m[13] * m[10] * m[3] +
m[8] * m[5] * m[14] * m[3] - m[4] * m[9] * m[14] * m[3] -
m[12] * m[9] * m[2] * m[7] + m[8] * m[13] * m[2] * m[7] +
m[12] * m[1] * m[10] * m[7] - m[0] * m[13] * m[10] * m[7] -
m[8] * m[1] * m[14] * m[7] + m[0] * m[9] * m[14] * m[7] +
m[12] * m[5] * m[2] * m[11] - m[4] * m[13] * m[2] * m[11] -
m[12] * m[1] * m[6] * m[11] + m[0] * m[13] * m[6] * m[11] +
m[4] * m[1] * m[14] * m[11] - m[0] * m[5] * m[14] * m[11] -
m[8] * m[5] * m[2] * m[15] + m[4] * m[9] * m[2] * m[15] +
m[8] * m[1] * m[6] * m[15] - m[0] * m[9] * m[6] * m[15] -
m[4] * m[1] * m[10] * m[15] + m[0] * m[5] * m[10] * m[15];
}
次の順序で、ベクトル データを 16 要素の配列_values
(double
この場合は of ですが、これも機能します)に格納することを前提としています。float
0, 1, 2, 3,
4, 5, 6, 7,
8, 9, 10, 11,
12, 13, 14, 15
于 2010-06-05T15:36:00.263 に答える
4
上三角形式に縮小してから、位置i==jのすべての値を乗算するネストされたループを作成します。そこにあります。
于 2010-05-27T16:09:59.077 に答える
1
標準的な方法はLU 分解です。自分でコーディングする代わりに、ライブラリを使用したい場合があります。C#についてはわかりませんが、40年の標準はLAPACKです。
于 2010-06-29T12:34:53.847 に答える