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

如何在SymPy中求解含索引变量的方程组并消元?

解决SymPy索引方程组消元问题

要得到c[t+1]与c[t]的关系,核心是明确**c和λ的索引关系对所有整数t都成立**,即t+1时刻同样满足c[t+1] = λ[t+1]。以下是两种可行方法:

方法一:补充索引关系方程

直接添加t+1时刻的c与λ的等式,将三个方程联立求解:

from sympy import symbols, IndexedBase, Eq, solve

# 修正拼写错误:interger → integer
t = symbols('t', integer=True)
β = symbols('β')
c, λ = symbols('c λ', cls=IndexedBase)

eq1 = Eq(c[t], λ[t])
eq2 = Eq(λ[t], β * λ[t+1])
# 补充t+1时刻的对应关系
eq3 = Eq(c[t+1], λ[t+1])

# 直接求解c[t+1],自动消去λ变量
result = solve([eq1, eq2, eq3], c[t+1], dict=True)
print(result)
# 输出:[{c[t+1]: c[t]/β}]

方法二:手动变量替换

利用已知的c[t] = λ[t],将λ[t]和λ[t+1]替换为c[t]和c[t+1]后求解:

from sympy import symbols, IndexedBase, Eq, solve

t = symbols('t', integer=True)
β = symbols('β')
c, λ = symbols('c λ', cls=IndexedBase)

eq1 = Eq(c[t], λ[t])
eq2 = Eq(λ[t], β * λ[t+1])

# 将λ的索引变量替换为对应的c变量
substituted_eq = eq2.subs({λ[t]: c[t], λ[t+1]: c[t+1]})
# 求解c[t+1]
result = solve(substituted_eq, c[t+1], dict=True)
print(result)
# 输出:[{c[t+1]: c[t]/β}]

关键说明

原代码未得到预期结果,是因为SymPy无法自动推断t+1时刻c与λ的对应关系——必须显式提供该关系,才能完成消元并得到c的动态递推式。

内容的提问来源于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 14:12:15