- ベストアンサー
LU分解
LU分解するプログラムで求められる行列はなぜはじめの掛け算を行う前の行列に対して小さな誤差が生じるのでしょうか?(ちなみに値は整数です) LU分解自体誤差が出るものなのでしょうか? おしえてください
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
LU分解に限らず、Javaにも限らない、 コンピュータによる数値計算の一般的な問題として、 浮動小数点演算では精度の問題があります。 数学的には「1÷3×3」は「1」ですけど、 小数点演算では「1÷3」の時点で、0.3333333となって、これを3倍にしても0.9999999であり、1にはなりません。 (実際には、PC内部では10進数ではなく2進数ですが、上記の10進数での説明と問題の本質は同じです。) 「有理数演算ライブラリ」でも作って、浮動小数点数ではなく有理数で演算を行うようにすれば、 LU分解などについてはPC上でまったくの誤差なしに演算が可能です。