[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Índice] [ ? ]

17. Polinômios Ortogonais


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Índice] [ ? ]

17.1 Introdução a Polinômios Ortogonais

O pacote specfun contém Código Maxima para a avaliação de todos os polinômios ortogonais listados no Capítulo 22 de Abramowitz e Stegun. Esses incluem polinômios de Chebyshev, Laguerre, Hermite, Jacobi, Legendre, e ultraesférico (Gegenbauer). Adicionalmente, specfun contém códigos para funções de Bessel esféricas, funções de Hankel esféricas, e funções harmônicas esféricas. O pacote specfun não é parte do Maxima propriamente; ele é chamado por meio de requisição de usuário via load ou automaticamente via o sistema autoload.

A seguinte tabela lista cada função em specfun. specfun é um nome Maxima, restrições sobre seus argumentos, e uma referência para o algorítmo que specfun usa para avaliar isso. Com poucas excessões, specfun segue as convenções de Abramowitz e Stegun. Em todos os casos, m e n devem ser inteiros.

A&S refere-se a Abramowitz e Stegun, Handbook of Mathematical Functions (10th edição, Dezembro de 1972), G&R refere-se a Gradshteyn e Ryzhik, Table of Integrals, Series, and Products (1980 edição corrigida e ampliada), e Merzbacher refere-se a Quantum Mechanics (segunda edição, 1970).

Função

Nome Maxima

Restrições

Referência(s)

 Chebyshev T

chebyshev_t(n, x)

n > -1

A&S 22.5.31

Chebyshev U

chebyshev_u(n, x)

n > -1

A&S 22.5.32

generalized Laguerre

gen_laguerre(n,a,x)

n > -1

A&S página 789

Laguerre

laguerre(n,x)

n > -1

A&S 22.5.67

Hermite

hermite(n,x)

n > -1

A&S 22.4.40, 22.5.41

Jacobi

jacobi_p(n,a,b,x)

n > -1, a, b > -1

A&S página 789

associated Legendre P

assoc_legendre_p(n,m,x)

n > -1

A&S 22.5.37, 8.6.6, 8.2.5

associated Legendre Q

assoc_legendre_q(n,m,x)

n > -1, m > -1

G & R 8.706

Legendre P

legendre_p(n,m,x)

n > -1

A&S 22.5.35

Legendre Q

legendre_q(n,m,x)

n > -1

A&S 8.6.19

spherical Hankel 1st

spherical_hankel1(n, x)

n > -1

A&S 10.1.36

spherical Hankel 2nd

spherical_hankel2(n, x)

n > -1

A&S 10.1.17

spherical Bessel J

spherical_bessel_j(n,x)

n > -1

A&S 10.1.8, 10.1.15

spherical Bessel Y

spherical_bessel_y(n,x)

n > -1

A&S 10.1.9, 10.1.15

spherical harmonic

spherical_harmonic(n,m,x,y)

n > -1, |m| <= n

Merzbacher 9.64

ultraspherical (Gegenbauer)

ultraspherical(n,a,x)

n > -1

A&S 22.5.27

O pacote specfun é primáriamente planejado para computação simbólica. A computação simbólica espera que specfun forneça resultados acurados em ponto flutuante também; todavia, nenhuma reinvidicação foi feita para que os algorítmos sejam também adequados para avaliação numérica. Algum esforço, todavia, tem sido feito para fornecer boa performace numérica. Quando todos os argumentos, exceto pela ordem, forem números em ponto flutuante (mas não grandes números em ponto flutuante), muitas funções em specfun chamam uma versão mododeclarada da função de Jacobi. Isso aumenta grandemente a velocidade de avaliação de números em ponto flutuante de polinômios ortogonais.

specfun manuseia muitos domínios de erro através do retorno de uma função não avaliada. Nenhuma regra de simplificação (baseada em relações recursivas) é definida para funções não avaliadas. Isso é possível para uma expressão envolvendo adições de funções especiais não avaliadas para tender para zero, ainda Maxima é incapaz de reduzir essas funções a zero.

load ("specfun") chama o pacote specfun. Alternativamente, setup_autoload faz com que o pacote seja chamado quando uma das funções specfun aparecer em uma expressão. setup_autoload pode aparecer na linha de comando ou no arquivo maxima-init.mac. Veja setup_autoload.

Um exemplo de uso de specfun é

 
(%i1) load ("specfun")$
(%i2) [hermite (0, x), hermite (1, x), hermite (2, x)];
                                         2
