3

以下示例仅用于精确定义查询。考虑一个递归方程 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。

4

1 回答 1

1

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

除此之外,SymPy 没有任何可以直接进行评估的函数,但它确实有一些可以提供帮助的东西。有一些 memoization 装饰器sympy.utilities.memoization是为内部使用而设计的,但对于外部使用来说应该可以正常工作。它们可以通过缓存先前评估的结果来帮助您提高评估效率。您需要get_expr递归地编写它才能有效地工作。或者您可以编写自己的缓存器。没那么复杂。

于 2012-10-30T05:46:12.913 回答