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