Está en la página 1de 16

Modelados y Computación Cientí…ca

Jorge Icaro Condado Jauregui


Universidad Nacional Mayor de San Marcos
December 25, 2016

1 ¿Qué es Computación Cientí…ca?


Hoy en día las computadoras se usan tanto en la industria como en los orga-
nismos del gobierno, para una creciente variedad de tareas, algunas de éstas:
en contabilidad y control de inventario, sistemas de reservas en líneas aéreas,
traducción de lenguas, control de los procesos, etc.
Desde un inicio se usó las computadoras para resolver problemas cientí…cos
y de ingeniería, y obtener soluciones de modelos matemáticos que representan
algún fenómeno físico, estas técnicas usadas son conocidas como Computación
Cientí…ca. El procesamiento de la información, las técnicas prácticas para la
implementación y ejecución así como el uso de las computadoras se denomina
ciencia de la computación.
En la actualidad no hay un área de la ciencia o ingeniería que para el mode-
lado no use las computadoras.

Las trayectorias de los satélites y de las misiones espaciales son calculadas


por computadoras. Ingenieros aeroespaciales también usan las computa-
doras para simular el ‡ujo de aire alrededor de un avión o de una nave
espacial a su paso por la atmósfera, y de paso veri…car la integridad estruc-
tural de éstas. Estos estudios son de importancia crucial para la industria
aeroespacial en el diseño de los aviones seguros y económicos y de las
naves espaciales. Modelando los nuevos diseños en un equipo de cóm-
puto se puede ahorrar muchos millones de dólares en comparación con la
construcción de una serie de prototipos.
Los ingenieros electrónicos utilizan las computadoras para diseñar nuevas
computadoras, especialmente los circuitos informáticos y diseños de VLSI
(very large scale integration).
Los ingenieros civiles estudian las características estructurales de los gran-
des edi…cios, represas y carreteras.
Los meteorólogos utilizan grandes cantidades de tiempo de cómputo para
predecir el tiempo de mañana, así como para hacer predicciones de más
largo alcance, incluido el posible cambio de clima de la tierra.

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.

Los modelos matemáticos de estos problemas y de otros problemas en cien-


cia y en ingeniería son sistemas de ecuaciones diferenciales, ya sea ordinaria o
parcial. Así, en una primera aproximación, la computación cientí…ca como se
practica actualmente es la solución numérica de las ecuaciones diferenciales u-
sando las computadoras. Aun si esto fuera estrictamente cierto, la computación
cientí…ca seguiría siendo una disciplina intensamente emocionante.
Las ecuaciones diferenciales vienen en todas las “formas y tamaños”, e in-
cluso con las supercomputadoras todavía se está lejos de resolver algunos de los
problemas planteados por los cientí…cos e ingenieros.
Pero hay más, el alcance del campo de la computación cientí…ca, está cam-
biando rápidamente. Existen otros modelos matemáticos, cada uno con sus
propios retos, por ejemplo en la investigación de operaciones y la economía, es
necesario resolver problemas de optimización lineal o no lineal de gran tamaño.
La condensación de un gran número de mediciones en estadísticas útil, siempre
ha sido importante y forma parte de la computación cientí…ca, y con las nuevas
herramientas (como los satélites de la tierra) han aumentado nuestra capaci-
dad de obtener mediciones más rápido que nuestra capacidad para asimilar los
datos; se necesitan pues nuevas ideas en la forma de preservar y utilizar toda
esta información en grandes volúmenes.
En las áreas más desarrolladas de la ingeniería, lo que antes eran problemas
difíciles de resolver aun con computadora, hoy se están resolviendo como pro-
blemas de rutina cambiando los parámetros de diseño una y otra vez. Esto ha
dado lugar a un número cada vez mayor de sistemas como:

1. CAD (Computer Aided Design), o diseño asistido por computador. Es el


uso de un amplio rango de herramientas computacionales para ayudar a
ingenieros, arquitectos y a otros profesionales en la creación, modi…cación,
análisis u optimización de un diseño. Los sistemas CAD "…nalizan" su
trabajo una vez que la pieza está diseñada. Podemos dar un paso más
y comprobar por ejemplo, cómo responderá una viga recién diseñada a
determinados esfuerzos, lo que se conoce como:
2. CAE (Computer Aided Engineering), o ingeniería asistida por computa-
dor. Se encarga de evaluar el comportamiento del proyecto diseñado en

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.

