Julia - 基本数学函数


让我们尝试借助本章中的示例来理解基本的数学函数。

数值转换

在 Julia 中,用户可以获得三种不同形式的数值转换。这三者在处理不精确转换方面有所不同。它们如下 -

T(x) 或 Convert(T, x) - 此符号将 x 转换为 T 的值。结果取决于以下两种情况 -

  • T 是浮点类型- 在这种情况下,结果将是最接近的可表示值。该值可以是正无穷大或负无穷大。

  • T 是整数类型-当且仅当 x 不能用 T 表示时,结果才会引发 InexactError

x%T - 此表示法会将整数 x 转换为对应于 x 模 2^n 的整数类型 T 的值。这里 n 表示 T 中的位数。简单来说,此表示法会截断二进制表示以适应。

舍入函数- 此表示法采用类型 T 作为计算的可选参数。例如 - Round(Int, a)Int(round(a))的简写。

例子

下面给出的例子代表了上面描述的各种形式 -

julia> Int8(110)
110

julia> Int8(128)
ERROR: InexactError: trunc(Int8, 128)
Stacktrace:
 [1] throw_inexacterror(::Symbol, ::Type{Int8}, ::Int64) at .\boot.jl:558
 [2] checked_trunc_sint at .\boot.jl:580 [inlined]
 [3] toInt8 at .\boot.jl:595 [inlined]
 [4] Int8(::Int64) at .\boot.jl:705
 [5] top-level scope at REPL[4]:1
 
julia> Int8(110.0)
110

julia> Int8(3.14)
ERROR: InexactError: Int8(3.14)
Stacktrace:
 [1] Int8(::Float64) at .\float.jl:689
 [2] top-level scope at REPL[6]:1
julia> Int8(128.0)
ERROR: InexactError: Int8(128.0)
Stacktrace:
 [1] Int8(::Float64) at .\float.jl:689
 [2] top-level scope at REPL[7]:1

julia> 110%Int8
110

julia> 128%Int8
-128

julia> round(Int8, 110.35)
110

julia> round(Int8, 127.52)
ERROR: InexactError: trunc(Int8, 128.0)
Stacktrace:
 [1] trunc at .\float.jl:682 [inlined]
 [2] round(::Type{Int8}, ::Float64) at .\float.jl:367
 [3] top-level scope at REPL[14]:1

舍入函数

下表显示了 Julia 的原始数字类型支持的舍入函数 -

功能 描述 返回类型
轮(x) 该函数将 x 四舍五入到最接近的整数。 类型(x)
圆(T,x) 该函数将 x 四舍五入到最接近的整数。 时间
楼层(x) 此函数将 x 向 -Inf 舍入,返回与 x 相同类型的最接近的整数值。该值将小于或等于 x。 类型(x)
楼层(T, x) 此函数会将 x 舍入到 -Inf 并将结果转换为 T 类型。如果该值不可表示,它将抛出 InexactError。 时间
楼层(T, x) 此函数会将 x 舍入到 -Inf 并将结果转换为 T 类型。如果该值不可表示,它将抛出 InexactError。 时间
上限(x) 此函数将 x 向 +Inf 舍入,并返回与 x 相同类型的最接近的整数值。该值将大于或等于 x。 类型(x)
细胞(T,x) 该函数将 x 向 +Inf 舍入,并将结果转换为 T 类型。如果该值不可表示,它将抛出 InexactError。 时间
截断(x) 该函数将 x 向零舍入,并返回与 x 相同类型的最接近的整数值。绝对值将小于或等于 x。 类型(x)
截断(T,x) 该函数会将 x 舍入为零并将结果转换为 T 类型。如果该值不可表示,它将抛出 InexactError。 时间

例子

下面给出的示例代表舍入函数 -

julia> round(3.8)
4.0
julia> round(Int, 3.8)
4
julia> floor(3.8)
3.0
julia> floor(Int, 3.8)
3
julia> ceil(3.8)
4.0
julia> ceil(Int, 3.8)
4
julia> trunc(3.8)
3.0
julia> trunc(Int, 3.8)
3

部门职能

