Armadillo para C++: guía completa de cálculo matricial
1. ¿Qué es Armadillo y para qué sirve?
Armadillo es una biblioteca de álgebra lineal de alto rendimiento para C++ que ofrece una interfaz cómoda e intuitiva para trabajar con matrices, vectores y cubos (arrays tridimensionales). Está diseñada para combinar la velocidad de bibliotecas de bajo nivel (como LAPACK y BLAS) con la facilidad de uso típica de lenguajes de alto nivel como MATLAB o Python (NumPy).
¿Para qué sirve? Si desarrollas aplicaciones relacionadas con machine learning, visión por computadora, procesamiento de señales, robótica, simulación física o cualquier otro campo que requiera cálculos matriciales intensivos, Armadillo se convertirá en tu herramienta indispensable. Te permite escribir código limpio y legible que, además, se ejecuta extremadamente rápido gracias a la optimización automática y al uso de aceleración por hardware (a través de OpenBLAS, Intel MKL o Apple Accelerate).
A diferencia de los bucles manuales sobre elementos de un array, Armadillo ofrece operaciones de alto nivel: multiplicación de matrices, resolución de sistemas de ecuaciones lineales, cálculo de valores propios, descomposición en valores singulares (SVD) y mucho más. La biblioteca se utiliza activamente tanto en proyectos de investigación como en la industria, y su API es tan similar a MATLAB que el código a menudo se puede portar casi sin cambios.
2. Instalación
Armadillo es una biblioteca para C++, por lo que no se instala mediante pip o npm. En su lugar, debes instalarla como una biblioteca del sistema o integrarla en tu proyecto a través de un gestor de paquetes de C++ (por ejemplo, vcpkg, Conan) o manualmente.
Método recomendado (Linux/macOS):
# Ubuntu / Debian
sudo apt-get install libarmadillo-dev
# macOS (con Homebrew)
brew install armadillo
# Fedora / RHEL
sudo dnf install armadillo-devel
Instalación con vcpkg (Windows, Linux, macOS):
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # o bootstrap-vcpkg.bat en Windows
./vcpkg install armadillo
Compilación con Armadillo (g++/clang): Después de instalar, enlaza la biblioteca:
g++ -std=c++11 -O2 mi_programa.cpp -larmadillo -o mi_programa
Para obtener el máximo rendimiento, se recomienda instalar también un backend BLAS optimizado (como OpenBLAS o Intel MKL). Armadillo lo detectará automáticamente si está instalado.
3. Inicio rápido
Un ejemplo mínimo funcional que muestra la creación de matrices y operaciones básicas:
#include <iostream>
#include <armadillo>
using namespace arma;
int main() {
// Crear una matriz 3x3 llena de unos
mat A = ones<mat>(3, 3);
std::cout << "Matriz A:\n" << A << std::endl;
// Crear un vector columna
vec b = {1, 2, 3};
std::cout << "Vector b:\n" << b << std::endl;
// Resolver el sistema de ecuaciones lineales A * x = b
vec x = solve(A, b);
std::cout << "Solución x:\n" << x << std::endl;
// Verificación: A * x debe ser igual a b
std::cout << "Comprobación A * x:\n" << A * x << std::endl;
return 0;
}
Salida: El programa creará una matriz de unos (todos los elementos iguales a 1), resolverá el sistema y mostrará el resultado.
4. Métodos y clases principales
Armadillo proporciona tres clases principales: mat (matriz de double), vec (v