SymPy 1.14中dsolve求解特定ODE时触发TypeError报错咨询
SymPy 1.14求解含符号参数二阶ODE时的TypeError问题
问题说明
在SymPy 1.14中求解形如x^k y(x) + y''(x) = 0的常微分方程时,当k为未赋值的符号参数,调用dsolve()会触发TypeError错误,核心原因是符号对象无法被Python的range()函数识别为整数类型。
复现代码
from sympy import * x = symbols("x") k = symbols("k") y = Function("y") ode = Eq(x**k*y(x) + Derivative(y(x), (x, 2)), 0) dsolve(ode, func=y(x))
报错信息
Traceback (most recent call last): File "<python-input-18>", line 1, in <module> dsolve(ode,func=y(x)) ~~~~~~^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/sympy/solvers/ode/ode.py", line 640, in dsolve return _helper_simplify(eq, hint, hints, simplify, ics=ics) File "/usr/lib/python3.13/site-packages/sympy/solvers/ode/ode.py", line 670, in _helper_simplify sols = solvefunc(eq, func, order, match) File "/usr/lib/python3.13/site-packages/sympy/solvers/ode/ode.py", line 2364, in ode_2nd_power_series_ordinary for i in reversed(range(startind)): ~~~~~^^^^^^^^^^ TypeError: 'Symbol' object cannot be interpreted as an integer
环境信息
- Python版本:3.13.7 (main, Aug 16 2025, 15:55:01) [GCC 15.2.1 20250813]
- SymPy版本:1.14.0
Maple求解结果说明
Maple对此方程的解以贝塞尔函数形式给出,包含第一类和第二类贝塞尔函数,解的具体形式与参数k直接相关。
Bug提交请求
由于无法登录GitHub,希望有用户能将此问题提交到SymPy的GitHub Issues页面。
内容的提问来源于stack exchange,提问作者Nasser
相关产品推荐
相关产品推荐

