Получите x как результат для Re [x] в mathematica - PullRequest
6 голосов
/ 05 января 2012

Я пытаюсь получить действительную часть результата операции, которая включает неопределенную переменную (скажем, x).

Как я могу заставить Mathematica вернуть x, когда я выполню Re[x], если я знаю, что 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 ]

13 голосов
/ 05 января 2012

Вы можете использовать, например, вход Simplify[Re[x], x \[Element] Reals], который выдаст x в качестве вывода.

13 голосов
/ 05 января 2012

Использование 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
5 голосов
/ 06 января 2012

Еще две возможности:

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

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

Оба возвращают x.

1 голос
/ 13 января 2012

Иногда полезно определить UpValues для символа. Это далеко не надежно, но, тем не менее, может справиться с рядом случаев.

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

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

х

1

1 + х

1

Re[Sin[x]] оценивается не так, как вы хотите, но одно из преобразований, используемых FullSimplify, помещает его в форму, которая вызывает Re[x]:

Re[Sin[x]] // FullSimplify
Sin[x]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...