Universidade de São Paulo
Instituto de Matemática e Estatística
LEÔNIDAS DE OLIVEIRA BRANDÃO
DCC / IME / USP
http://www.ime.usp.br/~leo
Uma técnica muito simples (desconsiderando a dificuldade de se resolver um sistema linear) para se computar ``formas fechadas'' polinomiais de séries, é montar (e resolver) um sistema linear associado à série, de modo que o valor do polinômio no ponto k coincida com a série calculada até o inteiro k.
[ Isto pode ser generalizado usando funções quaisquer (além das funções polinomiais ). Por exemplo, se sabemos que a ``formas fechadas'' da série até o inteiro k é , podemos escrever L+1 equações igualando a série e sua suposta ``formas fechadas''.]
Vamos examinar com um pouco mais de cuidado esta técnica, apenas no caso de
``formas fechadas'' polinomiais. Seja
Se
para computarmos os coeficientes de P(.), basta escrevermos L+1 equações, impondo identidades do tipo . Por razões de simplicidade, tomaremos estas L+1 equações a partir de 0, ou seja, faremos, , para k entre 0 e L. Como, neste exemplo, , devemos procurar apenas os valores para os coeficientes até .
Observação: Se desconhecemos o valor L, devemos superestimá-lo, isto é tentar com valores grandes para L, de modo que os coeficientes de potência maior que o grau do polinômio efetivo serão 0.
Passo 0 Compute , para (L é qualquer ``chute grande'')
Passo 1 Resolva o sistema linear, (aqui vale sempre)
Para se resolver este sistema, pode-se usar qualquer programa computacional adequado, em particular, poderíamos nos utilizarmos de PARI-GP. A seguir são apresentados dois exemplos de utilização deste pacote, que deverão ser bem entendidos para se poder fazer o exercício proposto ao final.
Matrizes no Pari-GP:
Digite o exemplo abaixo no diretório
C:\TRAB
com o nome sist-l.txt
.
\\ --------------------------------------------------------------------\\ \\ EXEMPLO: uso de matrizes, vetores e resolucao de sistemas lineares no \\ PARI-GP \\ Modo de usar este programa (sist-l.txt no diretorio C:\TRAB): \\ F:\LABMAT\GP\> gp < c:\trab\sist-l.txt \\ --------------------------------------------------------------------\\ \\ define matriz A e matriz coluna b A=[1,-1,3; 0,1,2; 2,3,7]; b=[6;0;3]; print( Gauss(A,b) ); \\ define vetor solucao, e confere resultado! x=Gauss( A,b ); print("A x = b ?"); print("A x = ",A*x); print("b =",b); \q
Sistemas Lineares no PARI-GP:
Digite o exemplo abaixo no diretório C:\TRAB
com o nome
pol2.txt
.
\\ --------------------------------------------------------------------\\ \\ EXEMPLO: como listar os valores de um polinômio aplicado aos primeiros \\ naturais no PARI-GP \\ Modo de usar este programa (pol2.txt no diretorio C:\TRAB): \\ F:\LABMAT\GP\> gp < c:\trab\pol2.txt \\ --------------------------------------------------------------------\\ Ng=4; x=[0,0,0,0,1]; for (j=1,10, aux=0;for(k=0,Ng,aux=aux+x[k+1]*j^k);print("p(",j,")=",aux)); \q
Exercício: Tente obter as ``formas fechadas'' para as séries abaixo apresentadas, fazendo quatro arquivos .txt (um para cada série), com comando PARI-GP (vide os exemplos), que façam:
...confere resultado!
)
for( j=0,15, calcule_série_até_j_para_S; calcule_pol_em_j_para_aux; print1(j," Serie=",S,"P(",j,")=",aux))
As séries são:
Observação: Se chegou a conclusão que alguma das séries não pode ser escrita como um polinômio, apresente um CONTRA-EXEMPLO, isto é, SE o polinômio foi computado corretamente (para valores muito grande de L - indique o último que computou) e existe algum ponto , , apresente estes valores.
Solução:
\\ Exemplo de program Pari-GP: 25/08/1997 \\ -------------------------------------- \\ Encontra "formas fechadas" para series que tenham "solucao" polinomial \\ Usa sistemas lineares \\ Se S(k):=f(0)+f(1)+ ... +f(k) e \\ existem L e P(j):=a_0 + a_1 j + a_2 j^2 +...+ a_L j^L, \\ tais que S(j)=P(j), para todo j natural \\ \\ Entao A x = b, onde x[i]=a_i, b[i]=S(i) e \\ _ _ _ _ _ _ \\ |1 0 0 ... 0 | | a_0 | | b_0 | \\ |1 1 1 ... 1 | | a_1 | | b_1 | \\ |1 2 2^2 ... 2^L | | a_2 | = | b_2 | \\ |. . . | | ... | | ... | \\ |1 L L^2 ... L^L | | a_L | | b_L | \\ - - - - - - \\ Define a serie S(k) [ f(n) = n^2 ]: \\ "Chute" para o valor L => constroe matriz A[.,.] L = 10 \\print(A): \\ No GP: 0^0=1 \\ A=[ 1,0,0, ...,0 ; \\ 1,1,1, ...,1 ; \\ 1,2,2^2,...,2^L; \\ ... \\ 1,L,L^2,...,L^L]: \\ Constroe vetor b => b[i] = f(0) + f(1) + ... + f(i) b = vector( L+1, x, sum(0, n=0, x-1, f(n) ) ): \\print(b): \\ Encontra os coeficientes do polinomio P(.) x=gauss(A,b): print(): print("Coeficientes:",x): \\ Confere se a solucao encontrada coincide com os valores da serie print("Para conferir Resultado: Serie efetiva x Pol. Calculado "): print(" Serie Polinomio"): s=0: for(j=1,10, s=s+f(j): print1("j=",j," | S=",s," "): aux=0: for(k=1,L+1, aux=0: for(k=1,L+1, aux=aux+x[k]*j^(k-1) ): print(aux) ) ): \q