在mathematica中获得Re [x]的结果

时间:2012-01-04 21:40:17

标签: wolfram-mathematica

我正在尝试获取涉及未定义变量的操作结果的真实部分(假设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

4 个答案:

答案 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]