Julia Funciones matemáticas

Julia ofrece un conjunto de funciones matemáticas estándar eficientes y portátiles.


Comparación numérica

La siguiente tabla enumera las funciones utilizadas para la comparación numérica:

Función Prueba si se cumple la siguiente propiedad
isequal(x, y) xyySi el valor y el tipo son exactamente iguales
isfinite(x) xSi es un número finito
isinf(x) xSi es infinito (positivo/negativo)
isnan(x) xSi esNaN

isequal considera que los NaN son iguales entre sí:

Ejemplo

julia> isequal(NaN, NaN)
true

julia> isequal([1 NaN], [1 NaN])
true

julia> isequal(NaN, NaN32)
true

isequal también se puede utilizar para distinguir ceros con signo:

Ejemplo

julia> -0.0 == 0.0
true

julia> isequal(-0.0, 0.0)
false

Ejemplos de otras funciones:

Ejemplo

julia> isfinite(5)
true

julia> isfinite(NaN32)
false

Funciones de redondeo

La siguiente tabla enumera las funciones de redondeo compatibles con Julia:

Función Descripción Tipo de retorno
round(x) xRedondea al entero más cercano typeof(x)
round(T, x) xRedondea al entero más cercano T
floor(x) xhacia-InfRedondeo typeof(x)
floor(T, x) xhacia-InfRedondeo T
ceil(x) xhacia+InfRedondeo direccional typeof(x)
ceil(T, x) xhacia+InfRedondeo direccional T
trunc(x) xRedondeo hacia cero typeof(x)
trunc(T, x) xRedondeo hacia cero T

Ejemplo

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

Funciones de división

La siguiente tabla enumera las funciones de división compatibles con Julia:

Función Descripción
div(x,y), x÷y División truncada: el resultado de dividir cualquier tipo de números omite la parte decimal y conserva la parte entera; el cociente se aproxima hacia cero.
fld(x,y) División por redondeo hacia abajo; el cociente-Infse aproxima
cld(x,y) División por redondeo hacia arriba; el cociente+Infse aproxima
rem(x,y) Resto; satisfacex == div(x,y)*y + rem(x,y); el signoxcoincide
mod(x,y) Módulo; satisfacex == fld(x,y)*y + mod(x,y); el signoycoincide
mod1(x,y) Con desplazamiento de 1mod; siy>0, entonces devuelver∈(0,y], siy<0, entoncesr∈[y,0)y satisfacemod(r, y) == mod(x, y)
mod2pi(x) Módulo respecto a 2π;0 <= mod2pi(x) < 2pi
divrem(x,y) devuelve(div(x,y),rem(x,y))
fldmod(x,y) devuelve(fld(x,y),mod(x,y))
gcd(x,y...) x, yel máximo común divisor de ,...
lcm(x,y...) x, yel mínimo común múltiplo de ,...

Ejemplo

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

Funciones de signo y valor absoluto

La siguiente tabla enumera las funciones de signo y valor absoluto compatibles con Julia:

Función Descripción
abs(x) xel módulo de
abs2(x) xel cuadrado del módulo de
sign(x) representaxel signo de, devuelve -1, 0 o +1
signbit(x) indica si el bit de signo es true o false
copysign(x,y) devuelve un número cuyo valor es igual alxmódulo de, el signoycoincide
flipsign(x,y) devuelve un número cuyo valor es igual alxmódulo de, el signox*ycoincide

Ejemplo

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

Funciones de signo y valor absoluto

La siguiente tabla enumera las funciones de signo y valor absoluto compatibles con Julia:

Función Descripción
sqrt(x), √x xla raíz cuadrada de
cbrt(x), ∛x xla raíz cúbica de
hypot(x,y) cuando la longitud de los catetos esxyy, la longitud de la hipotenusa del triángulo rectángulo
exp(x) la función exponencial natural enxel valor en
expm1(x) Cuandoxcuando se aproxima a 0exp(x)-1el valor exacto de
ldexp(x,n) x*2^nel algoritmo eficiente de,nes un entero
log(x) xel logaritmo natural de
log(b,x) conbcon basexel logaritmo de
log2(x) con base 2xel logaritmo de
log10(x) con base 10xel logaritmo de
log1p(x) Cuandoxcuando se aproxima a 0log(1+x)el valor exacto de
exponent(x) xel exponente binario de
significand(x) número de punto flotantexel significando binario de (es decir, la mantisa)

Ejemplo

julia> sqrt(49)
7.0

julia> sqrt(-49)
ERROR: DomainError with -49.0:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at .\math.jl:33
 [2] sqrt at .\math.jl:573 [inlined]
 [3] sqrt(::Int64) at .\math.jl:599
 [4] top-level scope at REPL[43]:1
 
julia> cbrt(8)
2.0

julia> cbrt(-8)
-2.0

julia> a = Int64(5)^10;

julia> hypot(a, a)
1.3810679320049757e7

julia> exp(5.0)
148.4131591025766

julia> expm1(10)
22025.465794806718

julia> expm1(1.0)
1.718281828459045

julia> ldexp(4.0, 2)
16.0

julia> log(5,2)
0.43067655807339306

julia> log(4,2)
0.5

julia> log(4)
1.3862943611198906

julia> log2(4)
2.0

julia> log10(4)
0.6020599913279624

julia> log1p(4)
1.6094379124341003

julia> log1p(-2)
ERROR: DomainError with -2.0:
log1p will only return a complex result if called with a complex argument. Try log1p(Complex(x)).
Stacktrace:
 [1] throw_complex_domainerror(::Symbol, ::Float64) at .\math.jl:33
 [2] log1p(::Float64) at .\special\log.jl:356
 [3] log1p(::Int64) at .\special\log.jl:395
 [4] top-level scope at REPL[65]:1
julia> exponent(6.8)
2

julia> significand(15.2)/10.2
0.18627450980392157

julia> significand(15.2)*8
15.2

Funciones trigonométricas e hiperbólicas

Julia también proporciona todas las funciones trigonométricas e hiperbólicas estándar:

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

En la siguiente figura, un ángulo en radianes corresponde a un punto en el círculo unitario, cuyas coordenadas definen el seno y el coseno del ángulo.

Ejemplo

julia> pi
π = 3.1415926535897...

julia> sin(0)
0.0

julia> sin(pi/6)
0.49999999999999994

julia> sin(pi/4)
0.7071067811865475

julia> cos(0)
1.0

julia> cos(pi/6)
0.8660254037844387

julia> cos(pi/3)
0.5000000000000001

Las funciones proporcionadas anteriormente son todas de un solo parámetro, aunque atan también puede aceptar dos parámetros para representar la función tradicional atan2.

atan(y)
atan(y, x)

Calcula la arcotangente de y o de y/x, respectivamente.

Ejemplo

julia> theta = 3pi/4
2.356194490192345

julia> x,y = (cos(theta), sin(theta))
(-0.7071067811865475, 0.7071067811865476)

julia> atan(y/x)
-0.7853981633974484

julia> atan(y, x)
2.356194490192345

Además, sinpi(x) y cospi(x) se utilizan para calcular con mayor precisión sin(pi*x) y cos(pi*x), respectivamente.

Para calcular funciones trigonométricas con ángulos en grados en lugar de radianes, se utiliza el sufijo d. Por ejemplo, sind(x) calcula el seno de x, donde x es un valor en grados. A continuación se muestra la lista completa de funciones trigonométricas para ángulos:

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

Ejemplo

julia> cos(56)
0.853220107722584

julia> cosd(56)
0.5591929034707468
Otras extensiones