我想知道是否有一个与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修饰符,这不是因为表达式过于复杂(这很好,因为我可以在我脑海中做到这一点,但这是一个较大的测试表达式的子集,也是失败的)。
答案 0 :(得分:5)
由于您的变量已声明Reals
,您是否尝试过ComplexExpand
?
要在此处兑换我的慢发帖是另一种方法:通过Complex
告诉Mathematica你不希望ComplexityFunction
成为结果{/ 1}
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] &)]
答案 1 :(得分:3)
ComplexExpand,也许?
ComplexExpand[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta]]
答案 2 :(得分:0)
这是我长期以来在Mathematica上遇到的一个问题,结合这里的建议我创建了一个新函数,可以在处理复杂参数时用来代替Simplify []。到目前为止对我有用,还有什么进一步的建议吗?
CSimplify[in_] :=
FullSimplify[in // ComplexExpand,
ComplexityFunction -> (1 - Boole@FreeQ[#, Complex] &)]