- ベストアンサー
マルチシフトQR法
固有値を求めるマルチシフトQR法について詳しい方いらっしゃいますか? このプログラムを作ってますが、ハウスホルダー変換で0に限りなく近い値で割るという処理に出くわし、それが原因で収束しません。もし何か情報があったら教えてください
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
私はマルチシフトQR法について全く知らないので、 見当違いの回答かもしれませんが、お許し下さい。 数値計算でプログラミングするときに重要なのは、 本当は0なのに、丸め誤差のために0に限りなく (厳密には「限りなく」ではありませんが、 そう言いたくなってしまうくらい)近い値になることがある、 ということです。 ですから、浮動小数点型の変数 x が0であるかどうかを判定するには、 x = 0 ではなく、-0.000001 ≦ x ≦ 0.000001 にする必要があります。 なお、0.000001 という値は、精度によって違うでしょうから、 適切な値にして下さい。(この値を e とおくことにします。) 数値を比較する場合は、以下の方法にしなければなりません。 0であるかどうか (-e ≦ x) AND (x ≦ e) 0以上かどうか x ≧ -e 0以下かどうか x ≦ e 正かどうか x > e 負かどうか x < -e もしこれが原因でなかったら、私にはわかりません。