2026a

# ellipke


第一类和第二类完全椭圆积分

函数库: TyMath

# 语法

K = ellipke(M)
K,E = ellipke(M)
K,E = ellipke(M,tol)

# 说明

K = ellipke(M) 返回第一类和第二类完全椭圆积分示例


K,E = ellipke(M) 返回第一类和第二类完全椭圆积分。示例


K,E = ellipke(M,tol) 以 tol 精度计算完全椭圆积分。tol 的默认值是 eps()。增加 tol 会降低精度,但计算答案的速度会更快。示例

# 示例

计算第一类和第二类完全椭圆积分

计算 M = 0.5 的第一类和第二类完全椭圆积分。

using TyMath
M = 0.5
K,E= ellipke(M)
K = 1.8540746773013717

E = 1.3506438810476753
绘制第一类和第二类完全椭圆积分

基于 M 的允许范围绘制第一类和第二类完全椭圆积分。

using TyMath
using TyPlot
M = 0:0.01:1
K = zero(M)
E = zero(M)
for i = 1:length(M)
K[i],E[i] = ellipke.(M)[i]
end
plot(M,K,M,E)
grid("on")
title("第一类和第二类完全椭圆积分")
xlabel("M")
legend(["第一类","第二类"])
通过更改容差更快地计算完全椭圆积分

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

using TyMath
# 第一次计算并计时
@time begin
    c1 = 0.904561
    first1,second1 = ellipke(c1)
end

# 第二次计算并计时
@time begin
    c2 = 0.904561
    epsilon = eps(Float64) # 避免与 Base.eps 冲突
    c3 = 1000
    first2,second2 = ellipke(c2, epsilon * c3) # 使用不同变量名来存储机器精度
end
  0.079475 seconds (53.11 k allocations: 3.337 MiB, 34.23% gc time, 99.94% compilation time)
  0.007461 seconds (180 allocations: 7.484 KiB, 99.43% compilation time)
(2.6000789971133593, 1.1010186674249343)

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

# 输入参数

M - 输入数组
标量 | 向量 | 矩阵 | 多维数组

输入数组,指定为标量、向量、矩阵或多维数组。M 仅限于实数、且值 0≤m≤1。

数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt

tol - 结果的精度
eps()(默认) | 非负实数

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

数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128

# 输出参数

K - 第一类完全椭圆积分
标量 | 向量 | 矩阵 | 多维数组

第一类完全椭圆积分,以标量、向量、矩阵或多维数组形式返回。

E - 第二类完全椭圆积分
标量 | 向量 | 矩阵 | 多维数组

第二类完全椭圆积分,以标量、向量、矩阵或多维数组形式返回。

# 详细信息

第一类和第二类完全椭圆积分

第一类完全椭圆积分是:

其中,m 是 ellipke 的第一个参数。

第二类完全椭圆积分是:

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

# 参考文献

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

# 另请参阅

ellipj