an–1 + 0.004·an -10 +0.04 具有初始条件:an
= 0,所有n≤9.
代码:
import sympy as sp
n = sp.symbols('n')
y = sp.Function('y')
recurrence = sp.rsolve(
y(n) - sp.Rational(0.996) * y(n-1) - sp.Rational(0.004) * y(n-10) - sp.Rational(0.04),
y(n),
{
y(0): 0,
y(1): 0,
y(2): 0,
y(3): 0,
y(4): 0,
y(5): 0,
y(6): 0,
y(7): 0,
y(8): 0,
y(9): 0,
}
)
我得到的错误结果只是一个恒定的数字。为什么我没有得到取决于变量n
的表达
recurrence
rsolve
的第一个参数不是平等,这是第n个术语等于的表达式,请参见。 so
rsolve
呼叫应该为sp.rsolve(
sp.Rational('0.996') * y(n-1) - sp.Rational('0.004') * y(n-10) -
sp.Rational('0.04'),
y(n), [0,]*10)
像Sympy这样的样子无法解决此递归(请注意,您可能的意思是Rational('0.996')
而不是Rational(0.996)
)。对于此递归中的一般元素,您可以执行以下操作:
from sympy import Function, symbols, Rational
from sympy.series.sequences import RecursiveSeq
y = Function('y')
n = symbols('n')
seq = RecursiveSeq(Rational('0.996')*y(n - 1) - Rational('0.004') * y(n-10) - Rational('0.04'), y(n), n, [0,]*10)
# y(30) =
seq.coeff(30)