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

SymPy求解微分方程时sin函数调用报错的问题排查

问题原因与解决方法

错误根源

  • 第一个错误'sin' is not defined:直接调用sin(x),但既未从SymPy导入sin函数,也未通过SymPy模块名引用它。
  • 第二个TypeError:math.sin()是Python标准库的数值计算函数,仅能处理普通数值,无法识别SymPy的符号变量x,尝试将符号x转为float时失败。

正确做法

使用SymPy自带的符号三角函数sym.sin()(或先从SymPy导入sin后直接调用),SymPy的函数可与符号变量完全兼容。

修正后的完整代码

import sympy as sym
sym.init_printing()
from IPython.display import display_latex
import sympy.plotting as sym_plot

# 定义方程
x = sym.symbols('x')
y = sym.Function('y')
# 用sym.sin(x)替换原有的sin(x)或math.sin(x)
eq1 = sym.Eq(y(x).diff(x), (2*y(x)-3*(y(x))**2)*sym.sin(x))
print("The equation")
display_latex(eq1)

# 求解方程
eq1sol = sym.dsolve(eq1, y(x))
print("has solutions")
display_latex(eq1sol)
print("or equivalently")
display_latex(sym.simplify(eq1sol))

也可以在导入时直接引入sin,简化后续调用:

from sympy import sin, symbols, Function, Eq, dsolve, simplify
# 后续代码中直接使用sin(x)即可

修改后代码可正常运行,正确求解目标微分方程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:24:49