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

如何使用SymPy的nsolve求解小数值范围内的方程根?

SymPy数值求解表达式零点的问题

目标表达式与绘图代码

from sympy import *
x = symbols("x")
y = pi*(7.92e-24*x*(1 - exp(2.47376311844078e-6/x)) + 3.91844077961019e-30*exp(2.47376311844078e-6/x))/(x**7*(1 - exp(2.47376311844078e-6/x))**2)
interval = 0, 1e-6
plot(y, (x, *interval))

求解过程中的问题

  • 绘图确认:表达式y在x≈0.5e-6附近存在零点
  • 符号求解失效:尝试solve(y, x)求解符号解,程序长时间无响应,无法得到结果
  • 单初始点数值求解偏差:使用nsolve(y, x, 0.5e-6)得到结果0.250000500000000,与预期的零点位置不符,符合SymPy文档中nsolve不保证找到初始点附近根的说明
  • 二分法求解遇阻:
    • 直接用原区间(0, 1e-6)并指定solver="bisect",触发ZeroDivisionError,推测是区间包含0导致表达式分母为0
    • 缩小区间至(0.4e-6, 0.6e-6)后,抛出ValueError: Could not find root within given tolerance. (0.297846609020060650238 > 2.16840434497100886801e-19),求解失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:47:44