我有以下复发关系:

问题描述 投票:0回答:1
n

= 0.996·

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个术语等于的表达式,请参见
python sympy
1个回答
0
投票
.

。 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)


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.