Está en la página 1de 11

Capítulo 1.

Introducción a los métodos numéricos y su programación

Introducción

E l estudio de fenómenos complejos en ciencia o el diseño en ingeniería, requiere en muchos


casos, y antes de la verificación o construcción física de los mismos, un estudio teórico de
ellos. A pesar de que el estudio clásico de las ciencias básicas y ciencias de la ingeniería
enfatiza, en una primera aproximación, el estudio matemático y analítico de los problemas, en
realidad, la complejidad de la mayoría de ellos implica técnicas diferentes a las analíticas que
constituyen el cuerpo clásico de las matemáticas.

La mayoría de la gente asocia el trabajo científico y tecnológico a su cuantificación numérica.


Esto implica que todo fenómeno físico o construcción tecnológica tiene un comportamiento
predecible y por ello puede ser cuantificado y simulado sin tener que realizarse. Ese es el sentido
numérico de la ciencia y la viabilidad predictiva de la tecnología. Sin embargo, aún cuando esto
es parte del conocimiento general, rara vez se comprenden las vías por las que esta
cuantificación pueda lograrse. Quien haya llevado un curso de ciencia, particularmente física o
introducción a las ciencias de la ingeniería (circuitos eléctricos, estática o dinámica) se encuentra
con dos panoramas: los problemas “realistas” no suelen resolverse o bien, estas disciplinas
resultan “aplicadas” cuando en lugar de analizar la teoría se adopta la visión del laboratorio o el
taller. Parece entonces haber dos mundos que no se conectan, la teoría y la práctica. En gran
medida esto ocurre porque los métodos matemáticos que se aprenden conceptualmente y que
soportan la ciencia no permiten siempre resolver analíticamente las ecuaciones teóricas hasta un
nivel predictivo o descriptivo. Esto es, la teoría está conformada por ecuaciones de
comportamiento no resueltas en términos analíticos y, según se asegura, detrás de ellas está la
descripción de los fenómenos. ¿Cómo puede entonces asegurarse que esto es así?

El análisis numérico es una vía de solución alterna que permite conectar la teoría y
la práctica al nivel que se quiera de medición y cálculo pero en una forma diferente
a como normalmente se enseña la operación analítica de los conceptos.

Las computadoras, hoy en día, juegan un papel decisivo en esto, pues la complejidad de los
cálculos supera al poder humano de cómputo. La historia marca la década de los años cuarenta
durante el siglo XX como el nacimiento de los métodos numéricos modernos, al conjuntarse tres
elementos esenciales: el desarrollo de las computadoras electrónicas programables, el desarrollo
del análisis matemático moderno y la disponibilidad y necesidad de problemas complejos en
ciencia y tecnología. Aspectos como la mecánica de fluidos, el estudio de las propiedades
electromagnéticas de los materiales y el análisis de sistemas mecánicos complejos dependieron
fuertemente de estos desarrollos.

Para saber más

Una supercomputadora tiene un alto poder de cómputo y estabilidad. Empleadas para tareas intensivas de cálculo como el
cálculo de procesos cuánticos, análisis de resultados de física de partículas, predicción del clima, efectos del cambio
climático, cinética molecular, simulaciones aeronáuticas o automotrices en viento y procesos dentro de reactores de fusión
y fisión. Las primeras fueron introducidas en la década de los sesenta, diseñadas por Seymour Cray en la compañía
Control Data Corporation, hasta que Cray constituyó su propia empresa, Cray Research. Desde entonces el mercado de
super-cómputo ha crecido exponencialmente. M ás información aquí.

El artículo de Von Newmann y Goldstine (1947) sobre inversión de matrices de orden superior
estableció la posibilidad de emplear las computadoras para realizar cálculos numéricos complejos
en tiempos razonables que hasta entonces no eran asequibles al ser humano. Diversos
problemas que de manera conjunta aparecen en el análisis físico y tecnológico tenían las mismas
características:

• La solución de grandes sistemas de ecuaciones lineales que representaban sistemas


complejos

• La solución de sistemas de ecuaciones no lineales


