• ベストアンサー

マルチシフトQR法

固有値を求めるマルチシフトQR法について詳しい方いらっしゃいますか? このプログラムを作ってますが、ハウスホルダー変換で0に限りなく近い値で割るという処理に出くわし、それが原因で収束しません。もし何か情報があったら教えてください

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 もしこれが原因でなかったら、私にはわかりません。

関連するQ&A