Algoritmos y códigos para cálculos numéricos Fausto Cervantes Ortiz
UNIVERSIDAD AUTÓNOMA DE LA CIUDAD DE MÉXICO
Enrique Dussel Ambrosini
RECTOR
Ernesto Aréchiga Córdoba
SECRETARIO GENERAL
María del Rayo Ramírez Fierro
COORDINADORA ACADÉMICA
Raúl Soto Peredo
COORDINADOR DEL COLEGIO DE CIENCIA Y TECNOLOGÍA
Eduardo Mosches Nitkin
BIBLIOTECA DEL ESTUDIANTE
Enrique Dussel Ambrosini
RECTOR
Ernesto Aréchiga Córdoba
SECRETARIO GENERAL
María del Rayo Ramírez Fierro
COORDINADORA ACADÉMICA
Raúl Soto Peredo
COORDINADOR DEL COLEGIO DE CIENCIA Y TECNOLOGÍA
Eduardo Mosches Nitkin
BIBLIOTECA DEL ESTUDIANTE
El curso de m´etodos num´ericos de la UACM consta de dos partes esenciales: primera, expo-ner los fundamentos matem´aticos de los m´etodos, y segunda, desarrollar c´odigos que permitan al alumno realizar los c´alculos que se le solicitan usando las ventajas de la computadora.
Con respecto al desarrollo de los programas, es frecuente que se ignore el hecho de que el alumno tom´o un curso de programaci´on en C, y se le obligue a adoptar el programa de c´omputo que cada profesor prefiere, ll´amese Matlab, Scilab, etc. Sin embargo, esto puede provocar que el alumno tenga problemas para desarrollar los c´odigos, pues su preparaci´on previa no es la adecuada. Como consecuencia, el alumno termina considerando el curso de m´etodos num´ericos como dos cursos diferentes: uno de matem´aticas y uno de computaci´on. A consecuencia de ello, si el alumno no aprueba alguna de las dos partes, reprobar´a el curso completamente.
Con lo anterior en mente, el autor prepar´o el presente manual de algoritmos, que incluye c´odigos escritos en lenguaje C, a fin de que el alumno no se distraiga del contenido matem´atico del curso, y pueda aplicar los presentes algoritmos y c´odigos a sus problemas sin que esto ´ultimo signifique un trabajo doble. De este modo, el alumno deja de tener el problema de entender el m´etodo sin poder aplicarlo al tener problemas con el programa de c´omputo. Si entendi´o el m´etodo, no le ser´a dif´ıcil adaptar los c´odigos dados como ejemplos para resolver los ejercicios que le sean asignados.
El cap´ıtulo 1 expone los algoritmos y c´odigos para la soluci´on de ecuaciones algebraicas no lineales y trascendentes, con una inc´ognita. Se revisan los m´etodos de bisecci´on, iteraci´on de punto fijo, de las tangentes y de las secantes, ası´ como el de la posici´on falsa.
El cap´ıtulo 2 contiene los algoritmos y c´odigos para interpolaci´on de polinomios a conjuntos de datos. Se exponen los m´etodos de Lagrange, Newton, ası´ como los splines libres y sujetos.
El cap´ıtulo 3 trata los algoritmos y c´odigos para integraci´on y derivaci´on num´erica. Se revi-san los m´etodos de los rect´angulos, trapecios y par´abolas, ası´ como integrales dobles. Tambi´en la derivaci´on num´erica para funciones dadas en forma tabular.
El cap´ıtulo 4 se dedica a los algoritmos y c´odigos para integrar ecuaciones diferenciales ordinarias. Los m´etodos que abarca son los de Euler, Runge-Kutta, Fehlberg y Adams, ası´ como sistemas de ecuaciones.
El cap´ıtulo 5 contiene los algoritmos y c´odigos para resolver num´ericamente sistemas de ecuaciones, lineales o no lineales. Los m´etodos cubiertos son el de eliminaci´on, iteraci´on de punto fijo, ası´ como el de las tangentes y el de las secantes, extrapolados a varias variables.
Cada cap´ıtulo contiene ejercicios de final de secci´on. En trabajos previos, el autor ha acos-tumbrado poner la soluci´on de cada ejercicio propuesto. Por la naturaleza del tema de este libro, eso no es posible o recomendable en algunos de los ejercicios aquı´ planteados. Espec´ıfica-mente, en los cap´ıtulos de interpolaci´on y ecuaciones diferenciales, escribir las respuestas har´ıa que el volumen de este libro aumentara en forma considerable. En lugar de ello, se ha optado por dejar sin respuesta cada ejercicio de esos cap´ıtulos. El alumno no deber´ıa tener problema en verificar por sı´ mismo la certeza de sus resultados.
Este manual no pretende ser exhaustivo en modo alguno. Los m´etodos num´ericos aquı´ abor-dados son los m´as usuales, sin ser todos los que comprende un curso de m´etodos num´ericos.
Cada uno de los c´odigos dados se prob´o para verificar su funcionamiento1. A pesar de ello, no se descarta la posibilidad de errores durante la edici´on del libro. Se agradecer´a a los lectores que se sirvan se˜nalarlos para su correcci´on en futuras ediciones. Por otro lado, habr´a que tener siempre presente la posibilidad de que los c´odigos dados no sean compatibles con la versi´on del compilador o sistema operativo usado por cada quien.
Se agradece el apoyo de la Academia de Matem´aticas para que el presente libro pudiera publicarse. En particular, vayan agradecimientos a Fausto Jarqu´ın Z´arate y a Miguel ´Angel Mendoza Reyes por sus comentarios y sugerencias ´utiles. Por otro lado, a Diana Aurora Cruz Hern´andez, de la Academia de Inform´atica, cuya ayuda para revisar los c´odigos en C fue determinante. Asimismo, el autor agradece a Irma Irian Garc´ıa Salazar, del Algonquin College (en Ottawa, Canad´a) por su revisi´on y las correcciones propuestas.
El presente libro se escribi´o durante el a˜no sab´atico que el autor disfrut´o de agosto de 2011 a julio de 2012. Por ello agradece a la Universidad Aut´onoma de la Ciudad de M´exico el apoyo brindado para que este proyecto pudiera realizarse.
Con respecto al desarrollo de los programas, es frecuente que se ignore el hecho de que el alumno tom´o un curso de programaci´on en C, y se le obligue a adoptar el programa de c´omputo que cada profesor prefiere, ll´amese Matlab, Scilab, etc. Sin embargo, esto puede provocar que el alumno tenga problemas para desarrollar los c´odigos, pues su preparaci´on previa no es la adecuada. Como consecuencia, el alumno termina considerando el curso de m´etodos num´ericos como dos cursos diferentes: uno de matem´aticas y uno de computaci´on. A consecuencia de ello, si el alumno no aprueba alguna de las dos partes, reprobar´a el curso completamente.
Con lo anterior en mente, el autor prepar´o el presente manual de algoritmos, que incluye c´odigos escritos en lenguaje C, a fin de que el alumno no se distraiga del contenido matem´atico del curso, y pueda aplicar los presentes algoritmos y c´odigos a sus problemas sin que esto ´ultimo signifique un trabajo doble. De este modo, el alumno deja de tener el problema de entender el m´etodo sin poder aplicarlo al tener problemas con el programa de c´omputo. Si entendi´o el m´etodo, no le ser´a dif´ıcil adaptar los c´odigos dados como ejemplos para resolver los ejercicios que le sean asignados.
El cap´ıtulo 1 expone los algoritmos y c´odigos para la soluci´on de ecuaciones algebraicas no lineales y trascendentes, con una inc´ognita. Se revisan los m´etodos de bisecci´on, iteraci´on de punto fijo, de las tangentes y de las secantes, ası´ como el de la posici´on falsa.
El cap´ıtulo 2 contiene los algoritmos y c´odigos para interpolaci´on de polinomios a conjuntos de datos. Se exponen los m´etodos de Lagrange, Newton, ası´ como los splines libres y sujetos.
El cap´ıtulo 3 trata los algoritmos y c´odigos para integraci´on y derivaci´on num´erica. Se revi-san los m´etodos de los rect´angulos, trapecios y par´abolas, ası´ como integrales dobles. Tambi´en la derivaci´on num´erica para funciones dadas en forma tabular.
El cap´ıtulo 4 se dedica a los algoritmos y c´odigos para integrar ecuaciones diferenciales ordinarias. Los m´etodos que abarca son los de Euler, Runge-Kutta, Fehlberg y Adams, ası´ como sistemas de ecuaciones.
El cap´ıtulo 5 contiene los algoritmos y c´odigos para resolver num´ericamente sistemas de ecuaciones, lineales o no lineales. Los m´etodos cubiertos son el de eliminaci´on, iteraci´on de punto fijo, ası´ como el de las tangentes y el de las secantes, extrapolados a varias variables.
Cada cap´ıtulo contiene ejercicios de final de secci´on. En trabajos previos, el autor ha acos-tumbrado poner la soluci´on de cada ejercicio propuesto. Por la naturaleza del tema de este libro, eso no es posible o recomendable en algunos de los ejercicios aquı´ planteados. Espec´ıfica-mente, en los cap´ıtulos de interpolaci´on y ecuaciones diferenciales, escribir las respuestas har´ıa que el volumen de este libro aumentara en forma considerable. En lugar de ello, se ha optado por dejar sin respuesta cada ejercicio de esos cap´ıtulos. El alumno no deber´ıa tener problema en verificar por sı´ mismo la certeza de sus resultados.
Este manual no pretende ser exhaustivo en modo alguno. Los m´etodos num´ericos aquı´ abor-dados son los m´as usuales, sin ser todos los que comprende un curso de m´etodos num´ericos.
Cada uno de los c´odigos dados se prob´o para verificar su funcionamiento1. A pesar de ello, no se descarta la posibilidad de errores durante la edici´on del libro. Se agradecer´a a los lectores que se sirvan se˜nalarlos para su correcci´on en futuras ediciones. Por otro lado, habr´a que tener siempre presente la posibilidad de que los c´odigos dados no sean compatibles con la versi´on del compilador o sistema operativo usado por cada quien.
Se agradece el apoyo de la Academia de Matem´aticas para que el presente libro pudiera publicarse. En particular, vayan agradecimientos a Fausto Jarqu´ın Z´arate y a Miguel ´Angel Mendoza Reyes por sus comentarios y sugerencias ´utiles. Por otro lado, a Diana Aurora Cruz Hern´andez, de la Academia de Inform´atica, cuya ayuda para revisar los c´odigos en C fue determinante. Asimismo, el autor agradece a Irma Irian Garc´ıa Salazar, del Algonquin College (en Ottawa, Canad´a) por su revisi´on y las correcciones propuestas.
El presente libro se escribi´o durante el a˜no sab´atico que el autor disfrut´o de agosto de 2011 a julio de 2012. Por ello agradece a la Universidad Aut´onoma de la Ciudad de M´exico el apoyo brindado para que este proyecto pudiera realizarse.