Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Los astrónomos y astrofísicos han modelado la evolución de las estrellas,
y gran parte de nuestros conocimientos básicos sobre fenómenos como
de los gigantes rojos y las estrellas pulsantes ha venido no solo de las
observaciones sino de tales cálculos, fue así como se descubrió el planeta
Neptuno.
Los biólogos utilizan cada vez más las computadoras en áreas tan diversas
como la dinámica de la población (estudio de depredadores presa), el ‡ujo
de sangre en el cuerpo humano, y
Los ecólogos en el estudio de la dispersión de contaminantes en los océanos
y en la atmósfera.
2
una situación real: al exponerlo a deformaciones, vibraciones, esfuerzos,
etc. Podemos comprobar, por ejemplo, si una pieza metálica será capaz
de resistir altas temperaturas, si los cables de un puente colgante serán
capaces de soportar el tablero del mismo, etc. También se tiene:
3. CAM (computer-aided manufacturing), o fabricación asistida por com-
putadora. Implica el uso de computadores y tecnología de cómputo para
ayudar en todas las fases de la manufactura de un producto, incluyendo
la plani…cación del proceso y la producción, mecanizado, calendarización,
administración y control de calidad, con una intervención mínima del o-
perario.
3
se representa esquemáticamente en la …gura:
Análisis
Numérico
Matemáticas
?
Problemas de - Computación - Sistemas de -Solución
Ciencias e Ingenierias Cientí…ca Computación
6
Ciencias de
la Computación
2.1 Modelamiento
La formulación de un modelo matemático comienza con una declaración de los
factores a ser considerados. En muchos problemas físicos, estos se re…eren al
equilibrio de fuerzas y otras leyes de conservación de la física.
Por ejemplo, en la formulación de un modelo de un problema de trayectoria
- que se verá luego - la ley física de base es la segunda ley del movimiento
de Newton, que exige que las fuerzas que actúan sobre un cuerpo sean igual
al tipo de cambio del momento del cuerpo. Esta ley general, debe adecuarse
al problema particular mediante la enumeración y cuanti…cación de las fuerzas
que serán de importancia. Por ejemplo, la atracción gravitatoria de Júpiter,
ejercerá una fuerza sobre un cohete en la atmósfera terrestre, pero su efecto será
tan diminuto en comparación a la fuerza gravitacional de La Tierra que por lo
general puede ser omitido. Hay otras fuerzas que también pueden ser pequeñas
en comparación con las dominantes, pero sus efectos no pueden ser ignorados
tan fácilmente, y la construcción del modelo siempre será un compromiso entre
4
conservar todos los factores que probablemente pudiera tener una incidencia
sobre la validez del modelo y mantener el modelo lo su…cientemente sencillo para
que pueda ser resuelto utilizando las herramientas que se tienen a mano. Por
esto en la mayoría de los fenómenos sólo los modelos muy simples se consideran
para que puedan ser resueltas ya sea analítica o numéricamente. A medida que
el poder de las computadoras se ha incrementado, modelos más complicados
pueden ser resueltos con técnicas numéricas más so…sticadas.
Además de las relaciones básicas del modelo - que en la mayoría de las situa-
ciones en computación cientí…ca se presenta en forma de ecuaciones diferenciales
- normalmente habrá una serie de condiciones de contorno o iniciales.
Al estudiar el ‡ujo en un vaso sanguíneo, es posible que necesitemos una
condición de contorno por ejemplo que el ‡ujo no puede penetrar las paredes
de los vasos. En otros casos, las condiciones de contorno físicamente pudieran
no ser tan evidentes, pero aún se requieren, para que el problema matemático
tengan una solución única.
El modelo matemático puede tener muchas soluciones, la que nos interesa la
seleccionamos por alguna restricción, por ejemplo la exigencia de que la solución
sea positiva, o que la solución sea con la energía mínima.
En cualquier caso, se suele suponer que el modelo matemático con las apropia-
das condiciones de frontera y condiciones iniciales, tiene una solución única. El
siguiente paso entonces, es encontrar esta solución. Para los problemas de in-
terés, este tipo de soluciones rara vez se puede obtener en forma analítica. La
solución debe ser aproximada por algún método, y los métodos a ser estudia-
dos son los métodos numéricos apropiados para usar una computadora. Vamos
a considerar los pasos generales que deben adoptarse para lograr una solución
numérica, y lo que resta se dedicará a una discusión detallada de estos pasos.
2.2 Validación
Una vez que somos capaces de calcular las soluciones de un modelo, el siguiente
paso suele ser llamada la validación del modelo, es decir una comprobación de
que la solución que se calculó es lo su…cientemente precisa y cumple los …nes
para los cuales se construyó el modelo.
Hay dos fuentes principales de error. El primero es, errores en la solución
numérica, posteriormente discutiremos como surge esta fuente de error y la
mejor manera de controlarlos. La segunda fuente de error está en el modelo
mismo. Como se mencionó anteriormente, un aspecto necesario en la elaboración
de modelos: es el de tener en cuenta todos los factores en el problema físico,
pero luego, con el …n de mantener el modelo manejable, se simpli…ca omitiendo,
algunos factores que parecieran tener un efecto muy pequeño sobre la solución.
La cuestión es si dejar de lado estos efectos se justi…caba.
La primera prueba de la validez del modelo es, si la solución satisface limi-
taciones físicas obvias por ejemplo, si el problema es calcular una trayectoria
de cohetes donde la altura máxima prevista es de cien kilómetros y la solución
computarizada muestra alturas de doscientos kilómetros, (ya sabemos que algo
no está bien) o pudiera ser un tema de matemáticas si, estamos resolviendo un
5
problema para el cual los teoremas nos garantizan, que la solución debe ir en
aumento, pero la solución calculada no está aumentando, entonces es obvio que
algún error ha sido cometido. Una vez que se eliminan los errores visibles - que
suelen ser bastante fácil -la siguiente fase es, la comparación de los resultados
calculados con lo experimental o datos de observación disponibles. Muchas veces
esto es una tarea sutil, ya que si bien los resultados experimentales pueden
haberse obtenido en un entorno controlado, la física del experimento puede ser
diferente del modelo matemático. Por ejemplo, el modelo matemático de ‡ujo de
aire sobre un ala de avión por lo general asumirá la idealización de una aeronave
que volaba en la atmósfera (espacio no acotado), mientras que los resultados
experimentales correspondientes se obtendrán de un túnel de viento en el que
habrá efectos de las paredes del recinto, (tenga en cuenta que ni la experiencia
en el recinto que es un espacio acotado, ni el modelo matemático representa la
situación real de una aeronave que vuela en la atmosfera) La experiencia y la
intuición del investigador se requieren para hacer un juicio humano en cuanto a
si los resultados del modelo matemático se corresponde adecuadamente con los
datos de observación.
Aunque no sucede a menudo, pudiera ser que en el transcurso de una inves-
tigación, el modelo debe ser modi…cado. Por lo general, esto signi…ca que los
términos adicionales - que se consideraban insigni…cantes, se añaden al modelo.
A veces una revisión completa del modelo es necesaria y la situación física debe
ser abordada desde un punto de vista totalmente diferente. En cualquier caso,
una vez que el modelo se ha modi…cado el ciclo comienza de nuevo: una nueva
solución numérica, la revalidación, modi…caciones adicionales, y así sucesiva-
mente. . .
Formulación del
modelo
?
: Solución del
modelo
Modi…cación del
yXX
X
modelo XXXInsatisfactorio ?
XX Validación
XXX
XX
Satisfactorio
?
Listos para
predecir
Figura : Proceso de solución de un modelado matemático
6
validación, está listo para ser utilizado para la predicción, esto era nuestro ob-
jetivo. Ahora deberíamos ser capaces de responder a las preguntas que dieron
origen al esfuerzo de modelado. Por supuesto, siempre debemos analizar las
respuestas con un sano escepticismo, nuestro mundo físico es simplemente de-
masiado complicado y nuestro conocimiento de ella demasiado escasos para que
seamos capaces de predecir el futuro a la perfección. Sin embargo, esperamos
que nuestras soluciones numéricas nos den mayor entendimiento del problema
que se estudia, ya sea un fenómeno físico o un diseño de ingeniería.
3 La solución numérica
Vamos a revisar algunas consideraciones que surgen en la solución numérica de
un modelo matemático, estas cuestiones se tratarán luego con más detalle.
Una vez que se tiene el modelo matemático, en un primer intento tratamos de
obtener una solución explícita de forma analítica, pero esta solución sólo será
posible para algunas simpli…caciones (a veces drástica) del problema. Estos
problemas simpli…cados con soluciones conocidas pueden ser de gran utilidad
proporcionando los “casos comprobación” para el problema más general.
Cuando nos damos cuenta de que las soluciones analíticas no son posibles,
volvemos a la tarea de desarrollar un método numérico para la solución, desde
el inicio esto estaba implícito en nosotros, y se pone cada vez más explícito
a medida que el desarrollo de los equipos de computo avanzan, así como el
entorno de software que están a nuestra disposición. Nuestro enfoque puede
ser muy diferente en caso de una computadora personal que para una super-
computadora. Pero existen ciertos factores generales que se debe considerar
independientemente del equipo que se utilizará.
7
podemos realizar operaciones aritméticas con exactitud en una computadora.
Se producen estos pequeños errores, en casi todas las operaciones aritméticas,
y son llamados errores de redondeo, nuestra tarea es asegurar que estos errores
no se acumulen a tal grado como para invalidar el cálculo.
El ejemplo anterior se dio en términos de aritmética decimal, pero las com-
putadoras usan el sistema numérico binario. Cada máquina tiene una longitud
de palabra en la memoria del computador (una palabra es una cadena …nita
de bits y su longitud consiste en el número de dígitos binarios contenidos en
ella) esta puede ser de 8, 16 o 32 bits, y esta longitud de palabra determina
el número de dígitos con las que realizamos las operaciones aritméticas. A la
aritmética usual, se le llama aritmética de precisión simple y en la mayoría de
computadoras equivale entre 7 y 14 dígitos decimales.
La aritmética de precisión superior también puede llevarse a cabo. En la
mayoría de las máquinas, la aritmética de precisión doble lo tienen como parte
de su hardware, y esencialmente duplica el número de dígitos con los que se
realizan las operaciones, y aumenta de manera modesta el tiempo de ejecución,
en cambio las máquinas que lo implementan mediante un software van a requerir
varias veces este tiempo de ejecución en comparación con las de precisión simple.
Precisión superior al doble siempre se realiza mediante un software y a medida
que va aumentando la precisión, es cada vez menos e…ciente; aritmética de
precisión superior se utiliza muy poco en los problemas prácticos, pero puede
ser útil para generar soluciones “exactas”u otra información para propósitos de
prueba.
Errores de redondeo puede afectar el cálculo del resultado …nal de diferentes
maneras. En primer lugar, durante una sucesión de millones de operaciones,
todas ellas sujetas a un pequeño error, existe el peligro de que estos pequeños
errores se acumulen ocasionando la perdida de la exactitud del resultado cal-
culado. Si redondeamos al dígito más próximo, los errores individuales tienden
a compensarse, pero la desviación estándar del error acumulado tenderá a au-
mentar con el número de operaciones, dejando la posibilidad de un error …nal de
gran tamaño. Si truncamos - es decir, omitimos dígitos en lugar de redondear
- existe un sesgo a errores en una dirección, y la posibilidad de un gran error
…nal se incrementa.
8
erróneos debido a errores de redondeo, aunque sólo un pequeño número de ope-
raciones aritméticas se hayan realizado, ejemplos se darán más adelante.
9
casos, especialmente cuando el problema es no lineal, también habrá un error
de convergencia. Estos tipos de errores y los métodos de análisis y el control de
ellos serán discutidos con más detalle en situaciones concretas en lo que sigue.
Es importante tener en cuenta que un error aceptable depende en gran medida
del problema en particular. Raramente es necesaria una precisión muy alta -
por ejemplo, 14 dígitos - en la solución …nal; en realidad, para muchos de los
problemas que surgen en la industria o en otras aplicaciones, exactitud de dos
o tres dígitos de precisión es aceptable.
3.5 E…ciencia
La otra consideración importante además de la precisión, cuando aplicamos
métodos computacionales para la solución de modelos matemáticos es la e…-
ciencia. Esto signi…cará la cantidad de esfuerzo necesario - tanto humano como
del equipo de cómputo -para resolver un problema dado. Para la mayoría de
problemas (por ejemplo resolver un sistema de ecuaciones lineales), hay una
variedad de métodos posibles, algunos se remontan a muchas decenas o incluso
cientos de años. Evidentemente, nos gustaría elegir un método que minimice
el tiempo de cálculo pero que conserve la precisión adecuada en la solución
aproxi-mada. Esto resulta ser un problema sorprendentemente difícil que im-
plica una serie de consideraciones. A pesar de que con frecuencia es posible
estimar el tiempo de cálculo de un algoritmo mediante el conteo del número
de operaciones aritméticas requeridas para resolver un problema (con una tol-
erancia dada), todavía es un problema abierto, aun incluso si se ignorara los
efectos de los errores de redondeo, muy poco se sabe, salvo en algunos casos.
En los últimos años las respuestas a estas preguntas han dado lugar a una rama
de la teoría de la computación que se le conoce como teoría de la complejidad
computacional. No obstante, aun cuando se conocen estos resultados teóricos,
seguirían dando sólo aproximaciones para el tiempo de cálculo real, que depende
de un serie de factores relacionados con el sistema de computo, y estos factores
cambian como consecuencia de los nuevos sistemas y arquitecturas. De hecho, el
diseño y análisis de algoritmos numéricos deben ofrecer incentivos y direcciones
de esos cambios.
Damos un ejemplo sencillo de la manera en que un método muy poco e…-
ciente puede presentarse. Para resolver sistemas de ecuaciones lineales, muchos
libros de texto elementales de Álgebra Lineal sobre la teoría de matrices presenta
la regla de Crammer. Esta regla implica cocientes de ciertos determinantes, y
la de…nición de un determinante por lo general se da como la suma de todos los
productos posibles de los elementos de la matriz (algunos con signos menos),
tomando un elemento de cada …la y de cada columna. Hay n! dichos produc-
tos para una matriz de orden n. Ahora bien, si se procede a llevar a cabo el
cálculo de un determinante basado directamente de esta de…nición, sería nece-
sario alrededor n! multiplicaciones y sumas. Para n muy pequeña, por ejemplo
n = 2 o n = 3; esto es una pequeña cantidad de trabajo. Sin embargo, supon-
gamos que tenemos una matriz de orden 20, (que es un tamaño muy pequeño
en el cómputo cientí…co actual). Si asumimos que cada operación aritmética re-
10
quiere de un microsegundo (un millonésimo de segundo), entonces el tiempo re-
querido para estos cálculos - incluso ignorando todas las operaciones adicionales
reali-zadas en el computador - excederá a ¡un millon y medio de años! (que
aproxima por defecto a 21 20!=1000000 60 60 24 365 = 1620083). Por
otro lado, también puede usarse el método de eliminación de Gauss, donde la
cantidad de cálculos necesarios para la solución de un sistema de n ecuaciones
aumentan en proporción a n3 y para las n = 20 ecuaciones, el tiempo requerido
para todo el proceso demora 0:008 segundos (= 20 20 20=1000000). Aunque
esto es un caso extremo, ilustra las di…cultades que se pueden presentar cuando
ingenuamente aplicamos una fórmula matemática a …n de resolver un problema
con la computadora.
El código debe ser escrito de una manera clara y sencilla para que los cam-
bios se puedan hacer con facilidad y con un riesgo mínimo de crear nuevos
errores. Una parte importante del mantenimiento es que exista una buena docu-
mentación del programa para que las personas que no escribieron el código origi-
nal lo puedan modi…car de manera e…ciente. Una buena documentación también
es importante para que el usuario del programa no sólo pueda entender cómo
usar el código, sino también sus limitaciones. Finalmente, deben hacerse nu-
merosas ensayos del programa para garantizar que se han cumplido los criterios
anteriores.
11
LINPACK y EISPACK son dos ejemplos de un buen software, el primer
paquete es estándar para la solución de sistemas lineales y el segundo para
problemas de valores propios. Ahora están siendo combinados y revisados en
LAPACK, que está diseñado para ejecutarse usando computadoras de proce-
sador vectorial o también con computadoras en paralelo (que comentaremos
luego). Otro sistema muy útil es MATLAB, que contiene programas para sis-
temas lineales, valores propios y muchos otros problemas matemáticos y también
permite la fácil manipulación de matrices.
4 El entorno computacional
Como ya se ha indicado, por lo general hay un largo camino a partir de un mode-
lo matemático a un programa de computadora con éxito. Dichos programas se
desarrollan en general en un entorno computacional, que incluyen utilizar las
computadoras, el sistema operativo y otros software del sistemas, el lenguaje
en el que el programa se va a escribir, técnicas y software para la gestión de
datos y la salida grá…ca de los resultados, y los programas que hacen cálculo
simbólico. Además, las instalaciones de red permiten el uso de computadores
en sitios distantes, así como el intercambio de software y de datos.
4.1 Hardware
El hardware del computador en sí, es de importancia primordial. La com-
putación cientí…ca se realiza en los equipos que van desde una PC personal, que
ejecutan unos pocos miles de operaciones de punto ‡otante por segundo, a su-
percomputadores capaces de miles de millones de tales operaciones por segundo.
Las supercomputadoras que en el hardware utilizan instrucciones vectoriales se
llaman computadoras de procesador vectorial, mientras que los que incorporan
múltiples procesadores son llamados computadores en paralelo En este último
caso, el sistema de computadoras puede contener unos pocos procesadores, pero
por lo general muy potentes, o tantas como varias decenas de miles de proce-
sadores relativamente simples. En general, los algoritmos diseñados para com-
putadoras personales con procesadores “en serie” no serán satisfactorios para
computadoras en paralelo si no se realizaran las modi…caciones necesarias. De
hecho, un área muy activa de investigación en computación cientí…ca es el desa-
rrollo de algoritmos adecuados para computadoras vectoriales y computadoras
en paralelo.
Es bastante común hacer la ejecución de un programa en una estación de
trabajo o en una computadora personal antes de hacerlo en una supercomputa-
dora. Por desgracia, un programa no siempre producirá las mismas respuestas
en dos máquinas diferentes debido a diferentes errores de redondeo. Esto, por
supuesto, sería el caso si se emplean diferentes formas de aritmética de precisión.
Por ejemplo, una máquina que utiliza aritmética binaria 48 dígitos (14 dígitos
decimales) se puede esperar que produzca menos error de redondeo que, uno que
este usando 24 dígitos binarios (7 dígitos decimales). Sin embargo, aun cuando
12
la precisión sea la misma, dos máquinas pueden producir resultados ligeramente
diferentes debido a las diferentes convenciones para el manejo de errores de re-
dondeo. Esta es una situación insatisfactoria que se ha tratado en la norma
IEEE para aritmética de punto ‡otante. Aunque no todos los ordenadores ac-
tualmente siguen esta norma, en el futuro, probablemente lo harán y, luego las
máquinas con la misma precisión producirán resultados idénticos en el mismo
problema. Por otro lado, los algoritmos para computadoras en paralelo hacen a
menudo las operaciones aritméticas en un orden diferente que en una máquina
en serie y esto provoca que errores diferentes se produzcan.
13
aplicaciones comerciales como el control de inventario se han desarrollado du-
rante muchos años, y algunas de las técnicas utilizadas en la actualidad se están
aplicando a la gestión de grandes bases de datos para computación cientí…ca.
Es interesante observar que en muchos programas de computación cientí…ca el
número de líneas de código para manejar la gestión de datos es mucho mayor
que para el cálculo real.
4.4 La visualización
Los resultados de un cálculo cientí…co son números que podrían representar,
por ejemplo, la solución de una ecuación diferencial en puntos seleccionados.
Para grandes cálculos, tales resultados pueden consistir en los valores de cuatro
o cinco funciones en un millón o más puntos. Técnicas de visualización en
computación cientí…ca permiten que los resultados de estos cálculos puedan ser
representados grá…camente. Por ejemplo, la salida de un cálculo del ‡ujo de
un ‡uido puede ser una película que describe el ‡ujo como una función del
tiempo en dos o tres dimensiones. Los resultados del cálculo de la distribución
de temperatura en un sólido podría ser una representación de un código de
colores en la que las regiones de altas temperaturas son de color rojo y las
regiones de bajas temperaturas son de color azul, con una gradación de tonos
entre los extremos. O, la grá…ca en tres dimensiones de un modelo que puede
ser girado permitiendo vistas desde cualquier ángulo. Tales representaciones
visuales permitirán una rápida comprensión de las tablas calculadas, aunque
para un análisis más detallado puede ser necesario seleccionar algunos resultados
numéricos para ciertos propósitos, tales como la veri…cación de errores.
14
En esta sección se ha discutido brevemente algunos de los principales com-
ponentes del entorno general de cómputo que corresponden a la computación
cientí…ca. En lo que resta vamos a destacar con ejemplos como usar estas téc-
nicas para seguir alguna aplicación en detalle.
5 Referencias
Para la arquitectura de computadores
J. Hennessy and J. Patterson [1990]. Computer Architecture: A Quantita-
tive Approach. Morgan Kaufman Publishers, Inc., San Mateo, CA.
Para los sistemas operativos,
J. Peterson and J. Silberschatz [1985]. Operating Systems Concepts, 2nd
Edition. Addison-Wesley Publishing Co., Reading, MA.
Para los lenguajes de programación,
T. Pratt [1984]. Programming Languages. Prentice-Hall, Englewood Cli¤s,
R. Sethi [1989]. Programming Languages. Addison-Wesley, Reading, MA.
Para los compiladores,
A. Aho, R. Sethi, and J. Ullman [1988]. Compilers. Addison-Wesley, Read-
ing, MA. y
C. Fischer and R. LeBlanc Jr. [1988]. Crafting a Compiler. Benjamin/Cummings
Publishing Co., Menlo Park, CA.
Para la gestión de datos
R. Elmasri and S. Navathe [1989]. Fundamentals of Database Systems. Ben-
jamin/Cummings Publishing Co., Menlo Park, CA. y
Para la visualización.
R. Friedho¤ and W. Benzon [1989]. Visualization. Henry N. Abrams, Inc.,
New York. y
R. Mendez (ed.) [1990]. Visualization in Supercomputing. Springer Verlag,
New York.
Otra referencia más para computación grá…ca que proporciona gran parte
de los fundamentos para las técnicas de visualización es
W. Newman and R. Sproul [1979]. Principles of Interactive Computer Graph-
Graphics Bnd Edition). McGraw-Hill, New York. Newman y Sproul [1979].
Los sistemas de cálculo simbólico mencionados se tratan en
Symbolics [1987]. Macsyma User’s Guide. Symbolics, Inc., Cambridge, MA.
para MACSYMA
G. Rayna [1987]. Software for Algebraic Computation. Springer-Verlag,
New York. para REDUCE,
B. Char, K. Geddes, G. Gonnet, and S. Watt [1985]. First Leaves: A Tutorial
Introduction to MAPLE, in MAPLE User’s Guide. Watcom Publications Ltd.,
Waterloo, Ontario. para MAPLE, y
S. Wolfram [1988]. A System for Doing Mathematics by Computer. Addison-
Wesley, Redwood City, CA. para el MATHEMATICA.
Los paquetes EISPACK y LINPACK se discuten en
15
B. Garbow, J. Boyle, J. Dongarra, and C. Moler [1977]. Matrix Eigensystem
Routines - EISPACK Guide Extension, volume 51. Springer-Verlag, New York.
Garbow et al. [1977] para EISPACK y
J. Dongarra, J. Bunch, C Moler, and G. Stewart [1979]. LINPACK Users’
Guide. SIAM, Philadelphia, para LINPACK, y
J. Dongarra, E. Anderson, Z. Bai, A. Greenbaum, A. McKenney, J. DuCroz,
S. Hammerling, J. Demmel, C Bischof, and D. Sorensen [1990]. LAPACK: A
Portable Linear Algebra Library for High Performance Computers. Proc. Su-
percomputing ’90, IEEE Computer Society Press, Washington, para.LAPACK.
Estos y muchos otros paquetes de software están disponibles en netlib; véase,
por ejemplo,
J. Dongarra, I. Du¤, D. Sorensen, and H. van der Vorst [1990]. Solving
Linear Systems on Vector and Shared Memory Computers. SIAM, Philadelphia.
Dongarra.
MATLAB puede obtenerse de The Math Works, Inc., South Natrick, MA
01760.
16