有没有办法简化这种共轭表达式:
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]))
我做错了吗?谢谢。
答案 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