| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
| 75.1 Introduction to solve_rec | ||
| 75.2 Functions and Variables for solve_rec |
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
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)
|
Categories: Linear recurrences ·Share packages ·Package solve_rec
| [ < ] | [ > ] | [ << ] | [上] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
特殊解 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
|
Categories: Package solve_rec
デフォルト値: true
もし simplify_productsが trueなら、
solve_recは答えの積を整理しようとします。
以下も参照してください: solve_rec.
Categories: Package 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
|
Categories: Package solve_rec ·Sums and products ·Simplification functions
変数 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,
product_use_gamma。
Categories: Package solve_rec
線形漸化式の有理解について解きます。 引数の記述については 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。
Categories: Package solve_rec
デフォルト値: true
積を整理する時、もし product_use_gammaが trueなら、
solve_recは式の中にガンマ函数を導入します。
以下も参照してください: simplify_products, solve_rec。
Categories: Package 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
|
Categories: Package solve_rec
| [ << ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
この文書は市川 雄二によって2014年4月月20日にtexi2html 1.82を用いて生成されました。