Main Content

legendre

버금 르장드르 함수(Associated Legendre Function)

설명

예제

P = legendre(n,X)는 차수가 n이고 계수가 m = 0, 1, ..., n버금 르장드르 함수를 계산하며, 이 함수는 X의 각 요소에 대해 실행됩니다.

예제

P = legendre(n,X,normalization)은 정규화된 버금 르장드르 함수를 계산합니다. normalization'unnorm'(디폴트 값), 'sch' 또는 'norm'일 수 있습니다.

예제

모두 축소

legendre 함수를 사용하여 벡터에 대해 연산을 수행하고 출력값의 형식을 검토합니다.

벡터에 대해 2차 르장드르 함수 값을 계산합니다.

deg = 2;
x = 0:0.1:0.2;
P = legendre(deg,x)
P = 3×3

   -0.5000   -0.4850   -0.4400
         0   -0.2985   -0.5879
    3.0000    2.9700    2.8800

출력값의 형식은 다음 두 조건을 충족합니다.

  • 각 행은 m(버금 르장드르 함수의 계수)의 서로 다른 값에 대한 함수 값을 포함합니다.

  • 각 열은 x의 서로 다른 값에 대한 함수 값을 포함합니다.

x = 0x = 0.1x = 0.2m = 0P20(0)P20(0.1)P20(0.2)m = 1P21(0)P21(0.1)P21(0.2)m = 2P22(0)P22(0.1)P22(0.2)

2차 버금 르장드르 함수 P2m의 방정식은 다음과 같습니다.

P2m(x)=(-1)m(1-x2)m/2dmdxm[12(3x2-1)].

따라서 P20(0)의 값은 다음과 같습니다.

P20(0)=[12(3x2-1)]|x=0=-12.

이 결과는 P(1,1) = -0.5000과 일치합니다.

다양한 정규화를 사용하여 버금 르장드르 함수 값을 계산합니다.

정규화되지 않은 1차 르장드르 함수 값 P1m을 계산합니다. 값의 첫 번째 행은 m=0에 대응하고 두 번째 행은 m=1에 대응합니다.

x = 0:0.2:1;
n = 1;
P_unnorm = legendre(n,x)
P_unnorm = 2×6

         0    0.2000    0.4000    0.6000    0.8000    1.0000
   -1.0000   -0.9798   -0.9165   -0.8000   -0.6000         0

다음으로, 슈미트의 반정규화된 함수 값을 계산합니다. 정규화되지 않은 값과 비교하면 슈미트의 반정규화된 형태는 m>0일 때 다음과 같은 스케일링 인자만큼 다릅니다.

(-1)m2(n-m)!(n+m)!.

첫 번째 행의 경우 m=0이므로 두 정규화 값은 모두 같습니다. 두 번째 행의 경우 각 값에 곱해지는 스케일링 상수가 -1이 됩니다.

P_sch = legendre(n,x,'sch')
P_sch = 2×6

         0    0.2000    0.4000    0.6000    0.8000    1.0000
    1.0000    0.9798    0.9165    0.8000    0.6000         0

C1 = (-1) * sqrt(2*factorial(0)/factorial(2))
C1 = -1

마지막으로, 완전히 정규화된 함수 값을 계산합니다. 정규화되지 않은 값과 비교하면 완전히 정규화된 형태는 다음과 같은 스케일링 인자만큼 다릅니다.

(-1)m(n+12)(n-m)!(n+m)!.

이 스케일링 인자는 m의 모든 값에 적용되므로 첫 번째 행과 두 번째 행이 서로 다른 스케일링 인자를 갖습니다.

P_norm = legendre(n,x,'norm')
P_norm = 2×6

         0    0.2449    0.4899    0.7348    0.9798    1.2247
    0.8660    0.8485    0.7937    0.6928    0.5196         0

Cm0 = sqrt((3/2))
Cm0 = 1.2247
Cm1 = (-1) * sqrt((3/2)/2)
Cm1 = -0.8660

라플라스 방정식의 해에서 기인하는 구면 조화 함수는 구 곡면에서 정의된 함수를 나타내는 데 사용됩니다. legendre를 사용하여 Y32에 대한 구면 조화 함수를 계산하고 시각화합니다.

구면 조화 함수의 방정식은 다음과 같이 르장드르 함수에 대한 항과 복소수 지수를 포함합니다.

Ylm(θ,ϕ)=(2l+1)(l-m)!4π(l+m)!Plm(cosθ)eimϕ,-lml.

먼저 0θπ (여위도각)와 0ϕ2π(방위각)의 모든 조합을 나타내는 값의 그리드를 만듭니다. 여기서 여위도 θ는 0(북극)부터 π/2(적도)를 거쳐 π(남극)까지의 범위를 갖습니다.

dx = pi/60;
col = 0:dx:pi;
az = 0:dx:2*pi;
[phi,theta] = meshgrid(az,col);

이 그리드에서 l=3에 대해 Plm(cos θ )를 계산합니다.

l = 3;
Plm = legendre(l,cos(theta));

legendrem의 모든 값에 대해 해를 계산하기 때문에 Plm은 기타 함수 값을 일부 포함합니다. m=2에 대한 값을 추출하고 나머지는 무시합니다. reshape 함수를 사용하여 결과를 phitheta와 동일한 크기를 갖는 행렬로 만듭니다.

m = 2;
if l ~= 0
    Plm = reshape(Plm(m+1,:,:),size(phi));
end

Y32에 대한 구면 조화 함수 값을 계산합니다.