下表显示了 Julia 的原始数字类型支持的除法函数 -

车号 功能说明
1

div(x,y), x÷y

这是欧几里得除法的引文。也称为截断除法。它计算 x/y 并且商将四舍五入为零。

2

FLD(x,y)

这是地板部门。商将向 -Inf 舍入,即小于或等于 x/y 的最大整数。它是 div(x, y, RoundDown) 的简写。

3

cld(x,y)

这是天花板划分。商将向 +Inf 舍入,即小于或等于 x/y 的最小整数。它是 div(x, y, RoundUp) 的简写。

4

雷姆(x,y)

余; 满足 x == div(x,y)*y + rem(x,y);符号匹配 x

5

模(x,y)

是地板除法后的模数。该函数满足方程 x == fld(x,y)*y + mod(x,y)。符号与 y 匹配。

6

mod1(x,y)

这与偏移量为 1 的 mod 相同。对于 y>0,它返回 r∈(0,y];对于 y<0,它返回 r∈[y,0),其中 mod(r, y) == mod(x, y) 。

7

mod2pi(x)

它是相对于 2pi 的模数。它满足 0 <= mod2pi(x) < 2pi

8

divrem(x,y)

它是欧几里得除法的商和余数。它相当于 (div(x,y),rem(x,y))。

9

fldmod(x,y)

它是除法后的底价和模数。它相当于 (fld(x,y),mod(x,y))

10

最大公约数(x,y...)

它是 x, y,... 的最大正公约数

11

lcm(x,y...)

它代表 x, y,... 的最小正公倍数

例子

下面给出的例子代表除法函数 -

julia> div(11, 4)
2

julia> div(7, 4)
1

julia> fld(11, 4)
2

julia> fld(-5,3)
-2

julia> fld(7.5,3.3)
2.0

julia> cld(7.5,3.3)
3.0

julia> mod(5, 0:2)
2

julia> mod(3, 0:2)
0

julia> mod(8.9,2)
0.9000000000000004

julia> rem(8,4)
0

julia> rem(9,4)
1

julia> mod2pi(7*pi/5)
4.39822971502571

julia> divrem(8,3)
(2, 2)

julia> fldmod(12,4)
(3, 0)

julia> fldmod(13,4)
(3, 1)

julia> mod1(5,4)
1

julia> gcd(6,0)
6

julia> gcd(1//3,2//3)
1//3

julia> lcm(1//3,2//3)
2//3

符号和绝对值函数

下表显示了 Julia 的原始数字类型支持的符号和绝对值函数 -

车号 功能与功能
1

绝对值(x)

它是x的绝对值。它返回一个大小为 x 的正值。

2

绝对值2(x)

它返回 x 的绝对值的平方。

3

符号(x)

该函数表示 x 的符号。它将返回 -1、0 或 +1。

4

符号位(x)

该函数指示符号位是打开(真)还是关闭(假)。简单来说,如果x的符号值为-ve,则返回true,否则返回false。

5

复制签名(x,y)

它返回一个值 Z,其大小为 x,符号与 y 相同。

6

翻转符号(x,y)

它返回一个值,其大小为 x,符号为 x*y。如果 y 为负数,则符号将翻转。示例:abs(x) = Flipsign(x,x)。

例子

下面给出的示例代表符号和绝对值函数 -

julia> abs(-7)
7

julia> abs(5+3im)
5.830951894845301

julia> abs2(-7)
49

julia> abs2(5+3im)
34

julia> copysign(5,-10)
-5

julia> copysign(-5,10)
5

julia> sign(5)
1

julia> sign(-5)
-1

julia> signbit(-5)
true

julia> signbit(5)
false

julia> flipsign(5,10)
5

julia> flipsign(5,-10)
-5

电源、日志和根

下表显示了 Julia 的原始数字类型支持的 Power、Logs 和 Root 函数 -

车号 功能说明
1

开方(x), √x

它将返回 x 的平方根。对于负实参,它将抛出 DomainError。

2

cbrt(x), ∛x

它将返回 x 的立方根。它还接受负值。

3

假设(x,y)

它将计算斜边 √|