1

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

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]))

我做错了吗?谢谢。

4

1 回答 1

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,我认为这使用叶子计数来决定。您还可以使用该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

于 2012-11-12T07:06:54.927 回答