• Los problemas de optimización de un gran número de variables y restricciones

• El problema del ajuste de funciones a un conjunto de puntos experimentales

• La teoría de aproximaciones, mediante la cual se busca cómo aproximar un valor de una


función compleja (como sin(x), ln(x), ex, etc.) a otra que se base en el empleo de
operaciones básicas (la suma, resta, multiplicación y división)

• El desarrollo del análisis de Fourier de señales complejas

• La integración y derivación automática de funciones complejas por parte de los sistemas de


cómputo

• La solución de ecuaciones diferenciales ordinarias y parciales, así como de ecuaciones


integrales

Estos problemas aparecen de manera conjunta al analizar los sistemas físicos de fenómenos y
aplicaciones complejas y el advenimiento de las computadoras programables propulsaron el
desarrollo de las técnicas numéricas para hacerlo. Cada vez se planteaban problemas más
complejos con un mayor número de variables, lo que competía rápidamente con la creciente
capacidad de cómputo existente y la necesidad de resultados cada vez más precisos. Un ejemplo
puede bastar para explicar esto.

El diseño automotriz normalmente requiere de normas de calidad y predictibilidad


estrictas en el movimiento hasta el orden de milímetros, pero el desarrollo de la
industria aeronáutica hizo necesario que dentro de sus estándares se estableciera
un nivel de predictibilidad micrométrico, en tanto que la ciencia nuclear hizo que
estos valores se redujeran hasta en seis órdenes de magnitud más.

Aún con las computadoras más poderosas, se hizo necesario que los complicados procesos
de cálculo fueran lentos, así que precisión y rapidez comenzaron a librar una batalla muy fina
para combinarse adecuadamente en las computadoras disponibles, sin comprometer la exactitud.
El análisis de estabilidad de los resultados y métodos numéricos desarrollados se hizo cada vez
más tan importante como el desarrollo de los métodos numéricos en sí mismos.

Para saber más

El impacto y simulación de la propagación de un terremoto ha sido un trabajo destacable para las computadoras CRAY
por parte de la UNAM , como la propia compañía que las produce anuncia orgullosamente en su portal.
Se puede estudiar la historia de los métodos numéricos estadísticamente y se encontrará que
en todos los campos descritos antes, alrededor del 90% de ellos han sido desarrollados en los
últimos 70 años. Si bien gran parte de los métodos numéricos estudiados en este libro no
corresponden a los desarrollados a partir de 1940, el 10% restante sí surgieron como
curiosidades matemáticas con baja aplicabilidad por no disponer en su momento de una
plataforma de implementación como los son las computadoras. Pero son actualmente suficientes
para resolver la mayoría de los problemas genéricos de simulación. Los métodos numéricos
desarrollados en estos últimos 70 años son aplicables cada uno a problemas altamente
específicos. Los albores del desarrollo de los métodos numéricos apenas pueden rastrearse en
la historia, y están referidos a los tiempos anteriores a nuestra era con las civilizaciones egipcia y
árabe que resolvieron problemas que sólo después pudieron resolverse analíticamente mediante
el álgebra (un caso particular es la solución de ecuaciones de segundo grado antes de que se
conociera una fórmula para resolverla) y que no perdieron vigencia por sentar las bases de
desarrollos para resolver problemas que hoy se saben algebraicamente irresolubles.

El comprender el uso de los métodos numéricos hoy requiere de disponer de las tres
habilidades asociadas con los elementos antes mencionados.

Por un lado la habilidad para comprender cómo un procedimiento numérico representa un


concepto matemático que además permite manipularlo alternativamente a los métodos analíticos
conocidos que poseen grandes limitantes para hacerlo; la habilidad y conocimiento de
implementar estos métodos mediante la programación de una computadora programable; y
finalmente, la habilidad de comprender y visualizar un problema físico o tecnológico mediante
estos métodos a través de los conceptos matemáticos de análisis aprendidos analíticamente.
Este libro pretende introducir al estudiante hacia estos tres aspectos.

