Mathematica简化了共轭表达

时间:2012-11-12 02:26:44

标签: wolfram-mathematica simplification

有没有办法简化这种共轭表达式:

expr=d12*Conjugate[C1]*C2 + d12*Conjugate[C2]*C1 + d13*Conjugate[C1]*C3 + d13*Conjugate[C3]*C1

成像:

2 d12 (Re[C1*Conjugate[C2]]) + 2 d13 (Re[C1*Conjugate[C3]])

一般来说,Mathematica如何确定一个表达式比另一个更简单?有没有办法在其简化过程中添加一些个性化规则?例如,我们可以告诉Mathematica我们更喜欢2*Re[C1*Conjugate[C2]]而不是C1*Conjugate[C2]+C2*Conjugate[C1]吗?感谢。

更新

感谢您的建议。 ComplexExpand可以将其扩展为实部和虚部,但似乎仍然无法简化为首选形式:

In: Simplify[ComplexExpand[expr, {C1, C2, C3}]]
Out: 2 (Im[C1] (d12 Im[C2] + d13 Im[C3]) + Re[C1] (d12 Re[C2] + d13 Re[C3]))

我尝试过像这样的TransformationFunctions函数,但它不起作用:

In: t = # /. (Im[C1] Im[C2] + Re[C1] Re[C2] -> 1/2 Re[C1\[Conjugate] C2]) &;    
In: Simplify[ComplexExpand[expr, {C1, C2, C3}], TransformationFunctions -> {Automatic, t}]
Out: 2 (Im[C1] (d12 Im[C2] + d13 Im[C3]) + Re[C1] (d12 Re[C2] + d13 Re[C3]))

我做错了吗?谢谢。

1 个答案:

答案 0 :(得分:3)

实际上它简化为较小的表达

expr=d12*Conjugate[C1]*C2+d12*Conjugate[C2]*C1+d13*Conjugate[C1]*C3 + 
     d13*Conjugate[C3]*C1;
Simplify[ComplexExpand[expr]]

给出

2 C1 (C2 d12 + C3 d13)

Mathematica如何确定一个表达式比另一个更简单?有没有办法在其简化过程中添加一些个性化规则

您可以使用ComplexityFunction选项Simplify。默认值为Automatic,我认为这会使用Leaf计数来决定。您还可以使用TransformationFunctions Simplify选项来提供自己的功能。见帮助。

http://reference.wolfram.com/mathematica/ref/ComplexityFunction.html

http://reference.wolfram.com/mathematica/ref/TransformationFunctions.html

http://reference.wolfram.com/mathematica/ref/LeafCount.html