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

如何用SymPy正确计算含双期变量的有限级数导数?

解决SymPy中含双期变量有限级数的导数计算问题

你的代码核心问题是求和哑变量t与求导用的自由变量t重名,SymPy会将求和内的t视为局部哑变量,无法关联到求导时的自由变量t,因此仅识别到β*a[t]这一项的导数贡献。

修正方案

将求和的哑变量替换为另一个符号(如tau),明确区分自由变量与求和哑变量,让SymPy正确识别a[t]在级数中的两次出现:

from sympy import symbols, Sum, diff, IndexedBase, Idx

T = symbols('T', integer=True)
tau = symbols('tau', integer=True)  # 求和哑变量改用tau
t = symbols('t', integer=True)
β, σ = symbols('β σ')
a = symbols('a', cls=IndexedBase)

L = Sum(β * a[tau] + σ * a[tau + 1], (tau, 0, T))
print(diff(L, a[t]))

结果说明

运行上述代码将输出β + σ,符合预期。原理是:

  • 当tau = t时,β*a[tau]对应β*a[t],导数为β;
  • 当tau = t-1时,σ*a[tau+1]对应σ*a[t],导数为σ;
  • 其他tau值的项不含a[t],导数为0;
    所有有效贡献相加即得到β + σ。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:36:02