Интеграция и вывод абсолютных функций sympy - PullRequest
1 голос
/ 08 мая 2020

Sympy - вообще отличный инструмент для вычисления интеграла и производной функции. Когда функция хотя и содержит абсолютный компонент (| x |), по какой-то причине кажется, что она не в состоянии это понять.

когда, например, вы пишете что-то вроде этого:

diff(abs(x+1))

вы получите следующий результат:

sign⁡(x+1)

Ответ должен быть (x + 1) / | x +1 | , так что что-то не так с sympy и есть ли способ обойти это?

1 Ответ

1 голос
/ 08 мая 2020

В SymPy sign(z) определяется как z/|z| для сложного ненулевого z. Фактически, другое определение sign(z) является производным от abs(z): https://en.wikipedia.org/wiki/Sign_function#Definition

В идеале должно быть возможно использовать rewrite(Abs) с sign, но это не так. в настоящее время: https://github.com/sympy/sympy/issues/19277

Обратите внимание, что перезапись не будет работать в вашем случае без какого-либо способа узнать, что x+1 ненулевое значение (например, если x объявлен как положительный`) .

Вы можете принудительно перезаписать вручную, используя replace, хотя:

In [4]: s
Out[4]: sign(x + 1)

In [5]: s.replace(sign, lambda arg: arg/Abs(arg))
Out[5]: 
 x + 1 
───────
│x + 1│
...