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

SymPyを使用rsolveして方程式の閉じた形の解を見つけようと提案しましたが、少なくともこの特定の解については、動作を妨げるバグがあるようです。http://code.google.com/p/sympy/issues/detail?id=2943を参照してください。もっと複雑な表現を本当に知りたいのなら、それを試してみてください。これについては、閉じた形の解はただa**n*x0です。

それを除けば、SymPyにはこの評価を直接行う関数はありませんが、役立つことがいくつかあります。内部で使用するために作成されたメモ化デコレータがいくつかありますがsympy.utilities.memoization、外部で使用する場合は問題なく機能するはずです。以前の評価の結果をキャッシュすることで、評価をより効率的にすることができます。get_expr効果的に機能させるには、再帰的に記述する必要があります。または、独自のキャッシャーを作成することもできます。それほど複雑ではありません。

于 2012-10-30T05:46:12.913 に答える