Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語 - Русский
Ajuda do Scilab >> Funções Especiais > legendre

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 :

max(length(n),length(m)) x length(x)

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)
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Feb 12 19:58:37 CET 2018