2026a

# legendre


连带 Legendre 函数

函数库: TyMath

# 语法

P = legendre(n,X)
P = legendre(n,X,normalization)

# 说明

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


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

# 示例

向量的连带 Legendre 函数值

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

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

using TyMath
deg = 2
x = [0,0.1,0.2]
P = legendre(deg,x)
P = 3×3 Matrix{Float64}:
-0.5       -0.485         -0.44
-0.0     -0.298496    -0.587878
3.0          2.97            2.88

输出的格式如下:

  • 每行包含不同 m(连带 Legendre 函数的阶)值的函数值
  • 每列包含不同 x 值的函数值

二阶连带 Legendre 函数 的方程为:

因此, 的值为:

该结果与 P(1,1) = -0.5000 一致。

比较 Legendre 归一化

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

计算非归一化一阶 Legendre 函数值 。 值的第一行对应于 m=0,第二行对应于 m=1。

using TyMath
x = 0:0.2:1
n = 1
P_unnorm = legendre(n,x)
P_unnorm = 2×6 Matrix{Float64}:
0.0         0.2              0.4          0.6     0.8    1.0
-1.0  -0.979796  -0.916515    -0.8   -0.6   -0.0

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

.

对于第一行,这两个归一化是相同的,因为 m=0。对于第二行,每个值都乘以缩放常量 -1。

P_sch = legendre(n,x,"sch")
P_sch = 2×6 Matrix{Float64}:
0.0        0.2          0.4         0.6   0.8  1.0
1.0  0.979796  0.916515   0.8   0.6  0.0
C1 = (-1) * sqrt(2 * factorial(0) / factorial(2) )
C1 = -1.0

最后,计算完全归一化的函数值。与非归一化值相比,完全归一化形式的值都乘以缩放因子:

.

此缩放因子适用于 m 的所有值,因此第一行和第二行具有不同缩放因子。

P_norm = legendre(n,x,"norm")
P_norm = 2×6 Matrix{Float64}:
0.0       0.244949  0.489898  0.734847  0.979796  1.22474
0.866025  0.848528  0.793725  0.69282   0.519615  0.0
Cm0 = sqrt((3/2))
Cm0 = 1.224744871391589
Cm1 = (-1) * sqrt((3/2)/2)
Cm1 = -0.8660254037844386
计算球谐函数

球谐函数出现在拉普拉斯方程的解中,用于表示在球面上定义的函数。使用 legendre 来计算和可视化 的球谐函数。

球谐函数的方程包括 Legendre 函数的一个项以及一个复指数:

首先,创建一个由值组成的网格,以表示 0≤θ≤π (余纬度角)和 0≤ϕ≤2π(方位角)的所有组合。此处,余纬度 θ 的范围从 0 度(位于北极)到 π/2 度(位于赤道),到 π 度(位于南极)。

using TyMath
using TyBase
using TyPlot
dx = pi/60;
col = 0:dx:pi;
az = 0:dx:2*pi;
phi,theta = meshgrid2(az,col);

计算l=3的网格上的

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

由于 legendre 为 m 的所有值计算答案,因此 Plm 会包含一些额外的函数值。提取 m=2 的值并丢弃其余值。使用 reshape 函数将结果定向为与 phi 和 theta 具有相同大小的矩阵。

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

计算 的球谐函数值。

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

将球面坐标转换为笛卡尔坐标。此处,π/2−θ 成为纬度角,范围从 π/2(位于北极),到 0 度(位于赤道),再到 −π/2 度(位于南极)。使用正负实数值绘制 的球谐函数。

Xm,Ym,Zm = sph2cart(phi,pi/2 .- theta,abs.(real.(Ylm)))
surf(Xm,Ym,Zm)
title(raw"$Y_3^2$球谐函数")

# 输入参数

n - Legendre 函数的阶
标量 | 向量 | 矩阵 | 多维数组

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

示例: legendre(2,X)

X - 输入值

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

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

数据类型: Int | Float64 | Float32 | Float16 | UInt

normalization - 归一化类型
"unnorm"(默认) | "sch" | "norm"

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

结果
"unnorm" 连带 Legendre 函数
"sch" Schmidt 半归一化连带 Legendre 函数
"norm" 完全归一化的连带 Legendre 函数

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

# 输出参数

P - 连带 Legendre 函数值
标量 | 向量 | 矩阵 | 多维数组

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

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

  • 如果 X 是向量,则 P 是大小为 (n+1)×length(X) 的矩阵。P[m+1,i] 条目是在 X[i] 计算的阶数为 n、级数为 m 的连带 Legendre 函数;
  • 通常,P 比 X 多一个维度,每个元素 P[m+1,i,j,k,...] 都包含在 X[i,j,k,...] 计算的阶数为 n 和阶数为 m 的连带 Legendre 函数。

# 局限性

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

# 详细信息

连带 Legendre 函数

连带 Legendre 函数 是以下常规 Legendre 微分方程的解:

.

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

连带 Legendre 函数 是此方程的最通用解:

.

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

前 n 个 Legendre 多项式为:

n 的值
0 P_0(x) = 1
1 p_1(x) = x
2
Schmidt 半归一化连带 Legendre 函数

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

完全归一化的连带 Legendre 函数

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

归一化函数 与费归一化连带 Legendre 函数的关系如下:

# 算法

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

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

# 参考文献

[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.

# 另请参阅

expint | exp | heaviside