第一个式子取复共轭并化简结果正确,然而第三个式子只多了一个实部后,结果就错误。奇怪的是,如果虚部只是一个变量 Y 而不是两个变量 Y 和 Z 相乘的话,结果就正确。而且使用 FullSimplify 依然有问题。这都是通过 _ 匹配所有变量并指定为实数的情况。最后两句是分别指定 X, Y, Z 为实数,用 Simplify 虽然没错但没有化简,用了 FullSimplify 后才化简并得到了正确结果。很是奇怪!版本 11.2,试了下 12.0 也一样。
若是将 _
换成 _Symbol
,则结果与分别指定每个变量为实数一致,即下面两句与上面最后两句结果一样:
(X + I Y Z)\[Conjugate] // Simplify[#, _Symbol \[Element] Reals] &
(X + I Y Z)\[Conjugate] // FullSimplify[#, _Symbol \[Element] Reals] &
官方说这不是bug,是“working as designed”。关键在于 _ 是如何匹配的,可以通过 Cases 看是如何匹配的
Cases[(X + I Y)\[Conjugate], _]
Cases[(X + I Y Z)\[Conjugate] ,_]
前者输出 {Conjugate[X], -I Conjugate[Y]}
而后者输出 {X+I Y Z}
,说明后者 _ 匹配的是复共轭里的整体,若是这个整体是实数,自然复共轭就直接去掉了。另外,若是如下两句
Cases[(X + I Y Z)\[Conjugate], _Symbol]
Cases[(X + I Y Z)\[Conjugate] ,_Symbol, -1]
前者输出为 {}
,后者输出为 {X, Y, Z}
(匹配到最后一层)。