(%o2)               [1, 2 x, - 2 (1 - 2 x )]
(%i3) diff (hermite (n, x), x);
(%o3)                 2 n hermite(n - 1, x)

Geralmente, código compilado executa mais rápidamente que o código traduzido; todavia, código traduzido pode ser melhor para desenvolvimento de programas.

Algumas funções (a saber jacobi_p, ultraspherical, chebyshev_t, chebyshev_u e legendre_p), retornam um representação de série quando a ordem for um inteiro simbólico. A representação de série não é usada por specfun para qualquer computação, mas essa representação de série pode ser simplificada pelo Maxima automaticamente, ou a simplificação pode ser possível para usar as séries para avaliar a função através de manipulações adicionais. Por exemplo:

 
(%i1) load ("specfun")$
(%i2) legendre_p (n, x);
(%o2)                   legendre_p(n, x)
(%i3) ultraspherical (n, 3/2, 2);
             genfact(3, n, - 1) jacobi_p(n, 1, 1, 2)
(%o3)        ---------------------------------------
                       genfact(2, n, - 1)
(%i4) declare (n, integer)$
(%i5) legendre_p (n, x);
       n - 1
       ====
       \                                                 n - i%
(%o5) ( >     binomial(n, i%) binomial(n, n - i%) (x - 1)
       /
       ====
       i% = 1

                                    i%          n          n   n
                             (x + 1)   + (x + 1)  + (x - 1) )/2
(%i6) ultraspherical (n, 3/2, 2);
                          n - 1
                          ====
                          \       i%
(%o6) genfact(3, n, - 1) ( >     3   binomial(n + 1, i%)
                          /
                          ====
                          i% = 1

                                    n
 binomial(n + 1, n - i%) + (n + 1) 3  + n + 1)

                      n
/(genfact(2, n, - 1) 2 )

O primeiro e o último termos da adição são adicionados fora do somatório. Removendo esses dois termos evita-se erros do Maxima associados com termos 0^0 em uma adição que pode avaliar para 1, mas avaliada para 0 em um somatório no Maxima. Porque a soma de índices vai de 1 a n - 1, o menor índice de soma excederá o maior índice de soma quando n = 0; escolhendo sumhack para true temos uma correção. Por exemplo:

 
(%i1) load ("specfun")$
(%i2) declare (n, integer)$
(%i3) e: legendre_p(n,x)$
(%i4) ev (e, sum, n=0);
Lower bound to sum: 1
is greater than the upper bound: - 1
 -- an error.  Quitting.  To debug this try debugmode(true);
(%i5) ev (e, sum, n=0, sumhack=true);
(%o5)                           1

Muitas funções em specfun possuem uma propriedade gradef; derivadas com relação a ordem ou outros parāmetros de funções são indefinidas, e uma tentativa de calcular tal uma derivada retorna como resiltado uma mensagem de erro.

O pacote specfun e sua documentação foram escritos por Barton Willis da Universidade de Nebraska em Kearney. Foi liberado sob os termos da Licença Pública Geral (GPL). Envie relatórios de erro e comentários sobre esse pacote para willisb@unk.edu. Em seu relatório, por favor inclua a versão do Maxima, como reportado por build_info(), e a versão de specfun, como reportado por get ('specfun, 'version).


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Índice] [ ? ]

17.2 Definições para Polinômios Ortogonais

Função: assoc_legendre_p (n, m, x)

Retorna a função associada de Legendre de primeiro tipo para inteiros n > -1 e m > -1. Quando | m | > n e n >= 0, teremos assoc_legendre_p (n, m, x) = 0. Referência: A&S 22.5.37 página 779, A&S 8.6.6 (segunda equação) página 334, e A&S 8.2.5 página 333.

load ("specfun") chama essa função.

Veja assoc_legendre_q, legendre_p, e legendre_q.

Função: assoc_legendre_q (n, m, x)

Retorna a função associada de Legendre de segundo tipo para inteiros n > -1 e m > -1.

Referência: Gradshteyn e Ryzhik 8.706 página 1000.

load ("specfun") chama essa função.

Veja também assoc_legendre_p, legendre_p, e legendre_q.

Função: chebyshev_t (n, x)

Retorna a função de Chebyshev de primeiro tipo para inteiros n > -1.

Referência: A&S 22.5.31 página 778 e A&S 6.1.22 página 256.

load ("specfun") chama essa função.

