1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /zeilberger.texi/1.6/Sat Jun 2 00:13:35 2007//
4 * Introdução a zeilberger::
5 * Funções e Variáveis Definidas para zeilberger::
8 @node Introdução a zeilberger, Funções e Variáveis Definidas para zeilberger, zeilberger, zeilberger
9 @section Introdução a zeilberger
11 @code{zeilberger} é uma implementação do algorítmo de Zeilberger
12 para somatório hipergeométricos definidos, e também
13 para o algorítmo de Gosper para somatórios hipergeométricos
16 @code{zeilberger} faz uso do método de otimização "filtering" desenvolvido por Axel Riese.
18 @code{zeilberger} foi desenvolvido por Fabrizio Caruso.
20 @code{load ("zeilberger")} torna esse pacote disponível para uso.
22 @subsection O problema dos somatórios hipergeométricos indefinidos
24 @code{zeilberger} implementa o algorítmo de Gosper
25 para somatório hipergeométrico indefinido.
26 Dado um termo hipergeométrico @math{F_k} em @math{k} queremos encontrar sua anti-diferença
27 hipergeométrica, isto é, um termo hipergeométrico @math{f_k} tal que @math{F_k = f_(k+1) - f_k}.
29 @subsection O problema dos somatórios hipergeométricos definidos
31 @code{zeilberger} implementa o algorítmo de Zeilberger
32 para somatório hipergeométrico definido.
33 Dado um termo hipergeométrico apropriado (em @math{n} e @math{k}) @math{F_(n,k)} e um
34 inteiro positivo @math{d} queremos encontrar um @math{d}-ésima ordem de recorrência
35 linear com coeficientes polinomiais (em @math{n}) para @math{F_(n,k)}
36 e uma função racional @math{R} em @math{n} e @math{k} tal que
38 @math{a_0 F_(n,k) + ... + a_d F_(n+d),k = Delta_K(R(n,k) F_(n,k))}
40 onde @math{Delta_k} é o @math{k}-seguinte operador de diferença, i.e.,
41 @math{Delta_k(t_k) := t_(k+1) - t_k}.
43 @subsection Níveis de detalhe nas informações
45 Existe também versões de níveis de detalhe fornecidos pelos comandos
46 que são chamados (os níveis) através da adição de um dos seguintes prefixos:
50 Apenas um sumário é mostrado no final
52 Algumas informações nos passos intermediários
56 Muito mais informação incluindo informação sobre
57 o sistema linear no algorítmo de Zeilberger
61 @code{GosperVerbose}, @code{parGosperVeryVerbose},
62 @code{ZeilbergerExtra}, @code{AntiDifferenceSummary}.
65 @node Funções e Variáveis Definidas para zeilberger, , Introdução a zeilberger, zeilberger
66 @section Funções e Variáveis Definidas para zeilberger
68 @deffn {Função} AntiDifference (@var{F_k}, @var{k})
70 Retorna a anti-diferença hipergeométrica
71 de @var{F_k}, se essa anti-diferença.
72 De outra forma @code{AntiDifference} retorna @code{no_hyp_antidifference}.
75 @deffn {Função} Gosper (@var{F_k}, @var{k})
76 Retorna o certificado racional @var{R(k)} para @var{F_k}, isto é,
77 uma função racional tal que
79 @math{F_k = R(k+1) F_(k+1) - R(k) F_k}
81 se essa função racional exitir.
82 De outra forma, @code{Gosper} retorna @code{no_hyp_sol}.
85 @deffn {Função} GosperSum (@var{F_k}, @var{k}, @var{a}, @var{b})
87 Retorna o somatório de @var{F_k} de @math{@var{k} = @var{a}} a @math{@var{k} = @var{b}}
88 se @var{F_k} tiver ma diferença hipergeométrica.
89 De outra forma, @code{GosperSum} retorna @code{nongosper_summable}.
94 @c load ("zeilberger");
95 @c GosperSum ((-1)^k*k / (4*k^2 - 1), k, 1, n);
96 @c GosperSum (1 / (4*k^2 - 1), k, 1, n);
97 @c GosperSum (x^k, k, 1, n);
98 @c GosperSum ((-1)^k*a! / (k!*(a - k)!), k, 1, n);
99 @c GosperSum (k*k!, k, 1, n);
100 @c GosperSum ((k + 1)*k! / (k + 1)!, k, 1, n);
101 @c GosperSum (1 / ((a - k)!*k!), k, 1, n);
104 (%i1) load ("zeilberger");
105 (%o1) /usr/share/maxima/share/contrib/Zeilberger/zeilberger.mac
106 (%i2) GosperSum ((-1)^k*k / (4*k^2 - 1), k, 1, n);
108 Dependent equations eliminated: (1)
112 (%o2) - ------------------ - -
115 (%i3) GosperSum (1 / (4*k^2 - 1), k, 1, n);
119 (%o3) -------------- + -
122 (%i4) GosperSum (x^k, k, 1, n);
127 (%i5) GosperSum ((-1)^k*a! / (k!*(a - k)!), k, 1, n);
130 (%o5) - ------------------------- - ----------
131 a (- n + a - 1)! (n + 1)! a (a - 1)!
132 (%i6) GosperSum (k*k!, k, 1, n);
134 Dependent equations eliminated: (1)
136 (%i7) GosperSum ((k + 1)*k! / (k + 1)!, k, 1, n);
137 (n + 1) (n + 2) (n + 1)!
138 (%o7) ------------------------ - 1
140 (%i8) GosperSum (1 / ((a - k)!*k!), k, 1, n);
141 (%o8) nonGosper_summable
145 @deffn {Função} parGosper (@var{F_@{n,k@}}, @var{k}, @var{n}, @var{d})
146 Tenta encontrar uma recorrência de @var{d}-ésima ordem para @var{F_@{n,k@}}.
148 O algorítmo retorna uma seq@"{u}ência
149 @math{[s_1, s_2, ..., s_m]} de soluções.
150 Cada solução tem a forma
152 @math{[R(n, k), [a_0, a_1, ..., a_d]]}
154 @code{parGosper} retorna @code{[]} caso não consiga encontrar uma recorrência.
157 @deffn {Função} Zeilberger (@var{F_@{n,k@}}, @var{k}, @var{n})
158 Tenta calcular o somatório hipergeométrico indefinido de @var{F_@{n,k@}}.
160 @code{Zeilberger} primeiro invoca @code{Gosper}, e se @code{Gosper} não conseguir encontrar uma solução, então @code{Zeilberger} invoca
161 @code{parGosper}com ordem 1, 2, 3, ..., acima de @code{MAX_ORD}.
162 Se Zeilberger encontrar uma solução antes de esticar @code{MAX_ORD},
163 Zeilberger para e retorna a solução.
165 O algorítmo retorna uma seq@"{u}ência
166 @math{[s_1, s_2, ..., s_m]} de soluções.
167 Cada solução tem a forma
169 @math{[R(n,k), [a_0, a_1, ..., a_d]]}
171 @code{Zeilberger} retorna @code{[]} se não conseguir encontrar uma solução.
173 @code{Zeilberger} invoca @code{Gosper} somente se @code{gosper_in_zeilberger} for @code{true}.
176 @section Variáveis globais gerais
178 @defvr {Variável global} MAX_ORD
181 @code{MAX_ORD} é a ordem máxima de recorrência tentada por @code{Zeilberger}.
184 @defvr {Variável global} simplified_output
185 Valor padrão: @code{false}
187 Quando @code{simplified_output} for @code{true},
188 funções no pacote @code{zeilberger} tentam
189 simplificação adicional da solução.
192 @defvr {Variável global} linear_solver
193 Valor padrão: @code{linsolve}
195 @code{linear_solver} nomeia o resolvedor que é usado para resolver o sistema
196 de equações no algorítmo de Zeilberger.
199 @defvr {Variável global} warnings
200 Valor padrão: @code{true}
202 Quando @code{warnings} for @code{true},
203 funções no pacote @code{zeilberger} imprimem
204 mensagens de alerta durante a execução.
207 @defvr {Variável global} gosper_in_zeilberger
208 Valor padrão: @code{true}
210 Quando @code{gosper_in_zeilberger} for @code{true},
211 a função @code{Zeilberger} chama @code{Gosper} antes de chamar @code{parGosper}.
212 De outra forma, @code{Zeilberger} vai imediatamente para @code{parGosper}.
215 @defvr {Variável global} trivial_solutions
216 Valor padrão: @code{true}
218 Quando @code{trivial_solutions} for @code{true},
219 @code{Zeilberger} retorna soluções
220 que possuem certificado igual a zero, ou todos os coeficientes iguais a zero.
223 @section Variáveis relacionadas ao teste modular
225 @defvr {Variável global} mod_test
226 Valor padrão: @code{false}
228 Quando @code{mod_test} for @code{true},
229 @code{parGosper} executa um
230 teste modular discartando sistemas sem solução.
233 @defvr {Variável global} modular_linear_solver
234 Valor padrão: @code{linsolve}
236 @code{modular_linear_solver} nomeia o resolvedor linear usado pelo teste modular em @code{parGosper}.
239 @defvr {Variável global} ev_point
240 Valor padrão: @code{big_primes[10]}
242 @code{ev_point} é o valor no qual a variável @var{n} é avaliada
243 no momento da execução do teste modular em @code{parGosper}.
246 @defvr {Variável global} mod_big_prime
247 Valor padrão: @code{big_primes[1]}
249 @code{mod_big_prime} é o módulo usado pelo teste modular em @code{parGosper}.
252 @defvr {Variável global} mod_threshold
255 @code{mod_threshold} is the
256 maior ordem para a qual o teste modular em @code{parGosper} é tentado.