Este enfoque y su importancia pueden estar llenos de escepticismo. Por un lado quien no ha
empleado los métodos numéricos para resolver un problema complejo tendrá hasta ahora dos
caminos ya conocidos a los que costará trabajo renunciar: por un lado el enfoque analítico que
permite resolver, mediante el análisis matemático, un problema simple sin demasiadas
complicaciones como se hace en la mayoría de los cursos teóricos de ciencia e introducción a la
ingeniería y por otro lado, el camino de desarrollo experimental o tecnológico, que permite
diseñar un proceso o prototipo sin grandes elementos de cálculo previo. Es posible permanecer
ahí por comodidad y sin grandes sobresaltos, pero el camino a la ciencia y tecnología modernas
ni plantea problemas sencillos que regularmente se puedan resolver analíticamente, ni permite el
dispendio ni imprecisión de un desarrollo experimental aproximado basado en el ensayo y error.
Nadie construye un avión sin haberlo simulado previamente, ni un acelerador de partículas sin
haber reproducido numéricamente su implementación y construcción.

Para saber más

El desarrollo del poder de cómputo ha desarrollado el estudio de métodos numéricos, su eficiencia y complejidad. Al dar
clic aquí verás el sistema de cómputo JAGUAR, instalado en el laboratorio nacional de Oak Ridge, una de las
computadoras más rápidas y robustas del mundo.

Así, el desarrollo matemático de técnicas numéricas alternas a las analíticas, constituye el


cuerpo de estudio de los métodos numéricos y la cuantificación de su eficiencia, al análisis
numérico. De este modo, para cada elemento de conocimiento matemático, se han desarrollado
técnicas alternas que enfocan los problemas desde una perspectiva meramente numérica, las
cuales buscan aproximarse al nivel predictivo que poseen los métodos analíticos. Si bien
podríamos basar el estudio de estas técnicas en un enfoque descriptivo de las mismas y
complementariamente en un enfoque analítico sobre su comportamiento, la realidad de la
práctica profesional implica también el aprendizaje de su implementación sobre plataformas
tecnológicas más o menos desarrolladas y basadas en la programación. La razón es simple, una
creciente necesidad de precisión se alcanza típicamente con un alto número de aplicaciones de
cada método, lo que escala el número de operaciones asociadas y la complejidad de
desarrollarlas por técnicas elementales de cálculo. Es así como el empleo de autómatas
computacionales se vuelve necesario e imprescindible.

De este modo, esta obra tiene tres orientaciones. La primera es realizar una introducción a los
métodos numéricos de problemas típicos y básicos, sobre todo aquellos asociados con el álgebra
y el cálculo, los cuales son elementos básicos en muchas de las aplicaciones analíticas de la
ciencia y la tecnología. La segunda se refiere a lograr transmitir no sólo la comprensión de los
métodos numéricos, sino la forma en que estos se implementan a través de lenguajes de
programación y el dominio de algunos elementos de este proceso. Finalmente, la posibilidad de
emplear software especializado, que si bien simplifica el grado de dominio de los métodos
numéricos, deja aún la construcción del análisis numérico de un problema. Por estas razones,
este libro evoluciona a partir de la comprensión básica de algunos métodos sencillos y su
enfoque recursivo, mediante el empleo de Excel como herramienta primaria, para posteriormente
enfatizar la aplicabilidad de un primer lenguaje de presentación y culminar con una perspectiva
dual en que el Método numérico es implementado sobre una plataforma robusta que soporta la
visualización o bien mediante comandos predefinidos que se emplean en conjunto para el
análisis.

El tema está orientado en primera instancia al aprendizaje de la programación en un


lenguajes como C++ y Python, afín al integrado en Mathematica, pero haciendo un breve énfasis
en Excel con la finalidad de que los lectores inicialmente comprendan la metodología detrás de
los métodos numéricos clásicos. El empleo de la herramienta Mathematica tiene como intención
doble, la disposición de herramientas para la visualización y la simulación, que serán de utilidad
en los proyectos integradores del libro y, por otro lado, la solución de escenarios en la
metodología de Aprendizaje Basado en Problemas, los cuales serán integrados en cada capítulo
del libro. Adicionalmente, el empleo de Mathematica permite aprender los comandos del software
moderno para simulación y cálculo matemático, los cuales en la vida diaria pueden sintetizar la
aplicación futura de los conceptos del libro, pero sin pasar por alto la necesidad de la
programación para visualizar y realizar cálculos en ingeniería.

