Programación científica (II): Análisis dimensional con mp-units, regresiones no-lineales con Dlib.Optimization y visualización de datos con Matplot++

Artículos de la serie:
  1. Representando el atractor de Lorenz con C++20, Boost.Numeric.Odeint y Dlib
  2. Análisis dimensional con mp-units, regresiones no-lineales con Dlib.Optimization y visualización de datos con Matplot++
  3. Rectas de mejor ajuste por mínimos cuadrados (mp-units, Matplot++)
  4. Ceros de una función
  5. Comprobando la ley de Zipf
  6. Instalación de Matplot++ y mp-units con Mingw-w64

Introducción


Última actualización del post: 24 de octubre de 2021.

El desgraciado error de conversión de unidades que condujo en 1999 a la desintegración en la atmósfera marciana de la sonda Mars Climate Orbiter de la NASA [1] es un ejemplo tristemente famoso de la necesidad de garantizar que nuestros códigos sean dimensionalmente correctos.

En este post, continuación natural de un artículo previo, estudiaremos el empleo de la biblioteca de unidades mp-units [2] como medio para lograr un análisis dimensional en tiempo de compilación, sin que ello represente sobrecoste alguno en tiempo de ejecución. A modo de aplicación, el artículo analizará un experimento real de laboratorio conducente a la determinación de la aceleración de la gravedad terrestre mediante tiros parabólicos. Su tratamiento de datos requerirá el empleo del algoritmo iterativo de Levenberg-Marquardt facilitado por la biblioteca Dlib [3] para la resolución de problemas de mínimos cuadrados no-lineales. Se hará uso, asimismo, de las funcionalidades de representación de datos ofrecidas por la biblioteca Matplot++ [4].