Python有一个包来解决使用递归关系定义的序列吗?
例如“Maxima”可以直接使用包“solve_rec”解决递归关系。
Python 有类似的东西吗?
千里马代码:
kill(all);
load("solve_rec")$
a[n]-a[n-1]-a[n-2]=0;
solve_rec(%, a[n],a[1]=2,a[2]=3);
输出:
a[n]-a[n-1]-a[n-2]=0
a[n]=((sqrt(5)+1)^n*(3*sqrt(5)+5)*2^(-n-1))/5-((sqrt(5)-1)^n*(3*sqrt(5)-5)*2^(-n-1)*(-1)^n)/5
这种类型的递推关系是线性且齐次的。线性齐次递推关系是一类特殊的递推关系,相对容易求解(至少手动求解)。然而,并非所有递归关系都有闭合形式,并且在具有闭合形式的递归关系中,并非所有关系都属于计算机可以常规解决的特殊类别。 Python 没有内置的递归关系求解器,并且 Python 中无法编写可以求解任意递归关系的模块。
我制作了一个名为 resolvepy 的包,它可以解决同质递归关系。下载后,你可以像这样解决递归关系:
from sympy import *
from resolvepy import *
n = Symbol('n')
# create the sequence
f = Recurrence('f')
f.index = n
# input the starting items
f[0] = 1
f[1] = 2
# provide a recursive formula
f[n] = f[n-1] + f[n-2]
explicit = f.resolve()