• ベストアンサー

マルチシフト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

  • QR法について

    QR法により,固有値を求めるプログラムを作っています. QR法でqjを求めるときに,rjjの逆数が必要ですが,rjj=0になったとき,うまく求めることができません. このような場合に,どうしたら解決できますか? ちなみに言語はC言語ですが,解決法さえいただければ自力で組むつもりです.「教育」の「数学」のカテゴリか迷いましたが・・・・

  • QR法を使った行列の固有値問題について

    行列の固有値と固有ベクトルを求めるプログラムをJavaで 作っています。そこで、アルゴリズムとしてQR法を用いて いるのですが、この方法では固有値のみを求めており、 固有ベクトルは求めていないことがわかりました。そこで、 QR法を用いつつ、固有ベクトルも同時に求める方法がありましたら、 教えて頂きたいと思います。宜しくお願いします。

  • 固有値問題

    現在、因子分析や主成分分析などを行うために対称行列の固有値及び固有ベクトルを求めるプログラムを作っています。 現在、ハウスホルダー法を用いて行列を3重対角化し、QR法にて固有値が求まるところまでは、できたのですが、この後の固有ベクトルを求める方法がわかりません。 文献などを調べておりますと、逆反復法を用いて固有ベクトルを求めれば良いとあるのですが、この逆反復法のアルゴリズムが良く分かりません。 また、この逆反復法以外で効率的に求める手法がありましたら、教えてください。 よろしくお願いします。

  • (非)対称行列の実固有値をすべて求めたい

    1000次元程度の行列の実固有値を数値的にすべて求めたいのですが、 いい方法はあるでしょうか? 行列に特に対称性は仮定しません。 通常はQR法+ハウスホルダー変換を使うと思います。 しかし、以下のページ http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap9/program94.c のコードで実行して見ましたが、虚数解を含むような場合には 計算が終了しないようです。

  • ニュートン・ラフソン法

    ルートについて、ニュートン・ラフソン法で解き、何回繰り返せば値が収束できるか確認するプログラムを作成するって課題がでたんですが、どんなことをすればいいのでしょうか? ニュートン・ラフソン法について調べたのですが、いまいち何をしていいか分からなかったので教えてください。

  • 熱伝導方程式を差分法で解くプログラム

    前回熱伝導方程式の差分法の解き方について質問させて頂いたものです。 https://sp.okwave.jp/qa/q9363032.html 回答ありがとうございました。おかげさまで差分法で解くプログラムを書くことができました。 書けたのは良いのですが、間違っている可能性が大きいです。 私の考えでは、安定性条件を満たしていれば dt,dxを小さくすればするほど、収束温度は変わらず計算精度が高くなっていくと思ったのですが、 私の書いたプログラムではdxdtの値を変えると収束温度まで変わってしまいます。 プログラムに関しても初心者なので説明が難しいのですが、やはり収束温度が値によって変わるということはプログラムがどこか間違っているということでしょうか。 度々すみませんが、回答いただけるとありがたいです。よろしくお願いいたします。

  • 行列の固有ベクトルの解法

    現在行列の固有値と固有ベクトルをもとめるプログラムを作成しています。 手順としては、入力行列をハウスホルダー法により三重対角行列に変換し、その後QR法で対角化を行い固有値を求めます。 固有ベクトルはLU分解を使用して固有値ごとに求めていこうと考えました。 現状固有値を求めるプログラムは作成できました(そして正しく求められていることも確認しました)。そして行列のLU分解を行うプログラムまで作成できたのですが、LU分解後の行列から固有ベクトルを求める方法がわかりません。 詳しく説明します Ax = λx を (A - Iλ)x = 0 として、この(A - Iλ)をLU分解しました。 すると式は LUx = 0 となり 最終的に Ux = 0 をとく問題になります。 ここで行列Uは上三角行列なので、1次の連立方程式を解くように、行列Uの右下の要素を使って計算を始めていくのですが、自分がなにか勘違いをしているのだと思うのですがこの方法で計算すると固有ベクトルが全て0になってしまいます。  行列U     x       0 | 2 3 4 5 | |x1|   =  |0| | 0 4 2 9 | |x2|   =  |0| | 0 0 7 5 | |x3|   =  |0| | 0 0 0 8 | |x4|   =  |0| このような図式になり、固有ベクトルであるxを求めていくのですが、x4から順にもとめても0にしかならないんです。 下記のサイトを参考に学んでいたんですが、この部分が分からずにいます。 http://hooktail.org/computer/index.php?KL%C5%B8%B3%AB2 どこを勘違いしているんでしょうか? アドバイスをお願いします。  

  • QRコード作成プログラム

    QRコード作成プログラムを作りたいと思っています。 ですので参考になりそうなサイトを探してみつけたました。 http://www.swetake.com/qr/qr1.html ですのでとりあえず読んで理解しようと思ったのですが、 よくわからないところがあります。 わかる方がおれば教えてもらえないでしょうか? 2.2.4 終端パターンにて、 「最後に終端パターンとして0000を付加します。 ただしデータビット列がシンボル容量を満たしている場合は必要ありません。」のシンボル容量ってなんでしょう? 2.5.3 マスクの評価にある表ですが、まったく理解できません。 あと、そこにある「筆者注:マスク評価の問題」ですが、処理としては正しいのでしょうか?

  • 16進法での表示

    ある数値を入力して、16進法へ変換するプログラムを作成したく思っています。 "%x"を使用してprintfで変換というのは分かるのですが、いざ記述するとそのままの値で表示されたりしてうまくいきません。 どのように作成すればよいでしょうか? ご教示よろしくお願いします。

  • マルチ商法を法テラスでは、注意勘気をされていますね

    マルチ商法は、法テラスでは注意勘気をされていますね マルチ商法のトラブルや苦情件数など、法テラスの取り扱い事例でどのくらいの割合でこの件は、取り扱われているのでしょうか?全て情報公開の元の活動と思いますが、その情報は、閲覧できるのでしょうか?割合など知っていらっしゃる方いますか?どこに問い合わせて行けばいいのでしょうか 沢山マルチ商品を買わされている認知症のお年寄りが沢山いらっしゃいます。ひどい人など、商品に埋もれて生活されているのです・・・なんらかの対策は必要となってきているように思うのですが・・・ いつかは、私達の生活も欲に脅かされる事となる・・・と感じています。 売っている人は、マルチ商法は、正当な商売だからあなたがたには、関係ない!!と怒鳴られる事が多いのです・・・・ちなみに私は、ヘルパーです。