wolfram-mathematica - 替换规则分母中的空格

标签 wolfram-mathematica

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

enter image description here
enter image description here

您可以看到,虽然这些表达式在数学上相似,但它们在结构上却大不相同。您也许可以针对特定情况制定有效的替换规则,但通常最好使用 Formula Manipulation (或 Polynomial Algebra ) Mathematica 提供的工具。

如果您仔细描述您希望实现的数学运算,我将尝试提供更好的解决方案。

正如 belisarius 在评论中幽默地指出的那样,试图强制 Mathematica 以您的方式“看到”或显示表达式通常在很大程度上是徒劳的。这也是上述开场白成立的原因之一。

关于wolfram-mathematica - 替换规则分母中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168040/

相关文章:

javascript - Wolfram API 跨源问题

wolfram-mathematica - 使用先前的输出在 Mathematica 中定义函数

statistics - 在 Mathematica 中一次绘制不同的条件和主题

wolfram-mathematica - 防止在 Mathematica 8 中自动布局 Graph[] 对象

wolfram-mathematica - 将文字或html插入.notebook

wolfram-mathematica - 在 Mathematica 中按文本日期列对数组进行排序

wolfram-mathematica - 我的Mathematica程序中存在较大的数值错误

wolfram-mathematica - 处理 Mathematica 函数中的灵活参数

python - 如何用Python(Sympy)实现一个函数,实现与Wolfram Mathematica中的ToExpression相同的功能?

wolfram-mathematica - 什么在 Mathematica 中生成输入/输出 CellLabels 以及如何为它们添加自动计时?