Inicio · Parte 11 — Métodos numéricos y computación científica
bisección → scipy.optimize.brentq
RK4 → scipy.integrate.solve_ivp
cuadratura → scipy.integrate.quad
SciPy implementa versiones de todos los métodos de esta parte, y con mejor calidad de la que se puede alcanzar en un curso: control adaptativo del paso, detección de rigidez, selección automática de algoritmo, estimación de error y décadas de código Fortran probado debajo.
La pregunta legítima es entonces por qué implementarlos a mano. La respuesta es que usar un método sin entenderlo impide saber cuándo falla. solve_ivp con opciones por defecto puede devolver resultados sin sentido en un problema rígido, y solo quien sabe qué es la rigidez interpretará el aviso y cambiará a method='BDF'. La biblioteca no protege de la ignorancia del usuario.
Hay además una razón de diagnóstico. Cuando un cálculo produce números extraños, saber distinguir entre un error de modelado, un problema mal condicionado, una tolerancia mal puesta y un fallo real de la biblioteca exige entender el algoritmo. Sin ese conocimiento, el único recurso es probar opciones al azar.
La regla práctica es clara: implementar para aprender, usar la biblioteca para producir. Reescribir un integrador en código de producción es reintroducir errores que SciPy resolvió hace veinte años. El motor de esta parte no depende de SciPy precisamente para que las implementaciones didácticas sean legibles y ejecutables en cualquier entorno.
Correspondencia entre lo implementado y su equivalente en SciPy.
SciPy 1.17.1 disponible en este entorno
implementación propia equivalente en SciPy
---------------------------------------------------------
bisection scipy.optimize.brentq
newton_raphson scipy.optimize.newton
lagrange_interpolation scipy.interpolate.lagrange
splines scipy.interpolate.CubicSpline
trapezoid_rule scipy.integrate.trapezoid
simpson_rule scipy.integrate.simpson
quadrature scipy.integrate.quad
direct_linear_solvers scipy.linalg.lu_solve
jacobi_gauss_seidel scipy.sparse.linalg.cg
numerical_least_squares scipy.linalg.lstsq
euler_method / runge_kutta scipy.integrate.solve_ivp
Este motor no requiere SciPy: todas las implementaciones
son de biblioteca estándar y ejecutables sin dependencias.
Qué aporta SciPy sobre una implementación propia.
python classes/part-11-metodos-numericos-y-computacion-cientifica/239-computacion-cientifica-con-scipy/lab.py
compmath run 239
scipy_instaladoversionequivalenciaspor_que_implementar_a_manopor_que_usar_la_bibliotecaeste_motor_no_requiere_scipy{
"scipy_instalado": false,
"version": null,
"equivalencias": {
"bisection": "scipy.optimize.brentq",
"newton_raphson": "scipy.optimize.newton",
"quadrature": "scipy.integrate.quad",
"runge_kutta": "scipy.integrate.solve_ivp",
"least_squares": "scipy.linalg.lstsq",
"splines": "scipy.interpolate.CubicSpline"
},
"por_que_implementar_a_mano": "para saber cuándo la biblioteca miente o falla",
"por_que_usar_la_biblioteca": "estabilidad, control de error y rendimiento probados",
"este_motor_no_requiere_scipy": true
}
Elección de herramientas en proyectos científicos, depuración de cálculos numéricos, validación cruzada entre implementaciones y decisiones de rendimiento.
Los Neural ODE, los samplers de difusión y los optimizadores de segundo orden son métodos numéricos con parámetros aprendidos.
10.1038/s41592-019-0686-2 verificado en Crossref (2026-08-19).