You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SymPy判断函数在给定区间的连续性?求解决方案

用SymPy判断函数在区间上的连续性

要判断函数在区间[a,b]上的连续性,核心是找出函数在该区间内的所有间断点——只要区间内存在间断点,函数就不连续。结合SymPy可以通过以下步骤实现:

核心思路

函数在区间内连续的充要条件是:

  • 开区间(a,b)内每一点都连续(无间断点)
  • 若为闭区间[a,b],还需满足左端点右连续、右端点左连续

开区间连续性判断代码

针对你的示例,实现代码如下:

import sympy as sp

# 定义符号、函数和区间
x = sp.symbols('x')
f = x**3/x - 1/(x**2 - 4)
a = -10
b = 10

# 化简函数,消除冗余表达式
simplified_f = sp.simplify(f)
# 获取函数在实数域上的连续定义域
continuous_domain = sp.calculus.util.continuous_domain(simplified_f, x, sp.Reals)
# 计算区间内的间断点:定义域补集与目标区间的交集
discontinuities = sp.Intersection(sp.Interval(a, b), sp.Reals - continuous_domain)
# 若间断点集合为空,则区间内连续,否则不连续
is_continuous = discontinuities.is_empty

print(is_continuous)  # 输出False,符合预期

代码解释

  • sp.simplify(f):先化简函数,比如将x³/x简化为x²,同时保留x≠0的定义域限制
  • sp.continuous_domain(...):直接获取函数在实数域上的连续区域,返回集合类型
  • 通过计算定义域的补集得到所有间断点,再和目标区间取交集,即可得到区间内的间断点
  • 判断交集是否为空:空则区间内无间断点,函数连续;反之则不连续

闭区间连续性扩展

如果需要判断闭区间[a,b]的连续性,还需额外检查端点的单侧连续性,实现代码如下:

import sympy as sp

def check_closed_interval_continuity(f, x, a, b):
    simplified_f = sp.simplify(f)
    # 获取连续定义域
    domain = sp.calculus.util.continuous_domain(simplified_f, x, sp.Reals)
    # 检查开区间内是否有间断点
    open_interval_discontinuities = sp.Intersection(sp.Interval.open(a, b), sp.Reals - domain)
    if not open_interval_discontinuities.is_empty:
        return False
    
    # 检查左端点右连续
    if a not in domain:
        return False
    right_limit = sp.limit(simplified_f, x, a, dir='+')
    if right_limit != simplified_f.subs(x, a):
        return False
    
    # 检查右端点左连续
    if b not in domain:
        return False
    left_limit = sp.limit(simplified_f, x, b, dir='-')
    if left_limit != simplified_f.subs(x, b):
        return False
    
    return True

# 测试示例闭区间
x = sp.symbols('x')
f = x**3/x - 1/(x**2 - 4)
print(check_closed_interval_continuity(f, x, -10, 10))  # 输出False

内容的提问来源于stack exchange,提问作者alpa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 07:53:15