在sympy / numpy中为给定的递归方程式获得表达式

时间:2012-10-30 04:44:45

标签: python numpy scipy sympy

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

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)

上面的地平线是3.

1 个答案:

答案 0 :(得分:1)

我打算建议使用SymPy的rsolve来尝试找到一个封闭的形式解决方案,但似乎至少对于这个特定的解决方案,有一个错误阻止它工作。见http://code.google.com/p/sympy/issues/detail?id=2943。也许如果你真的想知道一个更复杂的表达,你可以试试。对于这个,封闭形式的解决方案只是a**n*x0

除此之外,SymPy没有任何直接进行此评估的功能,但确实有一些可以提供帮助的功能。 sympy.utilities.memoization中有一些memoization装饰器供内部使用,但应该适合外部使用。它们可以通过缓存先前评估的结果来帮助提高评估效率。你需要递归地编写get_expr才能有效地工作。或者你可以写自己的cacher。这并不复杂。