E l campo de los métodos numéricos es muy basto y busca comprender procedimientos


alternos para resolver problemas matemáticos simples, pero que no pueden resolverse
analíticamente. Por ejemplo, la solución de una ecuación, el cálculo de una integral, la solución
de un problema de optimización o la solución de una ecuación diferencial. Aún más, hay una gran
variedad de métodos numéricos específicos para cada tipo de problema, que atienden no sólo a
su eficiencia relativa, sino al tipo específico de elementos matemáticos que intervienen. Otro
aspecto adicional es el tipo particular de problema a resolver, ya que integrar diferentes métodos
numéricos en una secuencia determinada, requiere de insumos o los genera en una forma
específica que restringe su uso.

Un problema clásico y probablemente conocido por el lector se ilustra en la Figura 1.1,


corresponde a un oscilador de constante de restitución y longitud sin deformación, sujeto a
una resistencia lineal a la velocidad con el medio con coeficiente y una fuerza armónica externa
sin( ). Este problema es normalmente estudiado en los cursos de ecuaciones diferenciales
o en un curso de vibraciones.

La descripción del movimiento de un oscilador sujeto a fuerzas armónicas externas y


resistencia, es un problema clásico que analíticamente no admite soluciones ante variaciones hacia modelos
más realistas. La solución posee una amplitud máxima estacionaria que depende de la frecuencia de la fuerza
armónica externa, .

La ecuación que describe el movimiento es:

cuya solución por métodos analíticos (coeficientes indeterminados y variación de parámetros,


por ejemplo) es:
donde A es una amplitud, y son fases asociadas las condiciones iniciales de posición y
velocidad. Similarmente: £

La solución exhibe un término transitorio que se anula para tiempos grandes y un término
armónico estacionario, que posee un máximo que puede calcularse por métodos analíticos
habituales para γ y es útil para analizar la resonancia del sistema, el cual es:

para:

Hay varios procedimientos analíticos que se llevan a cabo aquí. El primero de ellos y que está
implícito en varias partes del análisis es la posibilidad de resolver o despejar en una ecuación
cualquiera de sus parámetros. Posteriormente, el obtener la solución analítica de una ecuación
diferencial y finalmente el poder resolver un problema de máximos y mínimos mediante las
técnicas habituales del cálculo diferencial. Una variación del modelo matemático para la fuerza
armónica , puede hacer inviable la aplicación de dichas técnicas analíticas, las cuales
deberán sustituirse por técnicas numéricas. Aprender cómo combinarlas para resolver problemas
de análisis completos es parte del objetivo de este libro.

Para saber más

La resonancia es un fenómeno o conjunto de fenómenos relacionados con movimientos periódicos o cuasi-periódicos en


que se genera reforzamiento de la oscilación al someter el sistema a perturbaciones externas de una frecuencia
determinada que se relaciona con las frecuencias naturales del propio sistema. Este fenómeno puede ocurrir
mecánicamente, acústicamente, electrónicamente o incluso a nivel molecular o atómico. El estudio de las frecuencias de
resonancia es un tema de interés en el estudio de estabilidad de los sistemas. En un auto por ejemplo, el sistema de
amortiguamiento puede estar mal diseñado al inducir resonancia sobre el auto cuando a velocidades típicas éste atraviesa
por imperfecciones en el pavimento, por ejemplo unos vibradores o un camino de terracería.

