当前位置:  首页>> 技术小册>> Julia入门教程

Julia 提供了一套高效、可移植的标准数学函数。

数值比较

下表列出了用于数值比较的函数:

  1. 函数 测试是否满足如下性质
  2. isequal(x, y) x y 值与类型是否完全相同
  3. isfinite(x) x 是否是有限大的数字
  4. isinf(x) x 是否是(正/负)无穷大
  5. isnan(x) x 是否是 NaN
  6. isequal 认为 NaN 之间是相等的:

实例

  1. julia> isequal(NaN, NaN)
  2. true
  3. julia> isequal([1 NaN], [1 NaN])
  4. true
  5. julia> isequal(NaN, NaN32)
  6. true
  7. isequal 也能用来区分带符号的零:

实例

  1. julia> -0.0 == 0.0
  2. true
  3. julia> isequal(-0.0, 0.0)
  4. false

其他函数实例:

实例

  1. julia> isfinite(5)
  2. true
  3. julia> isfinite(NaN32)
  4. false

舍入函数

下表列出了 Julia 支持的舍入函数:

  1. 函数 描述 返回类型
  2. round(x) x 舍到最接近的整数 typeof(x)
  3. round(T, x) x 舍到最接近的整数 T
  4. floor(x) x -Inf 舍入 typeof(x)
  5. floor(T, x) x -Inf 舍入 T
  6. ceil(x) x +Inf 方向取整 typeof(x)
  7. ceil(T, x) x +Inf 方向取整 T
  8. trunc(x) x 0 取整 typeof(x)
  9. trunc(T, x) x 0 取整 T

实例

  1. julia> round(3.8)
  2. 4.0
  3. julia> round(Int, 3.8)
  4. 4
  5. julia> floor(3.8)
  6. 3.0
  7. julia> floor(Int, 3.8)
  8. 3
  9. julia> ceil(3.8)
  10. 4.0
  11. julia> ceil(Int, 3.8)
  12. 4
  13. julia> trunc(3.8)
  14. 3.0
  15. julia> trunc(Int, 3.8)
  16. 3

除法函数

下表列出了 Julia 支持的除法函数:

  1. 函数 描述
  2. div(x,y), x÷y 截断除法,无论任何类型相除的结果都会省略小数部分,剩下整数部分,商向零近似。
  3. fld(x,y) 向下取整除法;商向 -Inf 近似
  4. cld(x,y) 向上取整除法;商向 +Inf 近似
  5. rem(x,y) 取余;满足 x == div(x,y)*y + rem(x,y);符号与 x 一致
  6. mod(x,y) 取模;满足 x == fld(x,y)*y + mod(x,y);符号与 y 一致
  7. mod1(x,y) 偏移 1 mod;若 y>0,则返回 r∈(0,y],若 y<0,则 r∈[y,0) 且满足 mod(r, y) == mod(x, y)
  8. mod2pi(x) 2pi 取模;0 <= mod2pi(x) < 2pi
  9. divrem(x,y) 返回 (div(x,y),rem(x,y))
  10. fldmod(x,y) 返回 (fld(x,y),mod(x,y))
  11. gcd(x,y...) x, y,... 的最大公约数
  12. lcm(x,y...) x, y,... 的最小公倍数

