• ベストアンサー

Mathematicaでの連立方程式

MathmaticaでNSolveを用いて,連立方程式を解こうとしています. 得られた解が実数の場合,虚数の場合の2つでIf文による条件分岐を行いたいです. 例えば,  解が実数の時,値をファイルに出力する  解が虚数の時,値をファイルに出力しない このとき,解が実数であるか,虚数であるかをプログラムで判断するにはどうすれば良いでしょうか? 目視の場合は,iがあるか,ないかで判断できるのですが,プログラムとして実施する方法を教えて頂きたいです. よろしくお願い致します.

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

  • ベストアンサー
  • sanze_hui
  • ベストアンサー率100% (6/6)
回答No.1

いくつか書き方はありますが、aが実数かどうかを調べる場合は MatchQ[a, _Real]かElement[a, Reals]あたりが適当かと思います。 例) ans = x /. NSolve[x^3 == 1] → {-0.5 - 0.866025 I, -0.5 + 0.866025 I, 1.} MatchQ[#, _Real] & /@ ans → {False, False, True} Element[#, Reals] & /@ ans → {False, False, True} 虚部が0に非常に近いときに虚数と判定されたくない場合は、 Chopなどを用いてから判定してください。 なお、NSolveの第3引数にRealsを指定することで、 最初から解を実数領域に限定できます。 例) NSolve[x^3 == 1, x, Reals] → {{x -> 1.}}

参考URL:
http://reference.wolfram.com/language/tutorial/TypesOfNumbers.html
temo891
質問者

お礼

分かりやすいご回答をありがとうございました.

関連するQ&A