如何知道函数是否与sympy连续?

时间:2019-04-27 13:31:52

标签: python sympy

我需要定义一个函数,以检查输入函数在具有sympy的点处是否连续。

我用关键字“ continuity”搜索了sympy文档,但没有为此提供的现有功能。 我想也许我应该考虑做些限制,但是我不确定如何做。

def check_continuity(f, var, a):
    try:
            f = sympify(f)
        except SympifyError:
            return("Invaild input")
        else:
            x1 = Symbol(var, positive = True)
            x2 = Symbol(var, negative = True)
            //I don't know what to do after this

3 个答案:

答案 0 :(得分:1)

是的,您需要使用限制。

一个点的连续性的正式定义必须满足三个条件。 函数 f x )在 x = c if

的点处连续
  • lim x —> c f x )存在
  • f c )存在(也就是说, c f 的域中。)< / li>
  • lim x —> c f x )= f c

SymPy可以使用limit函数计算符号极限。

>>> limit(sin(x)/x, x, 0)
1

请参阅:https://docs.sympy.org/latest/tutorial/calculus.html#limits

答案 1 :(得分:1)

这里有一种更简单的方法来检查函数是否针对特定值继续:

import sympy as sp

x = sp.Symbol("x")
f = 1/x
value = 0

def checkifcontinus(func,x,symbol):
    return (sp.limit(func, symbol, x).is_real)

print(checkifcontinus(f,value,x))

此代码输出将是 - False

答案 2 :(得分:0)

我建议您使用函数continuous_domain。这是在calculus.util

中定义的

用法示例:

>>> from sympy import Symbol, S
>>> from sympy.calculus.util import continuous_domain
>>> x = Symbol("x")
>>> f = sin(x)/x
>>> continuous_domain(f, x, S.Reals)
Union(Interval.open(-oo, 0), Interval.open(0, oo))

这尚未添加到文档中。您可以查看更多详细信息here