7

假设我有一个关系 r^2 = x^2 + y^2。现在假设在计算后我得到了 x 和 y 的复杂输出,但理论上可以通过使用上述关系来简化很多。我如何告诉 Mathematica 这样做?

我指的是替换规则 x^2+y^2 -> r^2 和使用 Simplify/FullSimplify with Assumptions 不起作用的情况,例如,如果输出为 x/y + y/x = (x^2 +y^2)/(xy) = r^2/(xy)。

简化对内置函数非常有效,但不适用于用户定义的函数!所以基本上我希望我的函数被视为内置函数!

4

2 回答 2

8

我相信您正在寻找TransformationFunctions

f = # /. x^2 + y^2 -> r^2 &;

Simplify[x/y + y/x, TransformationFunctions -> {Automatic, f}]

(* Out=  r^2/(x y)  *)
于 2011-05-07T01:41:42.660 回答
2

在你给出的例子中

(x/y + y/x // Together) /. {x^2 + y^2 -> r^2}

==> r^2/(x y)

作品。但我了解到,在很多情况下,像这样的替换是行不通的。我曾经得到的一个提示是用一个更简单的 LHS 替换这个替换,比如:(x^2 -> r^2-y^2或者即使x->Sqrt[r^2-y^2]你知道 x 和 y 的值允许这样做)。

于 2011-05-07T09:43:15.713 回答