Aunque este debate empieza a delimitar el área que se llama computación


cientí…ca, es difícil de…nir con exactitud, los límites y los traslapes con otras
áreas. Nosotros aceptaremos como hipótesis de trabajo de que por de…nición
Computación Cientí…ca es la colección de herramientas, técnicas y teorías nece-
sarias para resolver en un equipo de cómputo los modelos matemáticos surgidos
en los problemas de ciencias e ingeniería.
La mayoría de estas herramientas, técnicas y teorías se desarrollaron ori-
ginalmente en las matemáticas, muchas de ellas tienen su origen mucho antes
del advenimiento de las computadoras electrónicas. Este conjunto de teorías y
técnicas matemáticas se llama análisis numérico (o matemáticas numéricas), y
constituye una parte importante de la computación cientí…ca. El desarrollo de
la computadora electrónica, sin embargo, marcó una nueva era en el enfoque
para resolver los problemas cientí…cos.
Muchos de los métodos numéricos que se habían elaborado con el propósito
de hacer los cálculos manualmente (o con calculadoras) tuvieron que ser re-
visadas y a veces desechadas. Las consideraciones que eran irrelevantes o sin
importancia para el cálculo a mano ahora son de suma importancia para el
uso e…ciente y correcto de un gran sistema de computadoras. Muchas de estas
consideraciones - lenguajes de programación, sistemas operativos, gestión de
grandes cantidades de datos y, la corrección de los programas - fueron incluidos
bajo la nueva disciplina: la informática de la que depende en gran medida, la
computación cientí…ca.
Pero las matemáticas en sí sigue desempeñando un papel importante en la
computación cientí…ca: proporciona el lenguaje de los modelos matemáticos
que se van a resolver y la información sobre la idoneidad de un modelo (¿tiene
solución?, ¿es la única solución?) y le proporciona el fundamento teórico de
los métodos numéricos. La computación cientí…ca se basa en la matemática y
en la informática para desarrollar la mejor manera de utilizar los sistemas de
computación parar resolver problemas de la ciencia y la ingeniería. Esta relación

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

Figura : Computación Cientí…ca y su relación con las Matemáticas y otras areas

2 Formulación del modelo matemático


Estamos consideramos a la computación cientí…ca como la disciplina que re-
suelve mediante la computadora los modelos matemáticos de los problemas de
la ciencia y la ingeniería. Por lo tanto, el primer paso en el proceso de solución
es la formulación de un modelo matemático adecuado del problema que nos
ocupa. Esta es una parte de la disciplina en la que se plantea el problema: los
ingenieros diseñan modelos para los problemas de ingeniería, los biólogos para
los problemas biológicos, etc. En algún momento los matemáticos y cientí…cos
en computación están involucrados en este proceso de modelado, al menos como
consultores.

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

En la …gura se observa las interacciones de las diferentes etapas del proceso


para resolver un problema cientí…co o de ingeniería.
Una vez que el modelo se considera adecuado, luego de la modi…cación y

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á.

3.1 Errores de redondeo


Quizás el factor más importante es que los equipos de computo trabajan con
un número …nito de dígitos o caracteres (su memoria es …nita). Debido a esto
no podemos en general, realizar operaciones aritméticas como lo hacemos en
el sistema de números reales. Es decir, la aritmética realizada por un equipo
se limita a un número …nito (posiblemente muchos) de dígitos, mientras que la
representación numérica de los números reales se requiere de un número in…nito,
por ejemplo, las constantes (área del círculo de radio uno) y e (base del
logaritmo natural) no se pueden introducir exactamente en una computadora.
Incluso si pudiéramos empezar con los números que tienen una representación
numérica exacta en la computadora, los procesos requieren de operaciones ar-
itméticas, estas introducen ciertos errores. Por ejemplo suponiendo una a-
ritmética decimal de cuatro dígitos, el producto de dos números, requieren en
general de ocho para su representación numérica (incluso el cociente de dos
números de cuatro dígitos podrían tener una in…nidad de dígitos), en parti-
cular 0; 8132 0; 6135 = 0; 49889820 estará representada por 0; 4988 o 0; 4989
dependiendo del computador. Por lo tanto nos resignamos, al hecho de que no

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.

