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

そして、一般的に、数学が1つの式が別の式よりも単純であると判断する方法は?簡略化プロセスにパーソナライズされたルールを追加する方法はありますか?たとえば、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 に答える