Учитывая выражение в sympy, существует ли способ найти все разрывы в данном интервале? Например, если 1/(x^2-1) от -2 до 2, он будет возвращать -1 и 1. Это не обязательно должно быть символическим. Численное решение может действительно работать лучше для моих целей.Есть ли простой способ получить все разрывы функции в некоторой области с sympy?
ответ
Для этого вы можете использовать модуль singularities
.
In [ ]: from sympy import *
In [ ]: init_printing()
In [ ]: x = symbols('x')
In [ ]: singularities(1/(x**2 - 1), x)
Out[ ]: (-1, 1) # A tuple of SymPy objects
Ссылка: http://docs.sympy.org/latest/modules/calculus/index.html#sympy.calculus.singularities.singularities
Я не думаю, что для SymPy существует какой-либо конкретный метод;
это может быть очень сложно сделать в полной общности (т. Е. Для любой возможной функции в любом числе переменных, в том числе с infinite discontinuities).
Если вы работаете с относительно простыми выражениями в одной реальной переменной, такой как пример в своем вопросе, то одним из подходов может быть вычисление выражения как отношения двух выражений, а затем решение выражения знаменателя.
>>> expr
1/(x**2 - 1)
>>> n, d = expr.as_numer_denom()
>>> sympy.solve(d)
[-1, 1]
Еще один небольшой пример:
>>> expr2 = 1/(sympy.sin(x)) + 4/(x**2 - 3)
>>> expr2
1/sin(x) + 4/(x - 3)
>>> n, d = expr2.as_numer_denom()
>>> sympy.solve(d)
[0, -sqrt(3), sqrt(3), pi]
Очевидно, что в этом случае SymPy не перечислить все кратные пи в качестве решения; вам придется обработать список для создания решений, которые лежат в вашем желаемом домене.
- 1. Проверьте, есть ли выражение sympy в функции
- 2. Есть ли более простой способ отслеживать изменения области в ExtremePlanner?
- 3. Есть ли простой способ получить все распространенные расширения модулей?
- 4. Есть ли простой способ программно получить алфавит?
- 5. Есть ли способ обернуть все методы JavaScript с помощью функции?
- 6. есть ли простой способ получить дату?
- 7. Есть ли способ получить простой обзор NSArray?
- 8. Есть ли простой способ сделать складной QWidget?
- 9. Есть ли способ объединить все функции прокрутки?
- 10. Есть ли способ увидеть все переменные в текущей области?
- 11. Есть ли простой способ зарегистрировать все в Java?
- 12. Есть ли простой способ отключить все сигналы будильника в классе?
- 13. Есть ли векторизованный способ вычисления градиента в sympy?
- 14. Есть ли способ получить все доступные action_types?
- 15. Есть ли более простой способ реализации вероятностной функции в JavaScript?
- 16. Есть ли простой способ вызвать вызов функции в elisp?
- 17. Есть ли простой способ получить ServerName в Symfony?
- 18. Sympy: Получить функции из выражения
- 19. Есть ли простой способ выбора в linq
- 20. Есть ли способ получить все вспомогательные каталоги с заданного пути?
- 21. Есть ли способ получить все зависимости проекта через sbt-плагин?
- 22. Есть ли простой способ получить вектор с фонетическим алфавитом НАТО?
- 23. Есть ли простой способ получить отметку времени начала с TimeSpan
- 24. Есть ли лучший способ перевести все переменные области одной функции в другую?
- 25. Есть ли простой способ получить тени в OpenGL?
- 26. Есть ли простой способ найти все зависимости структуры?
- 27. Простой способ передачи переменных области в службу?
- 28. шаблонные функции в SymPy
- 29. Есть ли простой способ получить RMS диапазона в листах google?
- 30. Есть ли простой способ получить текстовое представление GtkWidgetPath?
Это выглядит многообещающим ... Это, кажется, реализован просто как 'кортеж (отсортированных (решения (упростить (1/ехрг), SYM)))', который, по существу, то же самое метод, который я использовал в своем ответе. Тем не менее, он работает только с очень ограниченным классом функций (например, он не обрабатывает тригонометрические функции, такие как мой пример expr2), поэтому он выглядит очень успешным. –
@ajcr Да. Как вы сказали, его развитие. В настоящее время он работает для одномерных, реальных рациональных функций. –