Next: stats, Previous: simplification [Contents][Index]
Next: Functions and Variables for solve_rec, Previous: solve_rec, Up: solve_rec [Contents][Index]
solve_rec
は多項式係数を持つ線形漸化式を解くためのパッケージです。
デモが
demo(solve_rec);
で利用可能です。
例:
(%i1) load("solve_rec")$
(%i2) solve_rec((n+4)*s[n+2] + s[n+1] - (n+1)*s[n], s[n]); n %k (2 n + 3) (- 1) %k 1 2 (%o2) s = -------------------- + --------------- n (n + 1) (n + 2) (n + 1) (n + 2)
Previous: Introduction to solve_rec, Up: solve_rec [Contents][Index]
特殊解solが知られている時、 線形漸化式recの次数を減らします。
例:
(%i3) rec: x[n+2] = x[n+1] + x[n]/n; x n (%o3) x = x + -- n + 2 n + 1 n
(%i4) solve_rec(rec, x[n]); WARNING: found some hypergeometrical solutions! (%o4) x = %k n n 1
(%i5) reduce_order(rec, n, x[n]); (%t5) x = n %z n n n - 1 ==== \ (%t6) %z = > %u n / %j ==== %j = 0 (%o6) (- n - 2) %u - %u n + 1 n
(%i6) solve_rec((n+2)*%u[n+1] + %u[n], %u[n]); n %k (- 1) 1 (%o6) %u = ---------- n (n + 1)! だから一般解は以下の通りです。 n - 1 ==== j \ (- 1) %k n > -------- + %k n 2 / (j + 1)! 1 ==== j = 0
デフォルト値: true
もしsimplify_products
がtrue
なら、
solve_rec
は答えの積をを整理しようとします。
以下も参照してください: solve_rec
.
exprに現れるすべての和を閉形式に整理しようとします。
この関数を初めて使うには、
load("simplify_sum")
で
simplify_sum
パッケージをロードしてください。
例:
(%i1) load("simplify_sum")$
(%i2) sum(binomial(n+k,k)/2^k,k,1,n)+sum(binomial(2*n,2*k),k,1,n); n n ==== ==== ¥ binomial(n + k, k) ¥ (%o2) > ------------------ + > binomial(2 n, 2 k) / k / ==== 2 ==== k = 1 k = 1
(%i3) simplify_sum(%); 2 n - 1 n (%o3) 2 + 2 - 2
変数varに関して多項式係数を持つ線形漸化式eqnの超幾何解について解きます。 オプション引数initは初期条件です。
solve_rec
は、
定数係数の線形漸化式を解くことができ、
多項式係数の斉次線形漸化式の超幾何解と多項式係数の有理解を見つけ、
Ricatti型漸化式を解くことができます。
超幾何解を見つけるのに使われるアルゴリズムの実行時間は 主係数と最小次数(trailing)係数の次数に関して指数的であることに注意してください。
この関数を使うには、
最初に
load("solve_rec");
でsolve_rec
パッケージをロードしてください。
定係数の線形漸化式の例:
(%i2) solve_rec(a[n]=a[n-1]+a[n-2]+n/2^n, a[n]); n n (sqrt(5) - 1) %k (- 1) 1 n (%o2) a = ------------------------- - ---- n n n 2 5 2 n (sqrt(5) + 1) %k 2 2 + ------------------ - ---- n n 2 5 2
多項式係数の線形漸化式の例:
(%i7) 2*x*(x+1)*y[x] - (x^2+3*x-2)*y[x+1] + (x-1)*y[x+2]; 2 (%o7) (x - 1) y - (x + 3 x - 2) y + 2 x (x + 1) y x + 2 x + 1 x
(%i8) solve_rec(%, y[x], y[1]=1, y[3]=3); x 3 2 x! (%o9) y = ---- - -- x 4 2
Ricatti型漸化式の例:
(%i2) x*y[x+1]*y[x] - y[x+1]/(x+2) + y[x]/(x-1) = 0; y y x + 1 x (%o2) x y y - ------ + ----- = 0 x x + 1 x + 2 x - 1
(%i3) solve_rec(%, y[x], y[3]=5)$
(%i4) ratsimp(minfactorial(factcomb(%))); 3 30 x - 30 x (%o4) y = - ------------------------------------------------- x 6 5 4 3 2 5 x - 3 x - 25 x + 15 x + 20 x - 12 x - 1584
以下も参照してください: solve_rec_rat
, simplify_products
, and product_use_gamma
.
線形漸化式の有理解について解きます。 引数の記述についてはsolve_recを参照してください。
この関数を使うには、
最初に
load("solve_rec");
でsolve_rec
パッケージをロードしてください。
例:
(%i1) (x+4)*a[x+3] + (x+3)*a[x+2] - x*a[x+1] + (x^2-1)*a[x]; (%o1) (x + 4) a + (x + 3) a - x a x + 3 x + 2 x + 1 2 + (x - 1) a x
(%i2) solve_rec_rat(% = (x+2)/(x+1), a[x]); 1 (%o2) a = --------------- x (x - 1) (x + 1)
以下も参照してください: solve_rec
.
デフォルト値: true
積を整理する時、
もしproduct_use_gamma
がtrue
なら、
solve_rec
は式の中にガンマ函数を導入します。
以下も参照してください: simplify_products
, solve_rec
.
和
hi ==== \ > summand / ==== k = lo
が満たす漸化式を返します。
ここで、被和(summand)はkとnに対して超幾何的です。
もしloとhiが省略されたら、
それらはlo = -inf
、hi = inf
と仮定されます。
この関数を初めて使うには、
load("simplify_sum")
で
simplify_sum
パッケージをロードしてください。
例:
(%i1) load("simplify_sum")$
(%i2) summand: binom(n,k); (%o2) binomial(n, k)
(%i3) summand_to_rec(summand,k,n); (%o3) 2 sm - sm = 0 n n + 1
(%i7) summand: binom(n, k)/(k+1); binomial(n, k) (%o7) -------------- k + 1
(%i8) summand_to_rec(summand, [k, 0, n], n); (%o8) 2 (n + 1) sm - (n + 2) sm = - 1 n n + 1
Next: stats, Previous: simplification [Contents][Index]