Cálculo científico con Julia 🧪
¿Qué es Julia?
Julia es un moderno lenguaje de programación especialmente diseñado para el cálculo científico que destaca principalmente en la construcción de modelos matemáticos.
Determinación del valor de la gravedad 🍎
En este taller veremos cómo determinar experimentalmente el valor de la aceleración de la gravedad con la ayuda de un péndulo y Julia.
Mecánica del péndulo
El periodo de un péndulo ($T$) depende de la longitud del péndulo ($L$), de la aceleración de la gravedad ($g$), y del ángulo en el punto de máxima altura ($\theta$).
No obstante, si $\theta$ es pequeño el efecto del ángulo es despreciable y el perido puede aproximarse mediante la ecuación
$$T = 2 \pi \sqrt{\frac{L}{g}}$$
Podemos definir una función en Julia para calcular el periodo $T$ en función de $L$ y $g$.
T (generic function with 1 method)
Con esta función podemos, por ejemplo, averiguar el periodo de un péndulo de 1 m de longitud, tomando $g=9.8$.
2.007089923154493
Experimentación 🧪
Vamos a determinar experimentalmente el periodo de un péndulo. Este experimento se puede reproducir incluso en casa, improvisando un péndulo con una cuerda rígida y un pequeño peso atado a ella. Sujetando la cuerda desde un lugar alto, se puede provocar una pequeña oscilación y cronometrar lo que tarda el péndulo en hacer una oscilación completa, es decir su periodo.
Para obtener una aproximación más precisa del periodo se puede cronometrar varias oscilaciones, por ejemplo 10, y dividir luego el tiempo total por el número de oscilaciones.
El experimento debe repetirse para distintas longitudes de la cuerda.
Datos
Si no tienes tiempo para realizar el expermiento puedes usar estos datos
Usaremos el paquete DataFrames
para cargar los datos en la variable datos
.
L | T | |||
---|---|---|---|---|
Float64 | Float64 | |||
1 | 2.21 | 2.984 | ||
2 | 2.21 | 2.984 | ||
3 | 2.21 | 2.986 | ||
4 | 2.21 | 2.996 | ||
5 | 2.21 | 2.988 | ||
6 | 1.79 | 2.712 | ||
7 | 1.79 | 2.69 | ||
8 | 1.79 | 2.686 | ||
9 | 1.79 | 2.696 | ||
10 | 1.79 | 2.836 | ||
30 | 0.47 | 1.334 |
Visualización de datos
Vamos a representar gráficamente los datos experimentales mediante un diagrama de puntos. Para ello podemos utilizar la función scatter
del paquete Plots
.
Cálculo de la gravedad
Para obtener una idea aproximada de la aceleración de la gravedad, podemos dibujar la gráfica el periodo del péndulo para distintos valores de $g$.
Para ello podemos definir g
como un parámetro interactivo.
Podemos jugar con el parámetro para ver qué valor parámetro nos da el modelo que mejor se ajusta a los datos experimentales.
¿Qué valor de g da el mejor ajuste? 🤔
Ajuste del modelo
Para determinar el valor óptimo de $g$ podemos buscar el modelo con el menor error en el ajuste.
Si $o_i$ es el periodo observado en la medición $i$ y $p_i$ es la predicción del modelo para la longitud del péndulo correspondiente, podemos definir el error en cada medición como
$$e_i = |p_i - o_i|$$
y el error total del modelo en las $n$ mediciones como
$$\text{E} = \sum_{i=1}^n|p_i - o_i|$$
Podemos definir una función de Julia para calcular los errores de un modelo correspondiente a un valor particular de $g$.
error (generic function with 1 method)
Y ahora podemos buscar el valor de $g$ que haga mínimo el error. Ese será el valor óptimo de $g$.