############################################################################## # FÍSICA COMPUTACIONAL II # # por # # Francisco Carlos Lavarda # ############################################################################## Tutorial de MAXIMA: Funções Ortogonais ====================================== ** Exemplos de ortogonalidade de funções. ** As funções sen(x) e cos(x) são ortogonais em um intervalo que contenha um período, como x=[0,2pi]. Funções ortogonais são aquelas cuja integral do produto delas se anula em um determinado intervalo (que depende da "família" de funções que se considere). Veja que sen e cos são ortogonais: integrate((sin(x)*cos(x)),x,0,2*%pi); Já o produto de sen*sen não se anula: integrate((sin(x)*sin(x)),x,0,2*%pi); nem o de cos*cos: integrate((cos(x)*cos(x)),x,0,2*%pi); e ambas resultam pi. ** As funções cos(mx), m>=1, que são usadas nas Séries de Fourier, formam um conjunto de funções ortogonais no intervalo [0,2pi]. Por exemplo, as funções cos(2x) e cos(3x) são ortogonais neste intervalo. O mesmo vale para o conjunto de funções sen(mx), m>=1. Faça os testes. ** Funções "ortonormais" (ortogonal e normal) são funções ortogonais cujas integrais resultam 1 (quando trata-se do produto da função por ela mesma) ou 0 (produto cruzado). Veja que sen(x)/sqrt(pi) e cos(x)/sqrt(pi) formam um conjunto assim, refazendo os comandos acima corretamente modificados. --------------------------------------------------------------------------- ** Para trabalhar com os polinômios ortogonais em geral, carregue a livraria orthopoly: load("orthopoly"); ** Vamos exemplificar os comandos, com os Polinômios de Legendre do primeiro tipo, que formam um conjunto de funções ortogonais em intervalos simétricos ao redor de x=0. ** Imprimir o Polinômio de Legendre de ordem n: legendre_p(n,x); em que n deve ser um número inteiro maior ou igual a zero. ** Para apresentar o resultado como potências de x: rat(%); (ou ratsimp(%)). ** Fazer o gráfico do Polinômio de Legendre de ordem n: plot2d(legendre_p(n,x),[x,-1,1]); em que n deve ser um número inteiro maior ou igual a zero. ** Conferir a ortogonalidade dos Polinômios de Legendre: integrate((legendre_p(n,x)*legendre_p(m,x)),x,-1,1); em que n e m devem ser números inteiros maiores ou iguais a zero. ** Outras funções ortogonais têm sua ortogonalidade definida como uma integral que além do produto de duas funções da família, ainda contém uma terceira função. Estas integrais, em suas formas genéricas, são conhecidas como "relações de ortogonalidade". ** Polinômios de Hermite: integrate((hermite(n,x)*hermite(m,x)*exp(-x^2)),x,-inf,inf); em que n e m devem ser números inteiros maiores ou iguais a zero. Neste caso, o intervalo é [-inf,inf] e o resultado vale sqrt(pi)*n!*2^n caso n=m e 0 caso contrário. ** Polinômios de Laguerre: integrate((laguerre(n,x)*laguerre(m,x)*exp(-x)),x,0,inf); em que n e m devem ser números inteiros maiores ou iguais a zero. Neste caso, o intervalo é [0,inf] e o resultado vale 1 caso n=m e 0 caso contrário (veja que se trata de funções ortonormais). ** De forma geral, funções ortogonais (FO), obedecem a uma relação de ortogonalidade do tipo: integrate((w(x)*FO(n,x)*FO(m,x)),x,xi,xf); em w(x) é uma "função peso", FO(n,x) é uma função de ordem n na variável x e x varia no intervalo [xi,xf]. ** Confira a ortogonalidade dos conjuntos de funções abaixo: conjunto w(x) xi xf ----------------------------------------------------- chebyshev tipo 1 1/sqrt(1-x^2) -1 1 chebyshev tipo 2 sqrt(1-x^2) -1 1 Gegenbauer (1-x^2)^(a-1/2) -1 1 Hermite exp(-x^2) -inf inf Laguerre exp(-x) 0 inf Laguerre generalizada exp(-x)*x^a 0 inf Legendre tipo 1 1 -1 1 Jacobi (1-x)^a*(1+x)^b -1 1 Os parâmetros "a" e "b" são específicos de cada tipo de função e tem significado próprio para cada uma delas. Caso fique curioso, peça para o MAXIMA imprimir na tela cada um dos polinômios com estes parâmetros. Abaixo está reproduzida a tabela mostrada no texto introdutório deste tópico, que contém os nomes pelos quais o MAXIMA reconhece cada uma das funções citadas acima e mais algumas. Função Comando Maxima Condições ----------------------------------------------------------------------------- Chebyshev tipo 1 chebyshev_t(n, x) n > -1 Chebyshev tipo 2 chebyshev_u(n, x) n > -1 Laguerre generalizada gen_laguerre(n,a,x) n > -1 Laguerre laguerre(n,x) n > -1 Hermite hermite(n,x) n > -1 Jacobi jacobi_p(n,a,b,x) n > -1, a, b > -1 Legendre associada tipo 1 assoc_legendre_p(n,m,x) n > -1 Legendre associada tipo 2 assoc_legendre_q(n,m,x) n > -1, m > -1 Legendre tipo 1 legendre_p(n,x) n > -1 Legendre tipo 2 legendre_q(n,x) n > -1 Hankel esférica tipo 1 spherical_hankel1(n, x) n > -1 Hankel esférica tipo 2 spherical_hankel2(n, x) n > -1 Bessel esférica tipo 1 spherical_bessel_j(n,x) n > -1 Bessel esférica tipo 2 spherical_bessel_y(n,x) n > -1 Harmônicos Esféricos spherical_harmonic(n,m,x,y) n > -1, |m| <= n Ultraesferica (Gegenbauer) ultraspherical(n,a,x) n > -1 O MAXIMA apresenta outras funções especiais que não serão estudadas neste tópico, como as Funções de Bessel, Airy, elípticas, gama, erro, etc.