Skip to content

Julia 数学函数

Julia 内置了丰富的数学函数,非常适合科学计算和数据分析。

基本数学函数

绝对值和符号

julia
# 绝对值
println(abs(-5))      # 5
println(abs(-3.14))   # 3.14
println(abs(3 + 4im)) # 5.0(复数的模)

# 符号函数
println(sign(-5))     # -1
println(sign(0))      # 0
println(sign(5))      # 1

# 复制符号
println(copysign(5, -1))   # -5
println(copysign(-5, 1))   # 5

取整函数

julia
x = 3.7
y = -3.7

# 向下取整(floor)
println(floor(x))     # 3.0
println(floor(y))     # -4.0
println(floor(Int, x)) # 3(返回整数)

# 向上取整(ceil)
println(ceil(x))      # 4.0
println(ceil(y))      # -3.0

# 四舍五入(round)
println(round(x))     # 4.0
println(round(y))     # -4.0
println(round(3.5))   # 4.0
println(round(4.5))   # 4.0(银行家舍入)

# 指定小数位数
println(round(3.14159, digits=2))  # 3.14

# 向零取整(trunc)
println(trunc(x))     # 3.0
println(trunc(y))     # -3.0

最大最小值

julia
# 两个数的最大最小
println(max(3, 5))     # 5
println(min(3, 5))     # 3

# 多个数
println(max(1, 5, 3, 9, 2))  # 9
println(min(1, 5, 3, 9, 2))  # 1

# 限制范围
println(clamp(5, 1, 10))   # 5
println(clamp(-5, 1, 10))  # 1
println(clamp(15, 1, 10))  # 10

幂和根

julia
# 幂运算
println(2^10)         # 1024
println(2.0^0.5)      # 1.414...

# 平方根
println(sqrt(16))     # 4.0
println(16)          # 4.0(Unicode)

# 立方根
println(cbrt(27))     # 3.0
println(27)          # 3.0(Unicode)

# n次方根
println(16^(1/4))     # 2.0

# 平方
println(4^2)          # 16

# hypot:计算 √(x² + y²),避免溢出
println(hypot(3, 4))  # 5.0

指数和对数

指数函数

julia
# e的幂
println(exp(1))       # 2.718...(e)
println(exp(2))       # 7.389...(e²)

# 2的幂
println(exp2(3))      # 8.0(2³)

# 10的幂
println(exp10(2))     # 100.0(10²)

# exp(x) - 1,对于小x更精确
println(expm1(1e-10)) # 1.0e-10(比 exp(1e-10) - 1 更精确)

对数函数

julia
# 自然对数(以e为底)
println(log())       # 1.0
println(log(10))      # 2.302...

# 以2为底
println(log2(8))      # 3.0

# 以10为底
println(log10(100))   # 2.0

# 任意底数
println(log(2, 8))    # 3.0(log₂8)

# log(1 + x),对于小x更精确
println(log1p(1e-10)) # 1.0e-10

三角函数

基本三角函数

julia
# 参数为弧度
θ = π / 4  # 45度

println(sin(θ))       # 0.707...
println(cos(θ))       # 0.707...
println(tan(θ))       # 1.0

# 余切、正割、余割
println(cot(θ))       # 1.0
println(sec(θ))       # 1.414...
println(csc(θ))       # 1.414...

度数版本

julia
# 以度数为参数(函数名加 d)
println(sind(45))     # 0.707...
println(cosd(45))     # 0.707...
println(tand(45))     # 1.0

反三角函数

julia
# 返回弧度
println(asin(0.5))    # 0.523...(π/6)
println(acos(0.5))    # 1.047...(π/3)
println(atan(1))      # 0.785...(π/4)

# 返回度数
println(asind(0.5))   # 30.0
println(acosd(0.5))   # 60.0
println(atand(1))     # 45.0

# atan2:考虑象限的反正切
println(atan(1, 1))   # 0.785...(第一象限)
println(atan(-1, -1)) # -2.356...(第三象限)

双曲函数

julia
x = 1.0

# 双曲函数
println(sinh(x))      # 1.175...
println(cosh(x))      # 1.543...
println(tanh(x))      # 0.761...

