Python 级数求和的辛代数解

Python 级数求和的辛代数解,python,sympy,Python,Sympy,我试图在下面的等式中求解C 我可以使用sympy为枚举数的x执行此操作,例如x0,x2,…,x4,但似乎无法找出如何为I=0到t执行此操作。例如,对于有限的数量 from sympy import summation, symbols, solve x0, x1, x2, x3, x4, alpha, C = symbols('x0, x1, x2, x3, x4, alpha, C') e1 = ((x0 + alpha * x1 + alpha**(2) * x2 + alpha**(

我试图在下面的等式中求解
C

我可以使用
sympy
为枚举数的
x
执行此操作,例如
x0,x2,…,x4
,但似乎无法找出如何为
I=0
t
执行此操作。例如,对于有限的数量

from sympy import summation, symbols, solve

x0, x1, x2, x3, x4, alpha, C = symbols('x0, x1, x2, x3, x4, alpha, C')

e1 = ((x0 + alpha * x1 + alpha**(2) * x2 + alpha**(3) * x3 + alpha**(4) * x4)
      / (1 + alpha + alpha**(2) + alpha**(3) + alpha**(4)))
e2 = (x3 + alpha * x4) / (1 + alpha)
rhs = (x0 + alpha * x1 + alpha**(2) * x2)  / (1 + alpha + alpha**(2))

soln_C = solve(e1 - C*e2 - rhs, C)

非常感谢@bryans为我指明了
Sum
的方向。在详细阐述他的评论时,这里有一个似乎有效的解决方案。因为我是新来的
sympy
如果有人有更简洁的方法,请分享

from sympy import summation, symbols, solve, Function, Sum

alpha, C, t, i = symbols('alpha, C, t, i')
x = Function('x')

s1 = Sum(alpha**i * x(t-i), (i, 0, t)) / Sum(alpha**i, (i, 0, t))
s2 = Sum(alpha**i * x(t-3-i), (i, 0, t-3)) / Sum(alpha**i, (i, 0, t-3)) 
rhs = (x(0) + alpha * x(1) + alpha**(2) * x(2))  / (1 + alpha + alpha**(2))


我不确定这是否可以被归类为更“简洁”,但如果你知道总结的上限,它也会很有用。假设我们要计算此表达式:

我们可以用同位语表达它,并求解它,如下所示:

from sympy import init_session
init_session(use_latex=True)
n = 4
As = symbols('A_1:' + str(n+1))
x = symbols('x')
exp = 0
for i in range(n):
    exp += As[i]/(1+x)**(i+1)
Ec = Eq(exp,0)
sol = solve(Ec,x)
#print(sol)
#sol    #Or, if you're working on jupyter...

我个人从未使用过这个模块,但建议您可以使用
Sum(..)
函数(向下滚动到有限和)。
from sympy import init_session
init_session(use_latex=True)
n = 4
As = symbols('A_1:' + str(n+1))
x = symbols('x')
exp = 0
for i in range(n):
    exp += As[i]/(1+x)**(i+1)
Ec = Eq(exp,0)
sol = solve(Ec,x)
#print(sol)
#sol    #Or, if you're working on jupyter...