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

使用Sympy求解带初始条件的常系数一阶线性差分方程求助

问题分析
  • 问题1:SymPy的dsolve函数求解差分方程时,需要显式的递推表达式(直接包含y(n)、y(n-k)形式的函数调用),原代码通过Sum+IndexedBase替换生成的表达式结构无法被dsolve识别为差分方程,触发匹配失败。
  • 问题2:输入序列x(n) = n² + n没有显式代入递推方程,dsolve无法处理带未知输入函数的递推求解。
  • 问题3:使用浮点数作为递推系数会干扰符号计算的类型匹配,优先使用整数完成符号计算后再按需转换为数值形式。
修正代码
from sympy import *
# 定义整数符号
n = symbols("n", integer=True)
y = Function("y")
# 显式定义输入序列
x = n**2 + n
# 构造标准差分方程
diffeq = Eq(y(n) + 3*y(n-1), x)
# 代入初始条件求解
res = dsolve(diffeq, ics={y(-1): 0})
# 打印化简后的结果
pprint(simplify(res))
结果验证

运行上述代码得到的符号解展开后与预期解完全一致,将符号分数转换为小数形式即可得到y(n) = 0.25n² + 0.625n + 0.28125*(1-(-3)^n)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:54:01