# 反双曲函数
println(asinh(1))     # 0.881...
println(acosh(2))     # 1.316...
println(atanh(0.5))   # 0.549...

特殊三角函数

julia
# sincos:同时计算 sin 和 cos(更高效)
s, c = sincos(π/4)
println("sin: $s, cos: $c")

# sinpi, cospi:计算 sin(πx), cos(πx),更精确
println(sinpi(0.5))   # 1.0(sin(π/2))
println(cospi(0.5))   # 0.0(cos(π/2))

# 角度转换
println(deg2rad(180)) # 3.14159...(π)
println(rad2deg(π))   # 180.0

特殊函数

阶乘和组合

julia
# 阶乘
println(factorial(5))     # 120

# 大阶乘(使用 BigInt)
println(factorial(big(50)))

# 组合数
println(binomial(5, 2))   # 10(C(5,2))

# Gamma 函数(阶乘的推广)
println(gamma(6))         # 120.0(5!)
println(gamma(0.5))       # 1.772...(√π)

# 对数 Gamma
println(lgamma(100))      # 对数阶乘,避免溢出

贝塔函数

julia
# Beta 函数
println(beta(2, 3))       # 0.0833...

# 对数 Beta
println(logbeta(2, 3))

误差函数

julia
# 误差函数
println(erf(1))           # 0.842...
println(erfc(1))          # 1 - erf(1)

# 反误差函数
println(erfinv(0.5))      # 0.476...

贝塞尔函数

julia
using SpecialFunctions  # 可能需要安装

# 第一类贝塞尔函数
# besselj(ν, x)

# 第二类贝塞尔函数
# bessely(ν, x)

数值精度函数

julia
# 机器精度
println(eps())            # 约 2.22e-16
println(eps(Float32))     # Float32 的精度

# 下一个浮点数
println(nextfloat(1.0))   # 1.0000000000000002
println(prevfloat(1.0))   # 0.9999999999999999

# 浮点数位表示
println(significand(3.5)) # 尾数
println(exponent(3.5))    # 指数

# 分解为小数和整数部分
整数部分, 小数部分 = modf(3.75)

常用数学常数

julia
# π (pi)
println(π)           # 3.14159...
println(pi)          # 同上

# 自然常数 e
println()           # 2.71828...

# 无穷大
println(Inf)         # 正无穷
println(-Inf)        # 负无穷

# 非数字
println(NaN)         # Not a Number

# 黄金比例(需要计算)
φ = (1 +5) / 2
println(φ)           # 1.618...

复数数学函数

julia
z = 3 + 4im

# 基本函数
println(abs(z))       # 5.0(模)
println(angle(z))     # 0.927...(辐角)
println(conj(z))      # 3 - 4im(共轭)

# 指数和对数
println(exp(z))
println(log(z))

# 三角函数
println(sin(z))
println(cos(z))

# 平方根
println(sqrt(-1 + 0im))  # 0.0 + 1.0im

向量化数学运算

julia
x = [0, π/6, π/4, π/3, π/2]

# 使用点语法向量化
println(sin.(x))

# 使用 @. 宏
result = @. sin(x)^2 + cos(x)^2
println(result)  # 全是 1.0

# map 函数
println(map(sqrt, [1, 4, 9, 16]))

统计函数

julia
using Statistics

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 平均值
println(mean(data))       # 5.5

# 中位数
println(median(data))     # 5.5

# 标准差
println(std(data))        # 3.027...

# 方差
println(var(data))        # 9.166...

# 分位数
println(quantile(data, 0.25))  # 3.25
println(quantile(data, 0.75))  # 7.75

线性代数函数

julia
using LinearAlgebra

A = [1 2; 3 4]

# 行列式
println(det(A))           # -2.0

# 迹(对角线元素之和)
println(tr(A))            # 5

# 逆矩阵
println(inv(A))

# 特征值
println(eigvals(A))

# 范数
println(norm([3, 4]))     # 5.0

# 点积
println(dot([1, 2], [3, 4]))  # 11

下一步

学习完数学函数后,请继续学习:

本站内容仅供学习和研究使用。