Mathematica FullSimplify трусливый отказ полностью оценить реальные части комплексного числа? - PullRequest
2 голосов
/ 12 марта 2011

Мне интересно, есть ли другая команда, отличная от FullSimplify, чтобы сказать mathematica выполнить запрошенное вычисление. Вот три варианта попытки упрощения

FullSimplify[Re[                       (-I + k Rr)] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]
FullSimplify[Re[E^(I (omega t - k Rr))            ] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]
FullSimplify[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta], Element[{k, Rr, Ttheta, t, omega}, Reals]]

получаю соответственно:

k Rr Cos[Ttheta]
Cos[k Rr - omega t] Cos[Ttheta]

                I (-k Rr + omega t)
Cos[Ttheta] Re[E                    (-I + k Rr)]

Без экспоненты реальные части оцениваются. Без сложного множителя, умножающего экспоненту, оцениваются реальные части. Если оба умножены, вход возвращается как выход?

Я попробовал модификатор // Timings, и это не потому, что выражение слишком сложное (что хорошо, так как я могу сделать это в своей голове, но это было подмножеством более крупного тестового выражения, которое также не удавалось ).

Ответы [ 3 ]

5 голосов
/ 12 марта 2011

Поскольку ваши переменные объявлены Reals вы пробовали ComplexExpand?

Чтобы выкупить мою медленную публикацию здесь, есть другой подход: скажите Mathematica, что вы не хотите Complex в результате через ComplexityFunction

FullSimplify[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta], 
 Element[{k, Rr, Ttheta, t, omega}, Reals], 
 ComplexityFunction -> (1 - Boole@FreeQ[#, Complex] &)]
3 голосов
/ 12 марта 2011

ComplexExpand, возможно?

ComplexExpand[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta]]
0 голосов
/ 14 апреля 2014

Это проблема, с которой я давно сталкиваюсь с Mathematica. Объединяя предложения, я создал новую функцию, которую можно использовать вместо Simplify [] при работе со сложными аргументами. У меня пока работает, есть еще предложения?

CSimplify[in_] := FullSimplify[in // ComplexExpand, ComplexityFunction -> (1 - Boole@FreeQ[#, Complex] &)]

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