最近在使用mathematica进行推导时出了一个想不明白的小问题
比如推导球坐标下的微元体积
eq =
Block[{$Assumptions = (Dt[r] | Dt[\[Theta]] | Dt[\[Phi]]) \[Element]
Vectors[d]},
TensorExpand@
TransformedField[ "Cartesian" -> "Spherical",
Dt[x]~TensorWedge~Dt[y]~TensorWedge~
Dt[z], {x, y, z} -> {r, \[Theta], \[Phi]}]]
我想要利用反对称直接化简 eq 却失败了, ReplaceRepeated 不起作用
eq //. TensorWedge[left___, k1_, k2_, right___] /;
Not@OrderedQ[{k1, k2}] :> (-1)*TensorWedge[left, k2, k1, right]
但是如果将 TensorWedge 改为临时的表头 h 就能使用 ReplaceRepeated 化简
eq /. TensorWedge -> h //.
h[left___, k1_, k2_, right___] /; Not@OrderedQ[{k1, k2}] :> (-1)*
h[left, k2, k1, right] /. h -> TensorWedge // Simplify
这是为什么呢?

比如推导球坐标下的微元体积
eq =
Block[{$Assumptions = (Dt[r] | Dt[\[Theta]] | Dt[\[Phi]]) \[Element]
Vectors[d]},
TensorExpand@
TransformedField[ "Cartesian" -> "Spherical",
Dt[x]~TensorWedge~Dt[y]~TensorWedge~
Dt[z], {x, y, z} -> {r, \[Theta], \[Phi]}]]
我想要利用反对称直接化简 eq 却失败了, ReplaceRepeated 不起作用
eq //. TensorWedge[left___, k1_, k2_, right___] /;
Not@OrderedQ[{k1, k2}] :> (-1)*TensorWedge[left, k2, k1, right]
但是如果将 TensorWedge 改为临时的表头 h 就能使用 ReplaceRepeated 化简
eq /. TensorWedge -> h //.
h[left___, k1_, k2_, right___] /; Not@OrderedQ[{k1, k2}] :> (-1)*
h[left, k2, k1, right] /. h -> TensorWedge // Simplify
这是为什么呢?
