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(连带勒让德函数的阶)值的函数值
每列包含不同 x 值的函数值
二阶连带勒让德函数 的方程为
因此, 的值为
该结果与 P(1,1) = -0.5000
一致。
比较勒让德归一化
计算几种归一化情况下的连带勒让德函数值。
计算非归一化一阶勒让德函数值 。值的第一行对应于 ,第二行对应于 。
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
接下来,计算施密特半归一化函数值。与非归一化值相比,当 时,施密特形式的值都乘以缩放因子:
对于第一行,这两个归一化是相同的,因为 。对于第二行,每个值都乘以缩放常量 -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
最后,计算完全归一化的函数值。与非归一化值相比,完全归一化形式的值都乘以缩放因子:
此缩放因子适用于 的所有值,因此第一行和第二行具有不同缩放因子。
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
来计算和可视化 的球谐函数。
球谐函数的方程包括勒让德函数的一个项以及一个复指数:
首先,创建一个由值组成的网格,以表示 (余纬度角)和 (方位角)的所有组合。此处,余纬度 的范围从 0 度(位于北极)到 度(位于赤道),到 度(位于南极)。
dx = pi/60; col = 0:dx:pi; az = 0:dx:2*pi; [phi,theta] = meshgrid(az,col);
计算 的网格上的 。
l = 3; Plm = legendre(l,cos(theta));
由于 legendre
为 的所有值计算答案,因此 Plm
会包含一些额外的函数值。提取 的值并丢弃其余值。使用 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(1i*m*phi);
将球面坐标转换为笛卡尔坐标。此处, 成为纬度角,范围从 (位于北极),到 0 度(位于赤道),再到 度(位于南极)。使用正负实数值绘制 的球谐函数。
[Xm,Ym,Zm] = sph2cart(phi, pi/2-theta, abs(real(Ylm))); surf(Xm,Ym,Zm) title('$Y_3^2$ spherical harmonic','interpreter','latex')
输入参数
n
— 勒让德函数的阶
正整数
勒让德函数的阶,指定为正整数。对于指定的阶,legendre
计算 m 表示的所有级数(从 m = 0 到 m = n)的 。
示例: legendre(2,X)
X
— 输入值
标量 | 向量 | 矩阵 | 多维数组
输入值,指定为由 [-1,1]
范围内的实数值组成的标量、向量、矩阵或多维数组。例如,对于球谐函数,通常使用 X = cos(theta)
作为输入值来计算 。
示例: legendre(2,cos(theta))
数据类型: single
| double
normalization
— 归一化类型
'unnorm'
(默认) | 'sch'
| 'norm'
输出参量
P
— 连带勒让德函数值
标量 | 向量 | 矩阵 | 多维数组
连带勒让德函数值,返回为标量、向量、矩阵或多维数组。P
的归一化取决于 normalization
的值。
P
的大小取决于 X
的大小:
如果
X
是向量,则P
是大小为(n+1)
×length(X)
的矩阵。P(m+1,i)
条目是在X(i)
计算的阶数为n
、级数为m
的连带勒让德函数。通常,
P
比X
多一个维度,每个元素P(m+1,i,j,k,...)
都包含在X(i,j,k,...)
计算的阶数为n
和阶数为m
的连带勒让德函数。
局限性
非归一化的连带勒让德函数的值溢出 n > 150
的双精度数范围和 n > 28
的单精度数范围。此溢出导致 Inf
和 NaN
值。对于大于这些阈值的阶,请考虑改用 'sch'
或 'norm'
归一化。
详细信息
连带勒让德函数
连带勒让德函数 是以下常规勒让德微分方程的解:
n 是整数阶,m 是连带勒让德函数的整数级数,满足 。
连带勒让德函数 是此方程的最通用解:
它们是根据勒让德多项式 的导数定义的,它们是由下式给出的解的子集:
前几个勒让德多项式为
n 的值 | |
---|---|
0 | |
1 | |
2 |
施密特半归一化连带勒让德函数
施密特半归一化连带勒让德函数与非归一化连带勒让德函数 的关系如下:
完全归一化的连带勒让德函数
完全归一化的连带勒让德函数按如下方式进行归一化:
归一化函数 与非归一化连带勒让德函数
的关系如下
算法
legendre
在 m
中使用三项后向递归关系。此递归基于施密特半归一化连带勒让德函数 ,这些函数是复球谐函数。这些函数与标准 Abramowitz 和 Stegun [1] 函数 的关系如下:
它们与施密特形式的关系如下:
参考
[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.
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅Run MATLAB Functions on a GPU (Parallel Computing Toolbox)。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)