1 /solve_rec.texi/1.7/Tue Jan 16 15:15:10 2007//
2 @c /solve_rec.texi/1.7/Tue Jan 16 15:15:10 2007//
4 * Introdução a solve_rec::
5 * Definições para solve_rec::
8 @node Introdução a solve_rec, Definições para solve_rec, solve_rec, solve_rec
9 @section Introdução a solve_rec
11 @code{solve_rec} é um pacote para resolver recorrências lineares com coeficientes
14 Um ficheiro de domostração está disponivel com @code{demo(solve_rec);}.
19 (%i1) load("solve_rec")$
20 (%i2) solve_rec((n+4)*s[n+2] + s[n+1] - (n+1)*s[n], s[n]);
24 (%o2) s = -------------------- + ---------------
25 n (n + 1) (n + 2) (n + 1) (n + 2)
28 @node Definições para solve_rec, , Introdução a solve_rec, solve_rec
29 @section Definições para solve_rec
31 @deffn {Função} reduce_order (@var{rec}, @var{sol}, @var{var})
33 Reduz a ordem de recorrência linear @var{rec} quando uma solução particular
34 @var{sol} for conhecida. A recorrência reduzida pode ser usada para pegar outras soluções.
39 (%i3) rec: x[n+2] = x[n+1] + x[n]/n;
44 (%i4) solve_rec(rec, x[n]);
45 WARNING: found some hypergeometrical solutions!
48 (%i5) reduce_order(rec, n, x[n]);
60 (%o6) (- n - 2) %u - %u
62 (%i6) solve_rec((n+2)*%u[n+1] + %u[n], %u[n]);
69 So the general solution is
74 %k n > -------- + %k n
82 @defvr {Variável de opção} simplify_products
83 Valor por omissão: @code{true}
85 Se @code{simplify_products} for @code{true}, @code{solve_rec} irá tentar
86 simplificar produtos no resultado.
88 Veja também: @code{solve_rec}.
92 @deffn {Função} simplify_sum (@var{expr})
94 Tenta simplificar todos os somatórios que aparecem na @var{expr} para uma forma a mais simplificada possível.
96 @code{simplify_sum} usa os algoritmos de Gosper e de Zeilberger para simplificar somatórios.
98 Para usar essa função primeiramente chame o pacote @code{simplify_sum} com
99 @code{load(simplify_sum)}.
104 (%i1) load("simplify_sum")$
105 (%i2) sum(binom(n+k,k)/2^k, k, 0, n) + sum(binom(2*n, 2*k), k, 0, n);
108 \ binomial(n + k, k) \
109 (%o2) > ------------------ + > binomial(2 n, 2 k)
113 (%i3) simplify_sum(%);
122 @deffn {Função} solve_rec (@var{eqn}, @var{var}, [@var{init}])
123 Encontra soluções hipergeométricas para a recorrência linear @var{eqn} com
124 coeficientes polinomiais na variável @var{var}. Argumentos opcionais @var{init}
125 são as condições iniciais.
127 @code{solve_rec} pode resolver recorrências lineares com coeficientes constantes,
128 encontrando soluções hipergeométricas para recorrências lineares homogêneas com
129 coeficientes polinomiais, soluções racionais para recorrências lineares com
130 coeficientes polinomiais e pode resolver recorrências do tipo de Ricatti.
132 Note que o tempo de execução do algoritmo usado para encontrar soluções
133 hipergeométricas aumenta exponencialmente com o grau do coeficiente lider e
136 Para usar essa função primeiramente chame o pacote @code{solve_rec} com
137 @code{load(solve_rec);}.
139 Exemplo de recorrência linear com coeficientes constantes:
142 (%i2) solve_rec(a[n]=a[n-1]+a[n-2]+n/2^n, a[n]);
144 (sqrt(5) - 1) %k (- 1)
146 (%o2) a = ------------------------- - ----
152 + ------------------ - ----
157 Exemplo de recorrência linear com coeficientes polinomiais:
160 (%i7) 2*x*(x+1)*y[x] - (x^2+3*x-2)*y[x+1] + (x-1)*y[x+2];
162 (%o7) (x - 1) y - (x + 3 x - 2) y + 2 x (x + 1) y
164 (%i8) solve_rec(%, y[x], y[1]=1, y[3]=3);
171 Exemplo de recorrência do tipo de Ricatti:
174 (%i2) x*y[x+1]*y[x] - y[x+1]/(x+2) + y[x]/(x-1) = 0;
177 (%o2) x y y - ------ + ----- = 0
179 (%i3) solve_rec(%, y[x], y[3]=5)$
180 (%i4) ratsimp(minfactorial(factcomb(%)));
183 (%o4) y = - -------------------------------------------------
185 5 x - 3 x - 25 x + 15 x + 20 x - 12 x - 1584
189 Veja também: @code{solve_rec_rat}, @code{simplify_products}, e @code{product_use_gamma}.
193 @deffn {Função} solve_rec_rat (@var{eqn}, @var{var}, [@var{init}])
195 Encontra soluções racionais para recorrências lineares. Veja solve_rec para
196 uma descrição dos argumentos.
198 Para usar essa função primeirametne chame o pacote @code{solve_rec} com
199 @code{load(solve_rec);}.
204 (%i1) (x+4)*a[x+3] + (x+3)*a[x+2] - x*a[x+1] + (x^2-1)*a[x];
205 (%o1) (x + 4) a + (x + 3) a - x a
210 (%i2) solve_rec_rat(% = (x+2)/(x+1), a[x]);
212 (%o2) a = ---------------
217 Veja também: @code{solve_rec}.
221 @defvr {Variável de opção} product_use_gamma
222 Valor por omissão: @code{true}
224 Quando simplificando produtos, @code{solve_rec} introduz a função gama
225 dentro da expressão se @code{product_use_gamma} for @code{true}.
227 Veja também: @code{simplify_products}, @code{solve_rec}.
231 @deffn {Função} summand_to_rec (@var{summand}, @var{k}, @var{n})
232 @deffnx {Função} summand_to_rec (@var{summand}, [@var{k}, @var{lo}, @var{hi}], @var{n})
234 Retorna a recorrência satisfeita pelo somatório
246 onde x é hipergeométrico em @var{k} e @var{n}. SE @var{inf} e @var{sup}
247 forem omitidos, são assumidos como sendo @code{inf = -inf} e @code{sup = inf}.
249 Para usar essa função primeiro chame o pacote @code{simplify_sum} com
250 @code{load(simplify_sum)}.
255 (%i1) load("simplify_sum")$
256 (%i2) summand: binom(n,k);
258 (%i3) summand_to_rec(summand,k,n);
261 (%i7) summand: binom(n, k)/(k+1);
265 (%i8) summand_to_rec(summand, [k, 0, n], n);
266 (%o8) 2 (n + 1) sm - (n + 2) sm = - 1