如何检查表达式是否包含复杂表达式?

eac*_*eau 3 math wolfram-mathematica

有没有办法检查表达式是否包含复杂的表达式/虚数?

文档说您无法检查表达式是否包含,I因为它的解释方式.我也尝试过ImaginaryQ[expr_] := expr != Conjugate[expr]Simplify[expr] =!= Simplify[Conjugate[expr]],但不会产生准确的结果.我也试过使用MemberQ [expr,Complex],但这似乎也不起作用.

我在笔记本上贴了一些例子:http: //www.eacousineau.com/download/complex-test.nb

abc*_*bcd 6

怎么样

ImaginaryQ[expr_] := ! FreeQ[expr, _Complex]
Run Code Online (Sandbox Code Playgroud)

在两个例子中使用它:

imExpr = a Sin[a + 2 I];
ImaginaryQ@imExpr
(* True *)

reExpr = a Sin[a^2 + a];
ImaginaryQ@reExpr
(* False *)
Run Code Online (Sandbox Code Playgroud)