Computación científica gratuita: Python como alternativa real a MATLAB y Mathematica

Python lleva más de una década ganando terreno en laboratorios y departamentos de ingeniería. Lo que empezó como una alternativa de nicho a MATLAB se ha convertido en la herramienta estándar para cálculo científico en universidades, centros de investigación y empresas tecnológicas. El motivo es sencillo: hace lo mismo, cuesta cero euros y no caduca.

Por qué tiene sentido dejar MATLAB

Las licencias de MATLAB rondan los 2.000 euros anuales para uso individual. Las de las toolboxes especializadas (Signal Processing, Optimization, Control System) se suman encima. En un contexto universitario esto no duele porque la institución paga, pero en cuanto el ingeniero sale al mercado laboral o monta algo propio, la factura aparece.

Más allá del coste, Python permite integrar el cálculo científico con el resto del stack de software actual: APIs web, bases de datos, machine learning, automatización. MATLAB vive en su propio mundo. Python vive en el mismo mundo que todo lo demás.

Las tres herramientas que sustituyen a MATLAB

El núcleo del ecosistema científico de Python son tres librerías que trabajan juntas:

  • NumPy: operaciones vectoriales y matriciales. Es el equivalente directo de la funcionalidad básica de MATLAB.
  • SciPy: algoritmos científicos avanzados: integración numérica, ecuaciones diferenciales, transformadas de Fourier, optimización, estadística y procesado de señales.
  • Matplotlib: visualización de datos y gráficas al nivel de publicación científica.

Juntas cubren el 90% de lo que hace un ingeniero en MATLAB día a día. El 10% restante depende de los toolboxes específicos que se usen, pero casi todos tienen equivalente en Python.

NumPy: álgebra lineal sin sacrificar velocidad

La operación más habitual en MATLAB es la manipulación de matrices. NumPy replica esa funcionalidad con una sintaxis muy parecida y una velocidad comparable, porque por debajo llama a las mismas librerías BLAS y LAPACK que usa MATLAB internamente.

import numpy as np

# Resolver un sistema lineal Ax = b
A = np.array([[3, 1], [1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)
print(x)  # [2. 3.]

# Multiplicación matricial
C = np.dot(A, A)

# Valores y vectores propios
valores, vectores = np.linalg.eig(A)

La diferencia más evidente respecto a MATLAB es que Python indexa desde 0, no desde 1. Es el ajuste que más cuesta al principio y el que primero se olvida.

SciPy: el equivalente a los toolboxes de pago

Donde MATLAB cobra más es en los toolboxes especializados. SciPy los cubre sin coste adicional. El módulo scipy.signal reemplaza al Signal Processing Toolbox; scipy.optimize al Optimization Toolbox; scipy.integrate y scipy.linalg hacen el resto.

from scipy import signal
import numpy as np

# Diseño de filtro Butterworth de orden 4 a 100 Hz (fs=1000 Hz)
fs = 1000
b, a = signal.butter(4, 100, fs=fs, btype='low')

# Señal de prueba: 50 Hz más ruido
t = np.linspace(0, 1, fs)
x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.randn(fs)

# Filtrado sin desfase de fase
y = signal.filtfilt(b, a, x)

Matplotlib: gráficas sin salir de Python

La sintaxis básica de Matplotlib se diseñó deliberadamente parecida a la de MATLAB para facilitar la transición. Quien lleva años haciendo plot(x, y) en MATLAB se sentirá cómodo desde el primer día.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 200)

fig, ax = plt.subplots()
ax.plot(x, np.sin(x), label='sen(x)')
ax.plot(x, np.cos(x), label='cos(x)', linestyle='--')
ax.set_xlabel('x (rad)')
ax.set_ylabel('Amplitud')
ax.legend()
ax.grid(True)
plt.tight_layout()
plt.savefig('señal.png', dpi=150)

Para publicaciones científicas, Matplotlib genera gráficas en PDF o SVG listas para LaTeX. Para análisis exploratorio, plotly o seaborn añaden interactividad o un acabado estadístico más refinado.

Jupyter Notebooks: el entorno interactivo que MATLAB nunca tuvo tan abierto

Los Live Scripts de MATLAB permiten mezclar código, resultados y texto en un solo documento. Jupyter Notebooks hace lo mismo, pero el formato es estándar abierto (JSON), funciona en cualquier navegador, se comparte en GitHub sin instalar nada y se puede ejecutar en la nube con Google Colab o Binder sin coste.

Se ha convertido en el formato de referencia para compartir análisis reproducibles en ciencia e ingeniería. La mayoría de publicaciones científicas con código adjunto usan Notebooks.

Cómo hacer la migración sin sufrir

El obstáculo real no es técnico, es de hábito. Quien lleva años escribiendo scripts .m tiene que reaprender la sintaxis básica. Algunos consejos para que no se haga largo:

  • Migrar un script real propio, no un ejercicio de tutorial. Aprender sobre código conocido es mucho más rápido.
  • Instalar Anaconda: incluye Python, NumPy, SciPy, Matplotlib y Jupyter en un solo instalador.
  • Usar la tabla de equivalencias de la documentación de NumPy (NumPy for MATLAB users), que mapea directamente cada función de MATLAB a su equivalente en NumPy.
  • Para scripts existentes, SMOP convierte código .m a Python automáticamente. El resultado siempre necesita revisión, pero ahorra tiempo en migraciones grandes.

Cuándo sí tiene sentido quedarse con MATLAB

Hay casos en los que cambiar no tiene sentido. Si el trabajo implica hardware con drivers oficiales solo para MATLAB/Simulink (lo habitual en sistemas de control industrial), la integración no tiene sustituto directo. Tampoco si el equipo completo trabaja en MATLAB y los flujos de trabajo están muy consolidados: el coste de la transición supera al de la licencia.

Fuera de esos casos, Python cubre perfectamente el cálculo científico general. Y las licencias que se ahorran se pueden invertir en otra cosa.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP