2013-02-03 55 views
0

有一天,我想简化下面的表达式:简化复杂的表达式

a Conjugate[a]//FullSimplify 

太好了!我们收到的答案是Abs [a]^2。 现在,我想是这样的:

a b Conjugate[a]//FullSimplify (*a Conjugate[a] b will return the same output*) 

很遗憾,没有简化。 LeafCount更喜欢Abs [a]^2 b的非简化表达式。 ComplexityFunction应该能够解决这个问题: ComplexityFunction

我用上面的链接提供的功能:

f[e_] := StringLength[ToString[InputForm[e]]] 
FullSimplify[a Conjugate[a] b, ComplexityFunction -> f] 

我仍然得到了不想要的形式。

是否有解决方法?

回答

1

我刚刚在我的问题here在StackExchange上了解到这一点。你可以这样做:

f[expr_]:=expr/.x_*Conjugate[x_]:>Abs[x]^2 
Simplify[a Conjugate[a] b,TransformationFunctions->{Automatic,f},ComplexityFunction->(StringLength[ToString[InputForm[#]]]&)] 

它会给b Abs[a]^2

+0

看起来不错,谢谢! –