2016-07-26 2 views
2

Я пытаюсь решить для C в следующем уравненииSymPy алгебраическое решение суммирования рядов

enter image description here

Я могу сделать это с sympy для enumrated числа x's, например 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) 

Любое понимание было бы высоко оценено.

+1

Я никогда не использовал этот модуль лично, но [это] (http://docs.sympy.org/latest/modules/concrete.html) предполагает, что вы можете использовать функцию 'Sum (..)' (прокрутите вниз до конечных сумм). – nbryans

ответ

1

Спасибо @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)) 

enter image description here

soln_C = solve(s1 - C*s2 - rhs, C) 

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^