Main Content

ellipj

Jacobi 椭圆函数

说明

示例

[SN,CN,DN] = ellipj(U,M) 返回 Jacobi 椭圆函数 SNCNDN,针对实参 U 和形参 M 的相应元素对这些函数求解。输入 UM 的大小必须相同,或者 UM 必须为标量。

示例

[SN,CN,DN] = ellipj(U,M,tol)tol 精度计算 Jacobi 椭圆函数。tol 的默认值是 eps。增加 tol 会降低精度,但计算答案的速度会更快。

示例

全部折叠

U = 0.5M = 0.25 的 Jacobi 椭圆函数。

[s,c,d] = ellipj(0.5,0.25)
s = 0.4751
c = 0.8799
d = 0.9714

绘制 -5≤U≤5M = 0.7 的 Jacobi 椭圆函数。

M = 0.7;
U = -5:0.01:5;
[S,C,D] = ellipj(U,M);
plot(U,S,U,C,U,D);
legend('SN','CN','DN','Location','best')
grid on
title('Jacobi Elliptic Functions sn,cn,dn')

Figure contains an axes object. The axes object with title Jacobi Elliptic Functions sn,cn,dn contains 3 objects of type line. These objects represent SN, CN, DN.

M 的允许范围内和 -5≤U≤5 内生成 Jacobi 椭圆函数 sn 的曲面图。

[M,U] = meshgrid(0:0.1:1,-5:0.1:5);
S = ellipj(U,M);
surf(U,M,S)
xlabel('U')
ylabel('M')
zlabel('sn')
title('Surface Plot of Jacobi Elliptic Function sn')

Figure contains an axes object. The axes object with title Surface Plot of Jacobi Elliptic Function sn contains an object of type surface.

tol 的默认值是 eps。使用 tictoc 求任意 M 为默认值时的运行时间。按因子 1000 增加 tol 并计算运行时间。比较运行时间。

tic
ellipj(0.253,0.937)
ans = 0.2479
toc
Elapsed time is 0.138841 seconds.
tic
ellipj(0.253,0.937,eps*1000)
ans = 0.2479
toc
Elapsed time is 0.025970 seconds.

容差明显增加时,ellipj 的运行速度明显加快。

输入参数

全部折叠

输入数组,指定为标量、向量、矩阵或多维数组。U 仅限于实数值。如果 U 是非标量,M 必须是大小与 U 相同的标量或非标量。

数据类型: single | double

输入数组,指定为标量、向量、矩阵或多维数组。M 可取值 0≤ m ≤1。如果 M 是非标量,U 必须是大小与 M 相同的标量或非标量。使用 [1] 中方程 16.10 和 16.11 所述的转换将 M 的其他值映射到该范围。

数据类型: single | double

结果的精度,指定为非负实数。默认值为 eps

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参数

全部折叠

Jacobi 椭圆函数 sn,以标量、向量、矩阵或多维数组形式返回。

Jacobi 椭圆函数 cn,以标量、向量、矩阵或多维数组形式返回。

Jacobi 椭圆函数 dn,以标量、向量、矩阵或多维数组形式返回。

详细信息

全部折叠

Jacobi 椭圆函数

Jacobi 椭圆函数是从积分角度定义的

u=0ϕdθ1msin2θ.

然后,

sn(u)=sinϕ, cn(u)=cosϕ, dn(u)=1msin2ϕ.

有些椭圆函数的定义使用椭圆模数 k 或模角 α,而不使用参数 m。它们的关系如下

k2=m=sin2a.

Jacobi 椭圆函数遵守许多数学恒等式。要查看恰当的示例,请参阅 [1]

算法

ellipj 使用 [1] 中介绍的算术几何平均数方法计算 Jacobi 椭圆函数。首先定义三元组

a0=1, b0=1m, c0=m.

ellipj 使用以下公式计算连续迭代

ai=12(ai1+bi1)bi=(ai1bi1)12ci=12(ai1bi1).

然后,它使用以下公式计算振幅(以弧度为单位)

sin(2ϕn1ϕn)=cnansin(ϕn),

请注意正确展开相位。然后,Jacobian 椭圆函数则可表示为

sn(u)=sinϕ0cn(u)=cosϕ0dn(u)=1msn(u)2.

参考

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

扩展功能

版本历史记录

在 R2006a 之前推出

另请参阅