Main Content

legendre

连带 Legendre 函数

说明

示例

P = legendre(n,X)X 中的每个元素计算阶数为 n、级数为 m = 0, 1, ..., n 时的连带 Legendre 函数

示例

P = legendre(n,X,normalization) 计算连带 Legendre 函数的归一化版本。normalization 可以是 'unnorm'(默认值)、'sch''norm'

示例

全部折叠

使用 legendre 函数对向量进行运算,然后检查输出的格式。

计算向量的二阶 Legendre 函数值。

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(连带 Legendre 函数的阶)值的函数值

  • 每列包含不同 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)

二阶连带 Legendre 函数 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 一致。

计算几种归一化情况下的连带 Legendre 函数值。

计算非归一化一阶 Legendre 函数值 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

接下来,计算 Schmidt 半归一化函数值。与非归一化值相比,当 m>0 时,Schmidt 形式的值都乘以缩放因子:

(-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 的球谐函数。

球谐函数的方程包括 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 函数将结果定向为与 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.

输入参数

全部折叠

Legendre 函数的阶,指定为正整数。对于指定的阶,legendre 计算 m 表示的所有级数(从 m = 0m = n)的 Pnm(x)

示例: legendre(2,X)

输入值,指定为由 [-1,1] 范围内的实数值组成的标量、向量、矩阵或多维数组。例如,对于球谐函数,通常使用 X = cos(theta) 作为输入值来计算 Pnm(cosθ)

示例: legendre(2,cos(theta))

数据类型: single | double

归一化类型,指定为下列值之一。

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

输出参数

全部折叠

连带 Legendre 函数值,返回为标量、向量、矩阵或多维数组。P 的归一化取决于 normalization 的值。

P 的大小取决于 X 的大小:

  • 如果 X 是向量,则 P 是大小为 (n+1)×length(X) 的矩阵。P(m+1,i) 条目是在 X(i) 计算的阶数为 n、级数为 m 的连带 Legendre 函数。

  • 通常,PX 多一个维度,每个元素 P(m+1,i,j,k,...) 都包含在 X(i,j,k,...) 计算的阶数为 n 和阶数为 m 的连带 Legendre 函数。

局限性

非归一化的连带 Legendre 函数的值溢出 n > 150 的双精度数范围和 n > 28 的单精度数范围。此溢出导致 InfNaN 值。对于大于这些阈值的阶,请考虑改用 'sch''norm' 归一化。

详细信息

全部折叠

连带 Legendre 函数

连带 Legendre 函数 y=Pnm(x) 是以下常规 Legendre 微分方程的解:

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

n 是整数阶,m 是连带 Legendre 函数的整数级数,满足 0mn

连带 Legendre 函数 Pnm(x) 是此方程的最通用解:

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

它们是根据 Legendre 多项式 Pn(x) 的导数定义的,它们是由下式给出的解的子集:

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

前几个 Legendre 多项式为

n 的值Pn(x)
0P0(x)=1
1P1(x)=x
2P2(x)=12(3x21)

Schmidt 半归一化连带 Legendre 函数

Schmidt 半归一化连带 Legendre 函数与非归一化连带 Legendre 函数 Pnm(x) 的关系如下:

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

完全归一化的连带 Legendre 函数

完全归一化的连带 Legendre 函数按如下方式进行归一化:

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

归一化函数 Pnm(x) 与非归一化连带 Legendre 函数

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

的关系如下:

算法

legendrem 中使用三项后向递归关系。此递归基于 Schmidt 半归一化连带 Legendre 函数 Qnm(x),这些函数是复球谐函数。这些函数与标准 Abramowitz 和 Stegun [1] 函数 Pnm(x) 的关系如下:

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

它们与 Schmidt 形式的关系如下:

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 之前推出

另请参阅

| | | |