Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
legendre
funções associadas de Legendre
Seqüência de Chamamento
y = legendre(n,m,x [,normflag])
Parâmetros
- n
inteiro não-negativo ou vetor de inteiros não-negativos igualmente espaçados com incremento igual a 1
- m
inteiro não-negativo ou vetor de inteiros não-negativos igualmente espaçados com incremento igual a 1
- x
vetor (linha) de reais (os elementos de
x
devem estar no intervalo(-1,1)
)- normflag
(opcional) escalar string
Descrição
Quando n
e m
são escalares,
legendre(n,m,x)
avalia a função de Legendre associada
Pnm(x) em todos os elementos de x
. A definição usada é
:
m m m/2 d Pnm(x) = (-1) (1-x^2) --- Pn(x) m dx
onde Pn
é o polinômio de Legendre de grau
n
. Então, legendre(n,0,x)
avalia o
polinômio de Legendre Pn(x) em todos os elementos de
x
.
Quando normflag é igual a "norm" o resultado é uma versão
normalizada (sem o fator (-1)^m
), precisamente :
_____________ m /(2n+1)(n-m)! m/2 d Pnm(x,"norm") = /-------------- (1-x^2) --- Pn(x) \/ 2 (n+m)! m dx
que é útil para computar funções harmônicas esféricas (ver exemplo 3):
Por eficiência, um dos primeiros dois argumentos pode ser um vetor,
por exemplo legendre(n1:n2,0,x)
avalia todos os
polinômios de Legendre de graus n1, n1+1, ..., n2 nos
elementos de x
e legendre(n,m1:m2,x)
avalia todas as funções de Legendre associadas Pnm para m=m1,
m1+1, ..., m2 em x
.
Formato de Saída
Em qualquer caso, o formato é y
:
e :
y(i,j) = P(n(i),m;x(j)) se n é um vetor y(i,j) = P(n,m(i);x(j)) se m é um vetor y(1,j) = P(n,m;x(j)) se ambos n e m são escalares
de tal modo que x
é preferivelmente um vetor
linha, mas qualquer matriz mx x nx
é excetuada e
considerada como uma matriz 1 x (mx * nx)
matrix,
reformada segundo a ordem das colunas.
Exemplos
// exemplo 1 : plot dos primeiros 6 polinômios de Legendre em (-1,1) l = nearfloat("pred",1); x = linspace(-l,l,200)'; y = legendre(0:5, 0, x); clf() plot2d(x,y', leg="p0@p1@p2@p3@p4@p5@p6") xtitle("Os 6 primeiros polinômios de Legendre") // exemplo 2 : plot das funções associadas de Legendre de grau 5 l = nearfloat("pred",1); x = linspace(-l,l,200)'; y = legendre(5, 0:5, x, "norm"); clf() plot2d(x,y', leg="p5,0@p5,1@p5,2@p5,3@p5,4@p5,5") xtitle("As funções associadas de Legendre (normalizadas) de grau 5") // exemplo 3 : definindo e plotando uma função harmônica esférica // 3-1 : definindo a função Ylm function [y]=Y(l, m, theta, phi) // teta pode ser um escalar ou um vetor linha // phi pode ser um escalar ou um vetor coluna if m >= 0 then y = (-1)^m/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, m, cos(theta), "norm") else y = 1/(sqrt(2*%pi))*exp(%i*m*phi)*legendre(l, -m, cos(theta), "norm") end endfunction // 3.2 : definindo outra função útil function [x, y, z]=sph2cart(theta, phi, r) // vetor linha teta 1 x nt // vetor coluna phi np x 1 // r escalar ou matriz np x nt (r(i,j) o comprimento em phi(i) theta(j)) x = r.*(cos(phi)*sin(theta)); y = r.*(sin(phi)*sin(theta)); z = r.*(ones(phi)*cos(theta)); endfunction // 3-3 plot de Y31(theta,phi) l = 3; m = 1; theta = linspace(0.1,%pi-0.1,60); phi = linspace(0,2*%pi,120)'; f = Y(l,m,theta,phi); [x1,y1,z1] = sph2cart(theta,phi,abs(f)); [xf1,yf1,zf1] = nf3d(x1,y1,z1); [x2,y2,z2] = sph2cart(theta,phi,abs(real(f))); [xf2,yf2,zf2] = nf3d(x2,y2,z2); [x3,y3,z3] = sph2cart(theta,phi,abs(imag(f))); [xf3,yf3,zf3] = nf3d(x3,y3,z3); clf() subplot(1,3,1) plot3d(xf1,yf1,zf1,flag=[2 4 4]); xtitle("|Y31(theta,phi)|") subplot(1,3,2) plot3d(xf2,yf2,zf2,flag=[2 4 4]); xtitle("|Real(Y31(theta,phi))|") subplot(1,3,3) plot3d(xf3,yf3,zf3,flag=[2 4 4]); xtitle("|Imag(Y31(theta,phi))|")
Autores
- Smith, John M. (código dxlegf.f de Slatec)
- B. Pincon (interface Scilab)
<< gammaln | Funções Especiais | Randlib >> |