入力行列は次のようになります。
[ 1 2 4 ]
[ 4 5 6 ]
[ 7 8 9 ]
(マット1)
Wolfram Alpha は、逆行列があることを確認しています。を使用matrix.i()
すると (高速反転を使用することを意味します)、次のほぼ正しい結果が得られます。
[ 1.0000 -4.6667 2.6667 ]
[ -1.0000 6.3333 -3.3333 ]
[ 1.0000 -2.0000 1.0000 ]
(マット2)
しかし、書き込みによって低速モードをオンにするmatrix.i(true)
と、logic_error
. そうする理由はありますか?
オンにしようとした理由は、逆行列に次のベクトルを掛けることです。
[ 15 ]
[ 24 ]
[ 35 ]
(マット3)
の間違った答えをもたらす
[ -3.6667 ]
[ 20.3333 ]
[ 2.0000 ]
(マット4)
this であるべきとき、または
[ -3.6667 ]
[ 5.3333 ]
[ 2.0000 ]
(マット5)
乗算の直前にチェックすると、入力(mat3)が正しいことが確認され、高速逆行列が出力として正しくない行列を作成したと考えられました(mat5 ではなく mat4)。
……そういえば高速逆行列は正しいし、正しくない訳がない……これは困った。
主な質問は、上に書いたように、
何らかの理由matrix.i(true)
で論理エラーが発生しますが、そうではありmatrix.i()
ませんか?