Gran parte de los métodos numéricos presentados aquí corresponden a métodos clásicos
iterativos. En ellos se busca la repetición de un proceso dirigido, lo cual mejora la exactitud del
resultado. Existe todo un campo de estudio relacionado con esto en matemáticas, la teoría de la
estabilidad, bajo la cual se sustenta la implementación de métodos teóricamente convergentes a
la solución esperada sobre sistemas de cómputo imperfectos, que poseen precisión limitada y
errores de redondeo. Esta característica es la que permite obtener resultados equiparables con
los métodos analíticos hasta cualquier precisión requerida como ilustra la Figura 1.2 en donde se
esquematiza el proceso numérico unitario, que considera datos de entrada, que sirven como
insumo del método numérico propiamente dicho, el cual incluye un criterio para decidir la salida
del proceso iterativo a través de la entrega de un resultado mediante datos de salida. Aunque
este proceso, debe entenderse en la práctica profesional, dentro de una secuencia de cálculo,
dentro de la descripción de los métodos se hará referencia a procesos numéricos unitarios,
dejando la integración a algunas aplicaciones propuestas en la sección correspondiente.

Esquema de operación de un método numérico en la resolución de un problema. El proceso


numérico unitario se encuentra encerrado en el recuadro punteado.

A lo largo de la descripción de los métodos numéricos específicos, se empleará esta


terminología en relación de procesos numéricos unitarios, datos de entrada y datos de salida, lo
cual favorecerá la comprensión, identificación y construcción de algunos elementos presentes en
los mismos. Debe tenerse en mente que todo método numérico no busca sólo la entrega de un
resultado o salida, sino que a la par cuida la exactitud de dichos resultados, a un nivel paralelo al
proceso descrito en la Figura 1.2, por lo que la descripción de los mismos será incluida
paralelamente.

Para saber más

A diferencia de los métodos analíticos directos en donde las soluciones se obtienen en forma cerrada y funcional, los
métodos iterativos, particularmente los de las matemáticas computacionales, persiguen resolver un problema (una
ecuación o sistema de ecuaciones) mediante aproximaciones sucesivas, empezando de una estimación inicial. Estos
métodos de utilidad para resolver problemas complejos con gran número de variables, en los cuales es imposible obtener
una solución cerrada o en la que esta tendría un alto costo temporal o computacional.

D ado el interés de implementar tecnológicamente los métodos numéricos que se estudiarán,


al final de cada método estudiado se presentará su implementación en diferentes
plataformas. De esta manera el lector podrá automatizar y comprender el método en cuestión,
tanto como la manera de trabajar. En esta sección se describirán diferentes herramientas con las
que se trabajará y la intención de hacerlo.

Excel es una herramienta de fácil disponibilidad, aunque no se apega del todo al esquema de
aplicación en el sentido de los lenguajes de programación. Sin embargo, es una herramienta que
permitirá al lector introducirse a la comprensión primaria del cálculo numérico visualizando el
proceso y sus elementos intermedios, así como la implementación sencilla, aunque no del todo
práctica dado el manejo de un gran número de datos y celdas. Su inclusión en los métodos
introductorios atiende más a una cuestión didáctica sobre la comprensión de la forma interna de
trabajo de éstos, que a una promoción de su uso.

En una aplicación directa de Excel se emplearán columnas para guardar un tipo particular de
variable, ya sean de entrada, intermedias o de salida, y cada paso iterativo del método se
representará en cada renglón, como ejemplifica la Figura 1.3 con el método de bisección para
resolver ecuaciones no lineales de una variable.

Ejemplificación del método de bisección en Excel.

No está en el alcance de este libro mostrar al lector el empleo de Excel, y se presupone un


