Как заставить Mathematica включать пользовательские функции в Simplify и FullSimplify?
предположим, у меня есть отношение r^2 = x^2 + y^2. Теперь предположим, что после вычисления я получаю сложный вывод x и y, но который теоретически можно было бы значительно упростить, используя приведенное выше соотношение. Как мне сказать Mathematica сделать это?
Я имею в виду ситуации, когда правила замены x^2+y^2 -> r^2 и использование Simplify/FullSimplify с предположениями не будут работать, например, если выход x/y + y/x = (x^2+y^2)/(xy) = r^2/(xy).
упрощение работает очень хорошо со встроенными функциями, но не с пользовательскими функциями! Поэтому, по сути, я хотел бы, чтобы мои функции рассматривались как встроенные функции!
2 ответов
Я считаю, что вы ищете TransformationFunctions.
f = # /. x^2 + y^2 -> r^2 &;
Simplify[x/y + y/x, TransformationFunctions -> {Automatic, f}]
(* Out= r^2/(x y) *)
в Примере, который вы даете
(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 позволяют это).