Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

legendre

ルジャンドル陪関数

説明

P = legendre(n,X) は、X の各要素に対し求められる次数 n および位数 m = 0, 1, ..., nルジャンドル陪関数を計算します。

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 を計算します。値の 1 番目の行は m=0 に対応し、2 番目の行は 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)!.

1 行目では、m=0 であるため、2 つの正規化は同じです。2 行目では、各値に乗算されるスケーリング定数は -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 のすべての値に適用されます。そのため、1 行目と 2 行目ではスケーリング係数が異なります。

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

球面調和関数はラプラス方程式の解の中に現れ、球の表面で定義される関数を表すために使用されます。Y32 の球面調和関数を計算および表示するには、legendre を使用します。

球面調和関数の方程式には、ルジャンドル関数の項と、複素指数が含まれます。

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 を使用して、結果の向きを phi および theta と同じサイズの行列とします。

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. The axes with title $Y_3^2$ spherical harmonic contains an object of type surface.

入力引数

すべて折りたたむ

ルジャンドル関数の次数。正の整数として指定します。legendre は、指定した次数について、m = 0 から m = n までのすべての位数 m に対して Pnm(x) を計算します。

例: legendre(2,X)

入力値。スカラー、ベクトル、行列、または [-1,1] の範囲の実数値の多次元配列として指定します。たとえば、球面調和関数の場合、入力値として X = cos(theta) を使用して Pnm(cosθ) を計算することが一般的です。

例: legendre(2,cos(theta))

データ型: single | double

正規化タイプ。次の値のいずれかとして指定します。

例: legendre(n,X,'sch')

出力引数

すべて折りたたむ

ルジャンドル陪関数値。スカラー、ベクトル、行列または多次元配列として返されます。P の正規化は、normalization の値に依存します。

P のサイズは X のサイズによって異なります。

  • X がベクトルの場合、P はサイズが (n+1)length(X) 列の行列です。P(m+1,i) 要素は、X(i) で求められる次数 n、位数 m のルジャンドル陪関数の値です。

  • 一般に、PX より 1 次元高く、各要素 P(m+1,i,j,k,...) には、X(i,j,k,...) で求められる次数 n、位数 m のルジャンドル陪関数が含まれます。

制限

非正規化ルジャンドル陪関数の値は、n > 150 の場合は倍精度数の範囲からオーバーフローし、n > 28 の場合は単精度数の範囲からオーバーフローします。このオーバーフローにより、Inf 値と NaN 値が発生します。これらのしきい値より大きい位数については、代わりに 'sch' または 'norm' 正規化を使用するようにしてください。

詳細

すべて折りたたむ

ルジャンドル陪関数

ルジャンドル陪関数 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)

シュミット半正規化ルジャンドル陪関数

シュミット半正規化ルジャンドル陪関数は、非正規化ルジャンドル陪関数 Pnm(x) と次の関係があります。

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

完全正規化ルジャンドル陪関数

完全正規化ルジャンドル陪関数は次のように正規化され、

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

正規化関数は非正規化ルジャンドル陪関数 Pnm(x) と次の関係があります。

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

アルゴリズム

関数 legendrem における 3 項の逆方向再帰の関係を使用します。この再帰は、複素球面調和関数であるシュミット半正規化ルジャンドル陪関数 Qnm(x) の一種に関するものです。これらの関数は、次の式により標準の Abramowitz および 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 より前に導入