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]

而且我仍然得到不需要的形式。

有解决方法吗?

4

1 回答 1

1

我刚刚从 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

于 2013-02-21T00:15:53.570 回答