2
¿Cómo y por qué Julia?
David Gómez-Castro
https://julialang.org/downloads/
En Ubuntu
Redhat/Fedora
Arch/Manjaro
Al lanzar julia por primera vez veremos algo así:
Variables
La mayor parte de las funcionalidades de Julia se añaden en paquetes.
Por ejemplo, para representar funciones debemos el paquete Plots
Los scripts de Julia son archivos .jl
Ejecutamos en terminal de Unix (si julia está bien en el path)
$ julia MiCodigo.jl
"a=2"
O desde dentro de julia
julia> include("MiCodigo.jl")
"a=2"
Para desarrollar código podemos usar Visual Studio Code con Julia.
También podemos utilizar libretas Jupyter
Es una interfaz web para facilitar el uso de Julia, creada originalmente para Python.
Artículo why we created Julia
Es código abierto:
todo está alojado en GitHub
Es reproducible:
permite controlar todas las versiones de todos los paquetes
Es dinámica:
utiliza tipos dinámicos, y la sintaxis es muy sencilla.
Es componible:
multiple distach
Eje vertical (tiempo del lenguaje) / (tiempo de ejecución en C)
La sintaxis para vectores y matrices veremos que es muy sencilla.
2×3 Matrix{Int64}:
1 2 3
4 5 6
Función | Julia | MATLAB |
---|---|---|
Leer vector | x[i] |
x(i) |
Leer fila de matriz | A[i,:] |
A(i,:) |
Resolver sistema lineal | A\b |
A\b |
Las funcionalidades avanzadas se cargan con paquetes (Plots, …)
Los paquetes están alojados en GitHub, donde suelen contar con amplia documentación: ejemplo Plots.jl
Para instalarlos basta utilizamos el paquete Pkg.jl
de la siguiente forma
g = 9.79 # Gravitational constant
L = 1.00 # Length of pendulum
u₀ = [0 , π/60 ] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du,u,p,t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g/L)*θ
end
# Pass to solver
using OrdinaryDiffEq
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob,Tsit5(), reltol = 1e-6)
# Plot
using Plots
plot(sol.t,first.(sol.u),label="\\theta")
using Measurements
g = 9.79 ± 0.02 # Gravitational constant
L = 1.00 ± 0.01 # Length of pendulum
u₀ = [0 ± 0.0 , π/60 ± 0.01 ] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du,u,p,t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g/L)*θ
end
# Pass to solver
using OrdinaryDiffEq
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob,Tsit5(), reltol = 1e-6)
# Plot
using Plots
plot(sol.t,first.(sol.u),label="\\theta")
*Tomado de The Unreasonable Effectiveness of Multiple Dispatch