conocimiento intermedio del mismo para las implementaciones de algunos métodos iniciales en
los que este paquete será usado para una implementación didáctica de los mismos. No se
requerirán conceptos adicionales a la referencia de celdas, el uso de funciones matemáticas y
lógicas, así como la construcción de gráficos.
La implementación real de un método numérico se hace mediante el uso de lenguajes de
programación, como Fortran y C++, que son los lenguajes técnicos más difundidos. Se pueden
considerar otros como Java y Python, cuyo desarrollo actual los posiciona como lenguajes
sencillos. Mucho del software comercial que se emplea en ingeniería comprende programas como
Mathematica y Matlab, que incluye ya comandos de aplicaciones numéricas y simbólicas. A lo
largo de este libro emplearemos ambas rutas, primero el del lenguaje de programación, para
posteriormente emigrar a la programación propia dentro del software comercial y finalmente al
conocimiento de comandos existentes en relación a técnicas numéricas. Este último enfoque no
pretende desincentivar la programación, ya que aún con el empleo de comandos de este tipo de
software, la realidad es que en muchas ocasiones, sobre todo cuando se resuelven problemas
complejos, es preferible construir una programación propia que puede ser controlada por el
usuario o bien alternar entre programación propia y el empleo de dichos comandos.

Existen diversas formas para programar. Algunas más similares a la forma secuencial de
realizar cálculos y operaciones por un ser humano y otras más óptimas para un lenguaje de
computadora y más eficientes al manipular simultáneamente los elementos de cálculo.

La programación estructurada sigue el primer enfoque, haciendo más clara la comprensión de


una estructura de comandos de programación pues refleja la realización de un cálculo a la vez,
como lo haría un ser humano. En este tipo de programación, la gran mayoría de las tareas
pueden realizarse mediante un conjunto reducido de comandos para secuenciar, iterar y
seleccionar información. Con estas estructuras se pueden construir o programar módulos,
segmentos o subrutinas que ejecuten tareas específicas y que puedan interactuar para realizar
tareas más complejas (Dahl, Dijkstra & Hoare, 1972).

Para saber más

La programación estructurada es un enfoque para escribir programas de cómputo empleando únicamente tres
estructuras: secuencia, selección e iteración; siendo innecesaria la transferencia incondicional.

Alternativamente, la programación funcional es una programación que se basa en el uso de


funciones aplicadas a valores, sin manejar datos intermediarios o de estado. Enfatiza así, la
aplicación de funciones, en contraste con la programación imperativa, que genera cambios de
estado. Aunque el proceso no sigue las pautas de la programación estructurada y por ello no
reproduce las acciones de cálculo clásicas, una vez que se comprende la filosofía de
programación, ésta resulta mucho más esbelta y óptima.

Para ilustrar esquemáticamente estos conceptos, la Figura 1.4 muestra esta concepción para
el primero de los métodos numéricos que se estudiará, el método de bisección. Este método se
emplea para determinar el valor aproximado donde una función f(x) se anula, y consiste en dar
dos valores aproximados que limiten a cada lado a la raíz, con lo que se calcula su valor medio y
posteriormente este valor se sustituye por alguno de los valores iniciales de manera que sigan
cumpliendo con acotar a la raíz.

Esquematización del método de bisección, desde el punto de vista de la programación


estructurada y las definiciones equivalentes de una programación funcional.

El proceso se repite varias veces para mejorar la acotación de la raíz o dar un valor mejor a
través del punto medio de ambas cotas. Esta descripción corresponde a una programación
estructurada donde a través de un proceso iterativo se va obteniendo la aproximación mediante
la repetición del método n veces. En forma alternativa, si se definen dos funciones: g que
básicamente constituye la regla de sustitución de (a,b) por nuevos valores (a’,b’) y h que
constituye la aplicación repetitiva de una función sobre una variable, n veces. Así, h(g(f,a,b),n)
constituye la aplicación funcional del algoritmo. Posteriormente se analizará detalladamente esta
comparación con la programación hecha sobre Mathematica al estudiar su sintaxis.

Ambos tipos de programación serán incluidos en el desarrollo de los métodos, principalmente


en forma inicial, aunque gran parte de estos son, en primera instancia, mejor comprendidos bajo
la programación estructurada.

En esta sección será presentada una introducción sobre la forma en que se empleará Python
y Mathematica en este libro, así como una revisión superficial de la sintaxis. No se pretende
agotar, por supuesto, el tema de la sintaxis, las librerías complementarias y otros aspectos de
construcción de ambas herramientas, para lo cual se recomienda la revisión de bibliografía
complementaria.

También podría gustarte