Veja também chebyshev_u.

Função: chebyshev_u (n, x)

Retorna a função de Chebyshev de segundo tipo para inteiros n > -1.

Referência A&S, 22.8.3 página 783 e A&S 6.1.22 página 256.

load ("specfun") chama essa função.

Veja também chebyshev_t.

Função: gen_laguerre (n, a, x)

Retorna o polinômio generalizado de Laguerre para inteiros n > -1.

load ("specfun") chama essa função.

Referência tabela na página 789 em A&S.

Função: hermite (n, x)

Retorna o polinômio de Hermite para inteiros n > -1.

load ("specfun") chama essa função.

Referência A&S 22.5.40 e 22.5.41, página 779.

Função: jacobi_p (n, a, b, x)

Retorna o polinômio de Jacobi para inteiros n > -1 e a e b simbólicos ou a > -1 e b > -1. (Os polinômios de Jacobi são atualmente definidos para todos a e b ; todavia, o polinômio de Jacobi peso (1-x)^a(1+x)^b não é integrável para a <= -1 ou para b <= -1.)

Quando a, b, e x forem números em ponto flutuante (mas não grandes números em ponto flutuante) specfun chama uma versão especial modo declarada de jacobi_p. Para valore numéricos, a versão modo declarada é mais rápida que a outra versão. Muitas funções em specfun são calculados como um caso especial dos polinômios de Jacobi; Eles também desfrutam do impulso de velocidade da versão modo declarada de jacobi.

Se n tiver sido declarado para ser um inteiro, jacobi_p (n, a, b, x) retorna uma representação de somatório para a função de Jacobi. Porque Maxima simplifica 0^0 para 0 em uma adição, dois termos da adição são adicionados fora do somatório.

load ("specfun") chama essa função.

Referência tabela na página 789 em A&S.

Função: laguerre (n, x)

Retorna o polinômio de Laguerre para inteiros n > -1.

Referência A&S 22.5.16, página 778 e A&S página 789.

load ("specfun") chama essa função.

Veja também gen_laguerre.

Função: legendre_p (n, x)

Retorna o polinômio de Legendre de primeiro tipo para inteiros n > -1.

Referência A&S 22.5.35 página 779.

load ("specfun") chama essa função.

Veja legendre_q.

Função: legendre_q (n, x)

Retorna o polinômio de Legendre de primeiro tipo para inteiros n > -1.

Referência A&S 8.6.19 página 334.

load ("specfun") chama essa função.

Veja também legendre_p.

Função: spherical_bessel_j (n, x)

Retorna a função de Bessel esférica do primeiro tipo para inteiros n > -1.

Referência A&S 10.1.8 página 437 e A&S 10.1.15 página 439.

load ("specfun") chama essa função.

Veja também spherical_hankel1, spherical_hankel2, e spherical_bessel_y.

Função: spherical_bessel_y (n, x)

Retorna a função de Bessel esférica do segundo tipo para inteiros n > -1.

Referência A&S 10.1.9 página 437 e 10.1.15 página 439.

load ("specfun") chama essa função.

Veja também spherical_hankel1, spherical_hankel2, e spherical_bessel_y.

Função: spherical_hankel1 (n, x)

Retorna a função de Hankel esférica do primeiro tipo para inteiros n > -1.

Referência A&S 10.1.36 página 439.

load ("specfun") chama essa função.

Veja também spherical_hankel2, spherical_bessel_j, e spherical_bessel_y.

Função: spherical_hankel2 (n, x)

Retorna a função de Hankel esférica do segundo tipo para inteiros n > -1.

Referência A&S 10.1.17 página 439.

load ("specfun") chama essa função.

Veja também spherical_hankel1, spherical_bessel_j, e spherical_bessel_y.

Função: spherical_harmonic (n, m, x, y)

Retorna a função harmônica esférica para inteiros n > -1 e | m | <= n .

Referência Merzbacher 9.64.

load ("specfun") chama essa função.

Veja também assoc_legendre_p.

Função: ultraspherical (n, a, x)

Retorna os polinômios ultraesféricos para inteiros n > -1. Os polinômios ultraesféricos são também conhecidos com polinômios de Gegenbauer.

Referência A&S 22.5.27

load ("specfun") chama essa função.

Veja também jacobi_p.


[ << ] [ >> ]           [Top] [Contents] [Índice] [ ? ]

This document was generated by root on Outubro, 3 2006 using texi2html 1.76.