我正在尝试获取涉及未定义变量的操作结果的真实部分(假设x
)。
如果我知道x
永远不会是一个复数,我怎样才能在执行Re[x]
时让Mathematica返回x
?我认为这涉及告诉Mathematica x
是真实的,但我不知道如何。
在我的情况下,我想要实际部分的表达式比简单变量更复杂,但概念将保持不变。
一些例子:
INPUT OUTPUT DESIRED RESULT
----- ------ --------------
Re[x] Re[x] x
Re[1] 1 1
Re[Sin[x]] Re[Sin[x]] Sin[x]
Re[1+x+I] 1 + Re[x] 1+x
Re[1 + x*I] 1-Im[x] 1
答案 0 :(得分:13)
使用ComplexExpand
。除非另有说明,否则它假定变量是真实的。例如:
In[76]:= ComplexExpand[Re[x]]
Out[76]= x
In[77]:= ComplexExpand[Re[Sin[x]]]
Out[77]= Sin[x]
In[78]:= ComplexExpand[Re[1+x+I]]
Out[78]= 1+x
答案 1 :(得分:13)
您可以使用输入Simplify[Re[x], x \[Element] Reals]
作为输出{。}}。
答案 2 :(得分:5)
还有两种可能性:
Assuming[x \[Element] Reals, Refine[Re[x]]]
Refine[Re[x], x \[Element] Reals]
两者都返回x
。
答案 3 :(得分:1)
为符号定义UpValues
有时会很有用。这远非强大,但它可以处理许多情况。
Re[x] ^= x;
Im[x] ^= 0;
Re[x]
Re[1]
Re[1 + x + I]
Re[1 + x*I]
X
1
1 + x
1
Re[Sin[x]]
未根据需要进行评估,但FullSimplify
使用的转换之一确实将其置于触发Re[x]
的形式中:
Re[Sin[x]] // FullSimplify
Sin[x]