Wolfram mathematica mathematica完全简化拒绝完全计算复数的实部?
我想知道是否有一个不同于FullSimplify的命令来告诉mathematica进行所要求的计算。下面是简化尝试的三种变体Wolfram mathematica mathematica完全简化拒绝完全计算复数的实部?,wolfram-mathematica,Wolfram Mathematica,我想知道是否有一个不同于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
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修饰符,这并不是因为表达式太复杂(这是很好的,因为我可以在头脑中做这个,但这是一个更大的测试表达式的子集,它也失败了)。ComplexExpand,也许
ComplexExpand[Re[E^(I (omega t - k Rr)) (-I + k Rr)] Cos[Ttheta]]
由于变量声明为
Reals
,您是否尝试过ComplexExpand
为了弥补我在这里的慢贴,还有另一种方法:通过ComplexityFunction
告诉Mathematica您不希望结果中出现Complex
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] &)]
这是Mathematica长期以来一直存在的一个问题,结合这里的建议,我创建了一个新函数,在处理复杂参数时可以使用它来代替Simplify[]。到目前为止对我有效,还有什么建议吗
CSimplify[in_]:=
FullSimplify[in//ComplexExpand,
复杂性函数->(1-Boole@FreeQ[#,复杂]&)]
看起来在@Zabba和@closer上回答这个问题会更好。这是一个有效的Mathematica问题。请检查,因为你不是唯一的一个confused@belisarius,我的前提是,在数学网站上的人们可能比我们“软件类型”更多地使用mathematica。但是感谢你的链接,它确实澄清了为什么mathematica在这里如此混乱。@Zabba,这绝对是一个有趣的问题,然而这里提出的问题中有十分之九是编程问题,而这是一个复杂但非常有趣的用法ComplexityFunction@belisarius我想,任何经常想从Simplify中获得非常具体结果的人都应该建立一个这些结果的库。我倾向于喜欢一两个简单的函数,比如StringLength[…
,但是可以用ComplexityFunction
和TransformationFunctions
(+1)做更多的事情。也许你应该把你最喜欢的ComplexityFunction
发布在。