3.2 Cancelación catastró…ca


Además de esta posible acumulación de errores en un gran número de ope-
raciones, existe el peligro de cancelación catastró…ca. Supongamos que dos
números a y b son “casi” iguales. Entonces la diferencia c = a b perderá
“muchos” dígitos signi…cativos en la precisión a pesar de que no existe error
de redondeo en la resta, cálculos posteriores con c limitan el resultado …nal
a “pocos” dígitos correctos. Siempre que sea posible, se intenta eliminar la
posibilidad de la cancelación catastró…ca, reorganizando las operaciones. Can-
celación catastró…ca es una forma en que un algoritmo puede ser numéricamente
inestable, aunque en aritmética exacta, puede ser un algoritmo correcto. De
hecho, es posible que los resultados de un cálculo puedan ser completamente

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.

3.3 Estabilidad hacia atrás


En el análisis del error causado por el error de redondeo en la aritmética …nita,
se hace un estudio de una propiedad que la mayoría de los buenos algoritmos
lo poseen y que ha demostrado ser muy potente, es el análisis de error hacia
atrás, (backward stability) .En este enfoque se muestran que los errores de
redondeo tienen el mismo efecto que la causada por los cambios en los datos
del problema original. Cuando este análisis es posible, se puede a…rmar que el
error en la solución por los errores de redondeo no es peor que la causada por
ciertos errores en el modelo original. El estudio de los errores en la solución
es equivalente al estudio de la sensibilidad de la solución a las perturbaciones
en el modelo. Si la solución es muy sensible, el problema se dice que está mal
planteado o mal acondicionado, y las soluciones numéricas tienden a carecer de
sentido

3.4 Error de discretización


Otra forma en que la …nitud de la computadora se mani…esta en la causa de
errores en los cálculos numéricos se debe a la necesidad de sustituir los problemas
“continuos”en problemas “discretos”. Como un ejemplo sencillo, la integral de
una función continua requiere un conocimiento del integrando a lo largo de
todo el intervalo de integración, mientras que una aproximación a la integral
usando un programa de computación solo utiliza los valores del integrando en
un número …nito de puntos. Por lo tanto, incluso si la aritmética posterior
se realizó con exactitud, sin errores de redondeo, aún aparece un error debido
a la aproximación discreta de la integral. Este tipo de error normalmente se
llama error de discretización o error de truncamiento, y afecta a las soluciones
numéricas de ecuaciones diferenciales y otros problemas “continuos”.
Hay un tipo más de error que es parecido a un error de discretización. Mu-
chos métodos numéricos se basan en la idea de un proceso iterativo. En este
proceso, una sucesión de aproximaciones a una solución se genera con la espe-
ranza de que las aproximaciones converjan a la solución y, a pesar de que esta
sucesión converge a un valor (incluso se puede probar que el límite de la suce-
sión existe), sólo un número …nito de tales aproximaciones se pueden generar
en un equipo, y por tanto, necesariamente debe detenerse antes que converja
a su valor límite. El error causado por dicha terminación …nita de un pro-
ceso iterativo “in…nito”se le llama error de convergencia, aunque no existe una
terminología generalmente aceptado aquí.
Descartando problemas triviales que no son de interés en la computación
cientí…ca, podemos resumir la situación con respecto a los errores de cálculo
de la siguiente manera. Cada cálculo esta sujeto a errores de redondeo y cada
vez que el modelo matemático del problema sea una ecuación diferencial u otro
problema “continuo”, también habrá un error de discretización y, en muchos

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.

3.6 Buenos Programas


Incluso si un método es intrínsecamente “bueno”, es muy importante implemen-
tar el código computacional correspondiente del mejor modo posible, especial-
mente si otras personas lo van a utilizar. Algunos de los criterios de un buen
código son los siguientes:

1. Con…abilidad: El código no tiene errores y se puede estar seguro que


