Add mathjax for dgeqrf
[maxima.git] / doc / info / ja / solve_rec.texi
blob80f02d255a41b178b3b3ee8bd1c09cfc3115ffa6
1 @menu
2 * Introduction to solve_rec::
3 * Functions and Variables for solve_rec::
4 @end menu
6 @node Introduction to solve_rec, Functions and Variables for solve_rec, solve_rec, solve_rec
7 @section Introduction to solve_rec
9 @code{solve_rec}は多項式係数を持つ線形漸化式を解くためのパッケージです。
11 デモが
12 @code{demo(solve_rec);}で利用可能です。
14 例:
16 @example
17 (%i1) load("solve_rec")$
18 @group
19 (%i2) solve_rec((n+4)*s[n+2] + s[n+1] - (n+1)*s[n], s[n]);
20                                     n
21                  %k  (2 n + 3) (- 1)          %k
22                    1                            2
23 (%o2)       s  = -------------------- + ---------------
24              n     (n + 1) (n + 2)      (n + 1) (n + 2)
25 @end group
26 @end example
28 @opencatbox
29 @category{Linear recurrences}
30 @category{Share packages}
31 @category{Package solve_rec}
32 @closecatbox
34 @node Functions and Variables for solve_rec,  , Introduction to solve_rec, solve_rec
35 @section Functions and Variables for solve_rec
37 @deffn {関数} reduce_order (@var{rec}, @var{sol}, @var{var})
39 特殊解@var{sol}が知られている時、
40 線形漸化式@var{rec}の次数を減らします。
42 例:
44 @example
45 @group
46 (%i3) rec: x[n+2] = x[n+1] + x[n]/n;
47                                       x
48                                        n
49 (%o3)               x      = x      + --
50                      n + 2    n + 1   n
51 @end group
52 @group
53 (%i4) solve_rec(rec, x[n]);
54 WARNING: found some hypergeometrical solutions! 
55 (%o4)                    x  = %k  n
56                           n     1
57 @end group
58 @group
59 (%i5) reduce_order(rec, n, x[n]);
60 (%t5)                    x  = n %z
61                           n       n
63                            n - 1
64                            ====
65                            \
66 (%t6)                %z  =  >     %u
67                        n   /        %j
68                            ====
69                            %j = 0
71 (%o6)             (- n - 2) %u     - %u
72                               n + 1     n
73 @end group
74 @group
75 (%i6) solve_rec((n+2)*%u[n+1] + %u[n], %u[n]);
76                                      n
77                             %k  (- 1)
78                               1
79 (%o6)                 %u  = ----------
80                         n    (n + 1)!
82 だから一般解は以下の通りです。
84              n - 1
85              ====        j
86              \      (- 1)
87        %k  n  >    -------- + %k  n
88          2   /     (j + 1)!     1
89              ====
90              j = 0
91 @end group
92 @end example
94 @opencatbox
95 @category{Package solve_rec}
96 @closecatbox
98 @end deffn
100 @defvr {オプション変数} simplify_products
101 デフォルト値: @code{true}
103 もし@code{simplify_products}が@code{true}なら、
104 @code{solve_rec}は答えの積をを整理しようとします。
106 以下も参照してください: @code{solve_rec}.
108 @opencatbox
109 @category{Package solve_rec}
110 @closecatbox
112 @end defvr
114 @deffn {関数} simplify_sum (@var{expr})
116 @var{expr}に現れるすべての和を閉形式に整理しようとします。
118 この関数を初めて使うには、
119 @code{load("simplify_sum")}で
120 @code{simplify_sum}パッケージをロードしてください。
122 例:
124 @c ===beg===
125 @c load("simplify_sum")$
126 @c sum(binomial(n+k,k)/2^k, k, 1, n) + sum(binomial(2*n, 2*k), k, 1,n);
127 @c simplify_sum(%);
128 @c ===end===
129 @example
130 (%i1) load("simplify_sum")$
131 @group
132 (%i2) sum(binomial(n+k,k)/2^k,k,1,n)+sum(binomial(2*n,2*k),k,1,n);
133         n                          n
134        ====                       ====
135        ¥     binomial(n + k, k)   ¥
136 (%o2)   >    ------------------ +  >    binomial(2 n, 2 k)
137        /              k           /
138        ====          2            ====
139        k = 1                      k = 1
140 @end group
141 @group
142 (%i3) simplify_sum(%);
144                          2 n - 1    n
145 (%o3)                   2        + 2  - 2
146 @end group
147 @end example
149 @opencatbox
150 @category{Package solve_rec}
151 @category{Sums and products}
152 @category{Simplification functions}
153 @closecatbox
155 @end deffn
157 @deffn {関数} solve_rec (@var{eqn}, @var{var}, [@var{init}])
158 変数@var{var}に関して多項式係数を持つ線形漸化式@var{eqn}の超幾何解について解きます。
159 オプション引数@var{init}は初期条件です。
161 @code{solve_rec}は、
162 定数係数の線形漸化式を解くことができ、
163 多項式係数の斉次線形漸化式の超幾何解と多項式係数の有理解を見つけ、
164 Ricatti型漸化式を解くことができます。
166 超幾何解を見つけるのに使われるアルゴリズムの実行時間は
167 主係数と最小次数(trailing)係数の次数に関して指数的であることに注意してください。
169 この関数を使うには、
170 最初に
171 @code{load("solve_rec");}で@code{solve_rec}パッケージをロードしてください。
174 定係数の線形漸化式の例:
176 @example
177 @group
178 (%i2) solve_rec(a[n]=a[n-1]+a[n-2]+n/2^n, a[n]);
179                         n          n
180            (sqrt(5) - 1)  %k  (- 1)
181                             1           n
182 (%o2) a  = ------------------------- - ----
183        n               n                  n
184                       2                5 2
185                                                 n
186                                    (sqrt(5) + 1)  %k
187                                                     2    2
188                                  + ------------------ - ----
189                                             n              n
190                                            2            5 2
191 @end group
192 @end example
194 多項式係数の線形漸化式の例:
196 @example
197 @group
198 (%i7) 2*x*(x+1)*y[x] - (x^2+3*x-2)*y[x+1] + (x-1)*y[x+2];
199                          2
200 (%o7) (x - 1) y      - (x  + 3 x - 2) y      + 2 x (x + 1) y
201                x + 2                   x + 1                x
202 @end group
203 @group
204 (%i8) solve_rec(%, y[x], y[1]=1, y[3]=3);
205                               x
206                            3 2    x!
207 (%o9)                 y  = ---- - --
208                        x    4     2
209 @end group
210 @end example
212 Ricatti型漸化式の例:
214 @example
215 @group
216 (%i2) x*y[x+1]*y[x] - y[x+1]/(x+2) + y[x]/(x-1) = 0;
217                             y         y
218                              x + 1     x
219 (%o2)         x y  y      - ------ + ----- = 0
220                  x  x + 1   x + 2    x - 1
221 @end group
222 (%i3) solve_rec(%, y[x], y[3]=5)$
223 @group
224 (%i4) ratsimp(minfactorial(factcomb(%)));
225                                    3
226                                30 x  - 30 x
227 (%o4) y  = - -------------------------------------------------
228        x        6      5       4       3       2
229              5 x  - 3 x  - 25 x  + 15 x  + 20 x  - 12 x - 1584
230 @end group
231 @end example
234 以下も参照してください: @code{solve_rec_rat}, @code{simplify_products}, and @code{product_use_gamma}.
236 @opencatbox
237 @category{Package solve_rec}
238 @closecatbox
240 @end deffn
242 @deffn {関数} solve_rec_rat (@var{eqn}, @var{var}, [@var{init}])
244 線形漸化式の有理解について解きます。
245 引数の記述についてはsolve_recを参照してください。
247 この関数を使うには、
248 最初に
249 @code{load("solve_rec");}で@code{solve_rec}パッケージをロードしてください。
251 例:
253 @example
254 @group
255 (%i1) (x+4)*a[x+3] + (x+3)*a[x+2] - x*a[x+1] + (x^2-1)*a[x];
256 (%o1)  (x + 4) a      + (x + 3) a      - x a
257                 x + 3            x + 2      x + 1
258                                                    2
259                                                + (x  - 1) a
260                                                             x
261 @end group
262 @group
263 (%i2) solve_rec_rat(% = (x+2)/(x+1), a[x]);
264                        1
265 (%o2)      a  = ---------------
266             x   (x - 1) (x + 1)
267 @end group
268 @end example
271 以下も参照してください: @code{solve_rec}.
273 @opencatbox
274 @category{Package solve_rec}
275 @closecatbox
277 @end deffn
279 @defvr {オプション変数} product_use_gamma
280 デフォルト値: @code{true}
282 積を整理する時、
283 もし@code{product_use_gamma}が@code{true}なら、
284 @code{solve_rec}は式の中にガンマ函数を導入します。
287 以下も参照してください: @code{simplify_products}, @code{solve_rec}.
289 @opencatbox
290 @category{Package solve_rec}
291 @closecatbox
293 @end defvr
295 @deffn {関数} summand_to_rec (@var{summand}, @var{k}, @var{n})
296 @deffnx {関数} summand_to_rec (@var{summand}, [@var{k}, @var{lo}, @var{hi}], @var{n})
300 @example
301 @group
302      hi
303     ====
304     \
305      >     summand
306     /
307     ====
308   k = lo
309 @end group
310 @end example
312 が満たす漸化式を返します。
313 ここで、被和(summand)は@var{k}と@var{n}に対して超幾何的です。
314 もし@var{lo}と@var{hi}が省略されたら、
315 それらは@code{lo = -inf}、@code{hi = inf}と仮定されます。
317 この関数を初めて使うには、
318 @code{load("simplify_sum")}で
319 @code{simplify_sum}パッケージをロードしてください。
321 例:
323 @example
324 (%i1) load("simplify_sum")$
325 @group
326 (%i2) summand: binom(n,k);
327 (%o2)                           binomial(n, k)
328 @end group
329 @group
330 (%i3) summand_to_rec(summand,k,n);
331 (%o3)                      2 sm  - sm      = 0
332                                n     n + 1
333 @end group
334 @group
335 (%i7) summand: binom(n, k)/(k+1);
336                                 binomial(n, k)
337 (%o7)                           --------------
338                                     k + 1
339 @end group
340 @group
341 (%i8) summand_to_rec(summand, [k, 0, n], n);
342 (%o8)               2 (n + 1) sm  - (n + 2) sm      = - 1
343                                 n             n + 1
344 @end group
345 @end example
347 @opencatbox
348 @category{Package solve_rec}
349 @closecatbox
351 @end deffn