2015-12-22 2 views
4

Учитывая выражение в sympy, существует ли способ найти все разрывы в данном интервале? Например, если 1/(x^2-1) от -2 до 2, он будет возвращать -1 и 1. Это не обязательно должно быть символическим. Численное решение может действительно работать лучше для моих целей.Есть ли простой способ получить все разрывы функции в некоторой области с sympy?

ответ

2

Для этого вы можете использовать модуль 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

+0

Это выглядит многообещающим ... Это, кажется, реализован просто как 'кортеж (отсортированных (решения (упростить (1/ехрг), SYM)))', который, по существу, то же самое метод, который я использовал в своем ответе. Тем не менее, он работает только с очень ограниченным классом функций (например, он не обрабатывает тригонометрические функции, такие как мой пример expr2), поэтому он выглядит очень успешным. –

+0

@ajcr Да. Как вы сказали, его развитие. В настоящее время он работает для одномерных, реальных рациональных функций. –

2

Я не думаю, что для 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 не перечислить все кратные пи в качестве решения; вам придется обработать список для создания решений, которые лежат в вашем желаемом домене.

Смежные вопросы