calcula lo que supuestamente tiene que calcular.
2. Robustez: Que está estrechamente relacionado con la con…abilidad, el
código tiene un amplio rango de aplicabilidad, así como la capacidad de
detectar datos erróneos, “singulares” u otros problemas que no se espera
poder manejar, y otras situaciones anómalas, y tratar con ellos de una
manera que sea satisfactoria para el usuario.
3. Portabilidad: El código puede ser transferido desde un computador a otro
con un mínimo esfuerzo y sin perder con…abilidad. Por lo general, esto
signi…ca que el código ha sido escrito en un lenguaje de alto nivel como
Fortran y no usa “trucos”que dependen de las características de un equipo
en particular. Las características de la máquina, como la longitud de la
palabra, que deben ser utilizados están claramente delineadas.
4. Capacidad de mantenimiento: Debe ser posible modi…car con el mínimo
esfuerzo el código, ya sea para hacer correcciones o añadir mejoras.

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.

4.2 Sistemas y lenguajes


Para que un hardware sea útil, debe complementarse con el software, incluyendo
además sistemas operativos y compiladores para lenguajes de alto nivel. Aunque
hay muchos sistemas operativos, UNIX y sus variantes se han convertido en
cada vez más en el estándar para la computación cientí…ca y esencialmente
muchos fabricantes de computadores ahora ofrecen una versión de UNIX para
sus máquinas. Esto es cierto para el computadoras de procesador vectorial y
computadoras en paralelo, así como los más convencionales. El uso de un sis-
tema operativo común ayuda a hacer que los programas sean más portátiles. Lo
mismo es cierto de los lenguajes de programación. Desde su creación a media-
dos de la década de 1950, Fortran ha sido el lenguaje de programación principal
para la computación cientí…ca. Continuamente se ha modi…cado y ampliado en
los últimos años y, ahora también existen versiones de Fortran para computa-
doras de procesador vectorial y en paralelo. Otros lenguajes, especialmente los
sistemas de lenguaje “C”, a veces se utilizan para la computación cientí…ca. Sin
embargo, se espera que Fortran siga evolucionando y sea la norma en un futuro
previsible, debido en parte a la gran inversión en programas Fortran existentes.

4.3 Manejo de Datos


Muchos de los problemas en la computación cientí…ca exigen el manejo de
enormes cantidades de datos, tanto de entrada como de salida, así como los
datos que se generan en el transcurso de la computación. El almacenamiento y
la recuperación de estos datos de una manera e…ciente se denominan gestión de
datos. Como un ejemplo de esto en el área de diseño asistido por computador,
una base de datos que contiene toda la información pertinente a una aplicación
de diseño en particular (que puede ser para un avión, un automóvil, o una presa)
puede contener varios millones de caracteres. En un diseño de una aeronave esta
información podría incluir todo lo relevante acerca de la geometría de cada parte
de la aeronave, propiedades de los materiales de cada parte, y así sucesivamente.
Un ingeniero puede utilizar esta base de datos sólo para encontrar todos los ma-
teriales con una determinada propiedad. Por otro lado, la base de datos también
se puede utilizar en hacer diversos análisis de las propiedades estructurales de
la aeronave, lo que requiere la solución de ciertos sistemas de ecuaciones lineales
o no lineales. Programas de gestión de datos de gran tamaño para su uso en

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.

4.5 Cálculo Simbólico


Otro desarrollo que está teniendo un impacto cada vez mayor en la computación
cientí…ca es cálculo simbólico. Sistemas como MACSYMA, REDUCE, MAPLE
y MATHEMATICA permiten el cálculo simbólico de derivadas, integrales y di-
versas expresiones algebraicas. Por ejemplo, en tales sistemas se pueden sumar,
multiplicar y dividir polinomios y expresiones racionales; derivar expresiones
para obtener los mismos resultados que se obtendrían utilizando lápiz y papel,
e integrar las expresiones en su “forma cerrada” obteniendo el resultado de la
integral tal como aparecen en las tablas de integración. Esta capacidad puede
aliviar el trabajo pesado de manipular manualmente extensas expresiones al-
gebraicas, tal vez como un paso previo a un cálculo numérico posterior. En
este caso, la salida del cálculo simbólico debería idealmente ser de un programa
Fortran. Sistemas de cálculo simbólico también pueden resolver ciertos pro-
blemas matemáticos, tales como los sistemas de ecuaciones lineales, sin error de
redondeo. No obstante, su uso a este respecto es limitado ya que el tamaño del
sistema debiera ser pequeño. En todo caso, el cálculo simbólico se sigue desa-
rrollando y se puede esperar que juegue un creciente papel en la computación
cientí…ca.

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

También podría gustarte