a = (2*l+1)*factorial(l-m);
b = 4*pi*factorial(l+m);
C = sqrt(a/b);
Ylm = C .*Plm .*exp(1i*m*phi);

구면 좌표를 카테시안 좌표로 변환합니다. 여기서 π/2-θπ/2(북극)부터 0(적도)을 거쳐 -π/2(남극)까지의 범위를 갖는 위도각이 됩니다. 양과 음의 실수 값을 모두 사용하여 Y32에 대한 구면 조화 함수를 플로팅합니다.

[Xm,Ym,Zm] = sph2cart(phi, pi/2-theta, abs(real(Ylm)));
surf(Xm,Ym,Zm)
title('$Y_3^2$ spherical harmonic','interpreter','latex')

Figure contains an axes object. The axes object with title YSubScript 3 SuperScript 2 baseline spherical harmonic contains an object of type surface.

입력 인수

모두 축소

르장드르 함수의 차수로, 양의 정수로 지정됩니다. 지정된 차수에 대해 legendrem = 0부터 m = n까지 모든 차수 m에 대한 Pnm(x)를 계산합니다.

예: legendre(2,X)

입력값으로, 스칼라, 벡터, 행렬 또는 범위 [-1,1]의 실수 값으로 구성된 다차원 배열로 지정됩니다. 예를 들어, 구면 조화 함수에서는 흔히 입력값으로 X = cos(theta)를 사용하여 Pnm(cosθ)를 계산합니다.

예: legendre(2,cos(theta))

데이터형: single | double

출력 인수

모두 축소

버금 르장드르 함수 값으로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. P의 정규화는 normalization의 값에 따라 달라집니다.

P의 크기는 다음과 같이 X의 크기에 따라 달라집니다.

  • X가 벡터이면 P는 크기가 (n+1)×length(X)인 행렬입니다. P(m+1,i) 요소는 차수가 n이고 계수가 m인 버금 르장드르 함수가 X(i)에서 계산된 값입니다.

  • 일반적으로 PX보다 차원이 하나 더 많으며 각 요소 P(m+1,i,j,k,...)에는 X(i,j,k,...)에서 실행되는 버금 르장드르 함수(차수 n, 계수 m)가 포함됩니다.

제한 사항

정규화되지 않은 버금 르장드르 함수의 값은 n > 150인 경우 배정밀도 숫자의 범위를 넘어서고 n > 28인 경우 단정밀도 숫자의 범위를 넘어섭니다.(오버플로 발생) 이러한 오버플로의 결과로 Inf 값과 NaN 값이 발생합니다. 이렇게 계수가 임계값보다 큰 경우 'sch' 또는 'norm' 정규화를 사용하는 것이 좋습니다.

세부 정보

모두 축소

버금 르장드르 함수(Associated Legendre Function)

버금 르장드르 함수 y=Pnm(x)는 다음 일반 르장드르 미분 방정식의 해입니다.

(1x2)d2ydx22xdydx+[n(n+1)m21x2]y=0.

n은 버금 르장드르 함수의 정수 차수이고 m은 정수 차수입니다. 여기서 0mn입니다.

버금 르장드르 함수 Pnm(x)는 다음 방정식에 대한 일반해입니다.

Pnm(x)=(1)m(1x2)m/2dmdxmPn(x).

이러한 함수는 다음과 같은 해의 부분 집합인 르장드르 다항식 Pn(x)의 도함수로 정의됩니다.

Pn(x)=12nn!dndxn(x21)n.

처음 몇 개의 르장드르 다항식은 다음과 같습니다.

n의 값Pn(x)
0P0(x)=1
1P1(x)=x
2P2(x)=12(3x21)

슈미트의 반정규화된 버금 르장드르 함수(Schmidt Seminormalized Associated Legendre Function)

슈미트의 반정규화된 버금 르장드르 함수는 정규화되지 않은 버금 르장드르 함수 Pnm(x)와 다음과 같은 관계식을 가집니다.

Pn(x) for m=0,Snm(x)=(1)m2(nm)!(n+m)!Pnm(x) for m>0.

완전히 정규화된 버금 르장드르 함수(Fully Normalized Associated Legendre Function)

완전히 정규화된 버금 르장드르 함수는 다음과 같이 정규화됩니다.

11[Nnm(x)]2dx=1.

정규화된 함수는 정규화되지 않은 버금 르장드르 함수 Pnm(x)와 다음과 같은 관계식을 가집니다.

Nnm(x)=(1)m(n+12)(nm)!(n+m)!Pnm(x).

알고리즘

legendrem에 3항 후방향 재귀 관계(Backward Recursion Relationship)를 사용합니다. 이 재귀는 복잡한 구면 조화 함수인 슈미트의 반정규화된 버금 르장드르 함수 Qnm(x)의 버전에서 실행됩니다. 이러한 함수는 표준 Abramowitz and Stegun [1] 함수 Pnm(x)와 다음과 같은 관계식을 가집니다.

Pnm(x)=(n+m)!(nm)!Qnm(x).

이러한 함수는 슈미트 형식과 다음과 같은 관계식을 가집니다.

m=0:Snm(x)=Qn0(x)m>0:Snm(x)=(1)m2Qnm(x).

참고 문헌

[1] Abramowitz, M. and I. A. Stegun, Handbook of Mathematical Functions, Dover Publications, 1965, Ch.8.

[2] Jacobs, J. A., Geomagnetism, Academic Press, 1987, Ch.4.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |