¿Por qué estudiar análisis numérico cuando los mejores algoritmos se programan en MATLAB?

Tiene un punto en que es aconsejable utilizar el software de la biblioteca en la mayoría de los casos cuando se necesita un algoritmo numérico, a diferencia de sus propias implementaciones. Es un gran paso entre las descripciones ingenuas de un algoritmo y un software industrial. Es instructivo implementar los algoritmos usted mismo como una experiencia de aprendizaje, pero para el uso en la vida real, generalmente es mejor usar software enlatado. Ese punto debe destacarse en un curso de análisis numérico.

Por lo general, cuando surge la necesidad de un algoritmo numérico, hay varias opciones posibles. A menudo, hay una opción estándar (digamos factorización LU para sistemas lineales) y algunas alternativas que son buenas para aplicaciones particulares (digamos QR para problemas de mínimos cuadrados). Un curso de algoritmos numéricos debe informarle sobre las propiedades de los diferentes algoritmos para que pueda tomar una decisión informada.

Sin embargo, no solo los algoritmos se estudian en los cursos de análisis numérico. Un curso introductorio debe tener una sección sobre aritmética de coma flotante y el estándar IEEE 754, para comprender cómo se aproximan los números reales y apreciar cuándo las cosas pueden salir mal. Es decir, ¿en qué casos pueden ocurrir respuestas poco confiables debido al uso de coma flotante en lugar de números reales? (No es tan frecuente, pero sucede). También se debe enseñar el costo computacional de varios métodos y el concepto de recuento de operaciones . Otro tema importante a cubrir es el concepto de condicionamiento de un problema matemático. Además, la diferencia entre aproximación e interpolación generalmente se cubre, y varios métodos deben ser discutidos y comparados.

En estos días, cuando un software bueno y robusto está fácilmente disponible, creo que es importante que los cursos de análisis numérico se concentren en estos temas conceptuales, que, en mi opinión, también son más interesantes.

Un par de posibles razones.

– Quizás desee utilizar un algoritmo en una aplicación real que requiera una operación en tiempo real. Es muy probable que eso signifique que necesitará implementar el algoritmo de manera eficiente en software o hardware, lo que requerirá que comprenda bien el algoritmo.

– Si no comprende un algoritmo, no hay forma de expandirlo para quizás mejorar alguna métrica de rendimiento o aumentar la eficiencia. Del mismo modo, según mi experiencia, hasta que realmente hace que un algoritmo funcione para usted mismo, generalmente no lo comprende completamente.

– Si bien las herramientas de Matlab son bastante extensas, todavía hay muchas cosas que no están incluidas o que no son lo que quieres. Yo trabajo en comunicaciones y procesamiento de señales, y aunque tienen cajas de herramientas que implementan muchos de los fundamentos, hay muchas cosas que no están cubiertas. Si crees que todo en tu campo está incluido en Matlab, te animo a que eches un vistazo a cuál es la investigación de vanguardia de ese campo. Dudo mucho de todos los algoritmos más recientes que las personas proponen en conferencias y se incluyen artículos de revistas.

– Finalmente, los autores de Matlab no son perfectos. Si comprende algo, puede realizar controles de cordura y superar y deficiencias relativamente sin dolor.

Quiero decir, seamos realistas, casi todo lo que aprendes en pregrado se entiende completamente en la industria. ¿Eso hace que no tenga sentido aprender?

Eric tiene razón.

Por ejemplo, su primer ejemplo. En una organización de ingeniería, es probable que tenga docenas de códigos, todos los cuales usan una o más o muchas técnicas numéricas.

En la que trabajé más, incluida una rutina de búsqueda de raíz, y en realidad fue motivo de cierta controversia qué raíz usar.