Mathematica 7.0 似乎不喜欢分母中有空格。谁能解释这是为什么?
输入:
ClearAll["Global`*"];
(*Without blanks:*)
a^2 / b^2 /. a^2 / b^2 -> d
(*with:*)
a^2 / b^2 /. a^c_ / b^c_ -> d
(*Without blanks:*)
a^2 / b^2 /. (a / b)^2 -> d
(*With:*)
a^2 / b^2 /. (a / b)^c_ -> d
(*Without blanks:*)
a^2 / b^2 /. a^2 * b^(-2) -> d
(*With:*)
a^2 / b^2 /. a^c_ * b^(-c_) -> d
输出:
d
a^2/b^2
d
a^2/b^2
d
a^2/b^2
我正在尝试解决更复杂的问题。我想要进行的替换是以下形式的表达式:
(a ^ c_. * Coefficient1_. / b ^ c_. / Coefficient2_.) + (a ^ d_. * Coefficient3_. / b ^ d_. / Coefficient4_.)
系数可能涉及和、乘积和商的地方 可能包含或不包含
a
的变量和 b
. 可能相关:
FullForm 显示分母中的幂存储为 -1 和 c 的乘积:
输入:
FullForm[a^2/b^2]
FullForm[a^c_/b^c_]
FullForm[ (a / b)^2 ]
FullForm[(a / b)^c_ ]
FullForm[a^2 * b^(-2) ]
FullForm[a^c_ * b^(-c_)]
输出:
Times[Power[a,2],Power[b,-2]]
Times[Power[a,Pattern[c,Blank[]]],Power[b,Times[-1,Pattern[c,Blank[]]]]]
Times[Power[a,2],Power[b,-2]]
Power[Times[a,Power[b,-1]],Pattern[c,Blank[]]]
Times[Power[a,2],Power[b,-2]]
Times[Power[a,Pattern[c,Blank[]]],Power[b,Times[-1,Pattern[c,Blank[]]]]]
编辑:对我的实际案例进行了粗体更改。
最佳答案
一般来说,您应该尽量避免使用 ReplaceAll
进行数学运算。这是一种结构工具。
相对于 FullForm
, 我会用 TreeForm
来说明这些表达:
a^2/b^2 // TreeForm
a^c_/b^c_ // TreeForm
您可以看到,虽然这些表达式在数学上相似,但它们在结构上却大不相同。您也许可以针对特定情况制定有效的替换规则,但通常最好使用 Formula Manipulation (或 Polynomial Algebra ) Mathematica 提供的工具。
如果您仔细描述您希望实现的数学运算,我将尝试提供更好的解决方案。
正如 belisarius 在评论中幽默地指出的那样,试图强制 Mathematica 以您的方式“看到”或显示表达式通常在很大程度上是徒劳的。这也是上述开场白成立的原因之一。
关于wolfram-mathematica - 替换规则分母中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168040/