• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fortran 固有値を求めるプログラム)

fortran固有値を求めるプログラム

このQ&Aのポイント
  • 2x2の実行列の固有値を求めるモジュール関数の中で、d > 0 のときに出てくる sign(sqrt(d), -b) の値が示す意味と eval(2) = cmplx(c/e,0.0d0) でなぜ c/eの値が入るのかがわかりません。
  • 質問者は、fortranのプログラムで2x2の実行列の固有値を求めるモジュール関数を作成しています。
  • しかし、d > 0 の場合における sign(sqrt(d), -b) の意味や eval(2) = cmplx(c/e,0.0d0) の c/e の値について理解していません。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

> sign(sqrt(d), -b)の値が示す意味 これは2次方程式の判別式が正のときです。 このとき-b+sqrt(d)と-b-sqrt(d)のどちらも求める解ですが, -b+sqrt(d)と-b-sqrt(d)のどちらが絶対値が大きいかを考えてください。 -bが正なら-b+sqrt(d)の絶対値が大きく,-bが負なら-b-sqrt(d)の絶対値が大きくことが分かるでしょう。 だから絶対値の大きい方を第1の解としています。 > eval(2) = cmplx(c/e,0.0d0) でなぜ c/eの値が入るのか 第2の解は,第1の解eが分かっていれば簡単です。2つの解の積が定数項のcですね。だからc/eが第2の解になります。 なぜこのように解の絶対値によって解の順序を決めているかと言えば,計算精度を高めるためです。 例えば a(1,1:2) = (/1.0d15,1.0d15+1.0d0/) a(2,1:2) = (/1.0d0,1.0d0/) でこのような処理をした場合としない場合を比較してください。

528612
質問者

お礼

なるほど、sign(sqrt(d),-b)の値の示す意味理解できました。絶対値の大きい方を第1解にしてるんですね。 それと、c/eの計算の意味も納得しました。普段あまりそのような解の求め方に馴染みがなかったのでわかってませんでした。ありがとうございました。