• ベストアンサー

根号の中が負の時の計算機での正負判断は?

コンピュータで数値計算(言語はFortranやC)をする時、次のような場合はどう扱われるのでしょうか。 例1.sqrt(-4)の解は±2iの二つあるが、コンピュータではどうなる? 例2.a>b>0の時、sqrt(b-a)の解の正負符号はどうなる。 最初の値の符号に合わせられると聞いたことがあるが、本当ですか。もしそうならsqrt(b-a)=+・・・ 、sqrt(-a+b)=-・・・ となるのでしょうか。

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

  • ベストアンサー
  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.3

言語依存. もっというと,同じ言語であっても ライブラリ依存でしょう. たとえば,Perlだと use strict; use warnings; use Math::Complex; print sqrt(-4); これでしっかり,2i と答えがでてくるけど, Math::Complexを使わないと当然エラー

pipiruru11
質問者

補足

No1,No2の方へ、まとめてお礼申し上げます。 以下の例題で簡単なプログラムをFORTRANでつくり、実際に試した結果を報告します。csqrtは複素数の平方根をとる組み込み関数です。 a=-6.0, b=2.0 x=csqrt(a+b), y=csqrt(b+a) , xおよびyの結果はどちらも2iでした。 結論として私の使っている環境では、数学的な解である±2iのうち、 正の2iがアウトプットされるようです。応用として、負の解が必要な場合があるので今回の質問をしましたが、その点は自分で判断基準を ソフトに入れる必要があるようです。

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

No.1の者です。 計算不能と書いたのは、例えばC言語のsqrt関数に負数の引数を与えたときの話です。 複素数型の引数を許す関数(例えばcsqrt関数、実際にこういうのがあるかどうかはわかりません)を持つ処理系であれば、 -4の平方根として実部0、虚部±2iという結果を得ることができるでしょう。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> 例1.sqrt(-4)の解は±2iの二つあるが、コンピュータではどうなる? 計算不能です。

関連するQ&A