实例

  1. julia> div(11, 4)
  2. 2
  3. julia> div(7, 4)
  4. 1
  5. julia> fld(11, 4)
  6. 2
  7. julia> fld(-5,3)
  8. -2
  9. julia> fld(7.5,3.3)
  10. 2.0
  11. julia> cld(7.5,3.3)
  12. 3.0
  13. julia> mod(5, 0:2)
  14. 2
  15. julia> mod(3, 0:2)
  16. 0
  17. julia> mod(8.9,2)
  18. 0.9000000000000004
  19. julia> rem(8,4)
  20. 0
  21. julia> rem(9,4)
  22. 1
  23. julia> mod2pi(7*pi/5)
  24. 4.39822971502571
  25. julia> divrem(8,3)
  26. (2, 2)
  27. julia> fldmod(12,4)
  28. (3, 0)
  29. julia> fldmod(13,4)
  30. (3, 1)
  31. julia> mod1(5,4)
  32. 1
  33. julia> gcd(6,0)
  34. 6
  35. julia> gcd(1//3,2//3)
  36. 1//3
  37. julia> lcm(1//3,2//3)
  38. 2//3

符号和绝对值函数

下表列出了 Julia 支持的符号和绝对值函数:

  1. 函数 描述
  2. abs(x) x 的模
  3. abs2(x) x 的模的平方
  4. sign(x) 表示 x 的符号,返回 -10,或 +1
  5. signbit(x) 表示符号位是 true false
  6. copysign(x,y) 返回一个数,其值等于 x 的模,符号与 y 一致
  7. flipsign(x,y) 返回一个数,其值等于 x 的模,符号与 x*y 一致

实例

  1. julia> abs(-7)
  2. 7
  3. julia> abs(5+3im)
  4. 5.830951894845301
  5. julia> abs2(-7)
  6. 49
  7. julia> abs2(5+3im)
  8. 34
  9. julia> copysign(5,-10)
  10. -5
  11. julia> copysign(-5,10)
  12. 5
  13. julia> sign(5)
  14. 1
  15. julia> sign(-5)
  16. -1
  17. julia> signbit(-5)
  18. true
  19. julia> signbit(5)
  20. false
  21. julia> flipsign(5,10)
  22. 5
  23. julia> flipsign(5,-10)
  24. -5

符号和绝对值函数

下表列出了 Julia 支持的符号和绝对值函数:

  1. 函数 描述
  2. sqrt(x), x x 的平方根
  3. cbrt(x), x x 的立方根
  4. hypot(x,y) 当直角边的长度为 x y时,直角三角形斜边的长度
  5. exp(x) 自然指数函数在 x 处的值
  6. expm1(x) x 接近 0 时的 exp(x)-1 的精确值
  7. ldexp(x,n) x*2^n 的高效算法,n 为整数
  8. log(x) x 的自然对数
  9. log(b,x) b 为底 x 的对数
  10. log2(x) 2 为底 x 的对数
  11. log10(x) 10 为底 x 的对数
  12. log1p(x) x接近 0 时的 log(1+x) 的精确值
  13. exponent(x) x 的二进制指数
  14. significand(x) 浮点数 x 的二进制有效数(也就是尾数)

实例

  1. julia> sqrt(49)
  2. 7.0
  3. julia> sqrt(-49)
  4. ERROR: DomainError with -49.0:
  5. sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
  6. Stacktrace:
  7. [1] throw_complex_domainerror(::Symbol, ::Float64) at .\math.jl:33
  8. [2] sqrt at .\math.jl:573 [inlined]
  9. [3] sqrt(::Int64) at .\math.jl:599
  10. [4] top-level scope at REPL[43]:1
  11. julia> cbrt(8)
  12. 2.0
  13. julia> cbrt(-8)
  14. -2.0
  15. julia> a = Int64(5)^10;
  16. julia> hypot(a, a)
  17. 1.3810679320049757e7
  18. julia> exp(5.0)
  19. 148.4131591025766
  20. julia> expm1(10)
  21. 22025.465794806718
  22. julia> expm1(1.0)
  23. 1.718281828459045
  24. julia> ldexp(4.0, 2)
  25. 16.0
  26. julia> log(5,2)
  27. 0.43067655807339306
  28. julia> log(4,2)
  29. 0.5
  30. julia> log(4)
  31. 1.3862943611198906
  32. julia> log2(4)
  33. 2.0
  34. julia> log10(4)
  35. 0.6020599913279624
  36. julia> log1p(4)
  37. 1.6094379124341003
  38. julia> log1p(-2)
  39. ERROR: DomainError with -2.0:
  40. log1p will only return a complex result if called with a complex argument. Try log1p(Complex(x)).
  41. Stacktrace:
  42. [1] throw_complex_domainerror(::Symbol, ::Float64) at .\math.jl:33
  43. [2] log1p(::Float64) at .\special\log.jl:356
  44. [3] log1p(::Int64) at .\special\log.jl:395
  45. [4] top-level scope at REPL[65]:1
  46. julia> exponent(6.8)
  47. 2
  48. julia> significand(15.2)/10.2
  49. 0.18627450980392157
  50. julia> significand(15.2)*8
  51. 15.2

三角和双曲函数

Julia 也提供了所有标准的三角和双曲函数:

sin cos tan cot sec csc
sinh cosh tanh coth sech csch
asin acos atan acot asec acsc
asinh acosh atanh acoth asech acsch
sinc cosc

实例

  1. julia> pi
  2. π = 3.1415926535897...
  3. julia> sin(0)
  4. 0.0
  5. julia> sin(pi/6)
  6. 0.49999999999999994
  7. julia> sin(pi/4)
  8. 0.7071067811865475
  9. julia> cos(0)
  10. 1.0
  11. julia> cos(pi/6)
  12. 0.8660254037844387
  13. julia> cos(pi/3)
  14. 0.5000000000000001

以上提供的函数都是单参数函数,不过 atan 也可以接收两个参数 来表示传统的 atan2 函数。

  1. atan(y)
  2. atan(y, x)

分别计算 y 或 y/x 的反正切。

实例

  1. julia> theta = 3pi/4
  2. 2.356194490192345
  3. julia> x,y = (cos(theta), sin(theta))
  4. (-0.7071067811865475, 0.7071067811865476)
  5. julia> atan(y/x)
  6. -0.7853981633974484
  7. julia> atan(y, x)
  8. 2.356194490192345

另外,sinpi(x) 和 cospi(x) 分别用来对 sin(pix) 和 cos(pix) 进行更精确的计算。

要计算角度而非弧度的三角函数,以 d 做后缀。 比如,sind(x) 计算 x 的 sine 值,其中 x 是一个角度值。 下面是角度变量的三角函数完整列表:

  1. sind cosd tand cotd secd cscd
  2. asind acosd atand acotd asecd acscd

实例

  1. julia> cos(56)
  2. 0.853220107722584
  3. julia> cosd(56)
  4. 0.5591929034707468

该分类下的相关小册推荐:

暂无相关推荐.