Wolfram mathematica 获得x作为mathematica中Re[x]的结果

Wolfram mathematica 获得x作为mathematica中Re[x]的结果,wolfram-mathematica,Wolfram Mathematica,我试图获得一个运算结果的实部,该运算涉及一个未定义的变量(比如x) 如果我知道x永远不会是一个复数,那么当我执行Re[x]时,如何让Mathematica返回x?我想这包括告诉Mathematica,x是一个真实的,但我不知道怎么做 在我的例子中,我想要实部的表达式比一个简单的变量更复杂,但概念将保持不变 一些例子: INPUT OUTPUT DESIRED RESULT ----- ------ -------

我试图获得一个运算结果的实部,该运算涉及一个未定义的变量(比如
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
使用。它假设变量是实的,除非您另有说明。例如:

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

例如,您可以使用输入
Simplify[Re[x],x\[Element]Reals]
,它将
x
作为输出。

还有两种可能性:

Assuming[x \[Element] Reals, Refine[Re[x]]]

Refine[Re[x], x \[Element] Reals]

两者都返回
x

有时为符号定义
UpValues
会很有用。这远远不够强大,但它仍然可以处理许多情况

Re[x] ^= x;
Im[x] ^= 0;

Re[x]
Re[1]
Re[1 + x + I] 
Re[1 + x*I]
x

一,

1+x

一,

Re[Sin[x]
的计算结果并不符合您的要求,但
FullSimplify
使用的一种转换将其置于触发
Re[x]
的形式:

Re[Sin[x]] // FullSimplify

如果您想一直保存键入ComplexExpand,可以执行$Post=ComplexExpand;首先,然后{Re[x],Re[Sin[x]],Re[1+x+I],Re[1+x*I]}计算为{x,Sin[x],1+x,1}@Rolf True和handy,我同意。虽然通常情况下,我会尽量避免使用
$Pre
$Post
,因为很容易忘记它们,并且会得到意想不到的结果。
Sin[x]