Python 在sympy/numpy中获得给定递归方程的地平线上的表达式

Python 在sympy/numpy中获得给定递归方程的地平线上的表达式,python,numpy,scipy,sympy,Python,Numpy,Scipy,Sympy,下面的示例仅用于精确定义查询。考虑一个递归方程x[k+1]=a*x[k],其中a是一些常数。现在,sympy/numpy中是否有一种更简单的方法或现有方法可以执行以下操作(即,为给定的递归方程给出一个地平线上的表达式): 上面的地平线是3 我打算建议使用SymPy的rsolve来尝试找到方程的封闭形式的解决方案,但似乎至少对于这个特定的解决方案,有一个bug阻止了它的工作。看见如果你真的想知道一个更复杂的表达式,你可以试试。对于这个问题,封闭形式的解决方案就是a**n*x0 除此之外,Symph

下面的示例仅用于精确定义查询。考虑一个递归方程x[k+1]=a*x[k],其中a是一些常数。现在,sympy/numpy中是否有一种更简单的方法或现有方法可以执行以下操作(即,为给定的递归方程给出一个地平线上的表达式):


上面的地平线是3

我打算建议使用SymPy的
rsolve
来尝试找到方程的封闭形式的解决方案,但似乎至少对于这个特定的解决方案,有一个bug阻止了它的工作。看见如果你真的想知道一个更复杂的表达式,你可以试试。对于这个问题,封闭形式的解决方案就是
a**n*x0


除此之外,Symphy没有任何函数可以直接执行此评估,但它确实有一些功能可以提供帮助。
sympy.utilities.memorization
中有一些memorization decorator是为内部使用而设计的,但对于外部使用应该可以正常工作。通过缓存以前评估的结果,它们可以帮助您提高评估的效率。您需要递归地编写
get_expr
,使其有效工作。或者你可以自己写缓存。没有那么复杂。

谢谢您的评论和建议。
def get_expr(init, num):
  a = Symbol('a')
  expr = init
  for i in range(num):
    expr = a*expr
  return expr

x0 = Symbol('x0')
get_expr(x0,3)