jueves, 12 de noviembre de 2009

Olek


Muy interesante la última edición del boletín de la Asociación Internacional de Mecánica Computacional, dedicada con afecto a la memoria del gran Prof. Olgierd Zienkiewicz (un reverendo Hijo de Kutta).

El link: IACM EXPRESSIONS

jueves, 8 de octubre de 2009

El dueño de la pintura


Un sistema de ecuaciones se resuelve por eliminación gaussiana cuando se obtienen sus soluciones mediante la reducción del sistema dado a otro equivalente en el que cada ecuación tiene una incógnita menos que la anterior. Para la reducir los sistemas es habitual acudir a estrategias de pivoteo.

Varias son las formas de pivoteo, el propósito de las mismas es usar como pivote el elemento de mayor magnitud (en valor absoluto) y, una vez colocado en la diagonal principal del sistema, usarlo para eliminar los restantes elementos de la columan que están por debajo de él.

Al trabajar con precisión finita, cada vez que se produce una operación aritmética se comete un error, en este caso de representación (redondeo). Es por eso que la elección del pivote en cada paso resulta importante para tratar que dicho sea el menor posible.

La estrategia más sencilla consiste en escoger el elemento en la misma columna que está debajo de la diagonal y que tiene el máximo valor absoluto. A esta técnica se le denomina Pivoteo Parcial o Pivoteo de Columna Máxima.

El Pivoteo Total o Máximo, consiste en la busqueda en el k-esimo paso de eliminación gaussiana todos los elementoa aij para i = k, k+1, ..., n; j = k, k+1, ..., n a fin de localizar el de mayor magnitud. Los intercambios de filas y columnas se realizan para situar ese elemento en la posición del pivote.

Para los Hijos de Kutta, nadie ha pivoteado mejor que el gran Arvydas Romas Sabonis en aquellos tiempos del Zalguiris Kaunas y la selección soviética. Doscientos veinte centímetros, talento supremo y una biblioteca entera de libros de la Editorial Mir hacían que ningún sistema pudiera con él.

lunes, 18 de mayo de 2009

Felices aquellos que creen sin haber visto...

Es muy común que se les pregunte a los hijos de Kutta para que sirven los métodos numéricos. Para ellos, para los "Santo Tomás" de las aplicaciones numéricas se presentan una serie de software comerciales de uso muy frecuente en la ingeniería que resuelven diversas ecuaciones diferenciales por el método de Runge-Kutta 4.

SIMDINUC
Programa de simulación dinámica de procesos químicos.
http://redalyc.uaemex.mx/redalyc/pdf/707/70790103.pdf

STELLA y I’THINK
Programas utilizados para la gestión de recursos y la planificación estratégica.
http://www.iseesystems.com/community/downloads/ithink/ithinkDemo.aspx
http://www.uantof.cl/facultades/csbasicas/Matematicas/academicos/emartinez/Dinamica/manualstella/manual.html

MIKE
Familia de programas que resuelven diversos problemas de recursos hídricos.
www.dhigroup.com/Software

MADYMO
Programa que simula el comportamiento dinámico de cuerpos rígidos para diseño de automoviles.

La biblioteca del CIMEC

El Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) es un centro de investigación y desarrollo dedicado a la aplicación de los métodos computacionales en ciencias e ingenierías. También se realizan tareas de formación de recursos humanos y asistencia técnica al sector productivo.

En su sitio web presenta el "CIMEC Open Journal Site" (http://www.amcaonline.org.ar/) donde se puede acceder a una importante cantidad de material relacionado con la aplicación de métodos numéricos en la Argentina. Allí se encuentran tres diferentes repositorios:

1) Mecánica Computacional: Proceedings de congresos organizados por la Asociación Argentina de Mecánica Computacional AMCA

2) CIMEC Document Repository: Documents, reports and preprints from CIMEC Staff

3) Cuadernos de Matemática y Mecánica: Preprints on Computational Mechanics and Mathematics


El siguiente es un ejemplo:

Título: Solución de problemas de ingeniería. Software libre: Octave.
Autores: Ricardo Adra, Jorge Nicolau ,Graciela Pedrosa.
Palabras clave: GNU, Octave, Software libre, Métodos Numéricos.
Resumen: GNU Octave es un lenguaje de alto nivel, destinado principalmente a la computación numérica. Es una potente herramienta matemática para la resolución de gran cantidad de problemas, entre otros: cálculo matricial, cálculo integral o resolución de ecuaciones diferenciales. En este trabajo se analizan algunos ejemplos de problemas de ingeniería y su solución empleando Octave.
Publicado en: Mecánica Computacional Vol. XXII, M.B. Rosales, V.H. Cortinez y D.V. Bambill (Editores), Bahía Blanca, Argentina, Noviembre 2003.

Link: www.cimec.org.ar/ojs/index.php/mc/article/view/758/717


martes, 28 de abril de 2009

El fenómeno de Runge

"Es un fenómeno...", no se cansaba de repetir el joven Guillermo Lovell, con su medalla plateada colgando en el pecho, al arribar a su Argentina natal desde la lejana Alemania y comentar las bondades de su último rival. Herbert Runge, el loco lindo de Elberfeld, el pugil local, el ocho veces campeón germano, el hombre del régimen, era quien ostentaba la de oro y la mostraba a los generales de las SS en aquellos Juegos Olímpicos de Berlín. Las tarjetas dieron el match a un superior Runge, a pesar de los esfuerzos del juvenil Lovell, lo que le valió al germánico la presea dorada en la dura final de los pesos pesados.

Buen andar sobre el ring, una derecha implacable, rápido de reflejos, espíritu amateur. Todas características que etiquetaban a Herbert como un fenómeno: 'Runges Phänomen'.

El fenómeno de Runge es un problema que sucede cuando se usa interpolación polinómica con polinomios de alto grado. Fue descubierto mientras se exploraba el comportamiento de los errores al usar interpolación polinómica para aproximar determinadas funciones. La oscilación se puede minimizar usando nodos de Chebyshev en lugar de nodos equidistantes. En este caso se garantiza que el error máximo disminuye al crecer el orden polinómico. El fenómeno demuestra que los polinomios de grado alto no son, en general, aptos para la interpolación.


Las formas que adoptan los polinomios interpolantes de alto grado, recuerdan los movimientos de las cuerdas de los rings de la década del 30' al ser martillados por los rivales de Herbert Runge tras recibir aquellos fulminantes uppercuts de derecha.

sábado, 18 de abril de 2009

Todo un palo

La Asociación Argentina de Mecánica Computacional (AMCA) congrega a ingenieros, físicos, matemáticos y toda persona interesada en:

* Promover la difusión de información científica y tecnológica en el área de Mecánica Computacional.

* Favorecer el intercambio científico y profesional del uso de los métodos numéricos y las técnicas computacionales tanto a nivel de investigación como en trasferencia al sector industrial.

* Estimular la investigación y el aprendizaje de las teorías básicas de la Mecánica Computacional a nivel universitario y de posgrado.

* Congregar instituciones académicas, empresarias y gubernamentales que tengan interés en la investigación científica o la innovación tecnológica en el área, facilitando un foro para la discusión de problemas en los que deben participar las ciencias básicas, tecnológicas y la industria.


Para lograr estos objetivos, la Asociación realiza las siguientes actividades:

* Coordinación de reuniones y encuentros científicos.

* Intercambio de información y de trabajos científicos y tecnológicos entre sus socios.

* Organización de un congreso auspiciado por la Asociación a intervalos regulares de tiempo.

* Edición de un boletín informativo sobre las actividades generales de la AMCA.


La AMCA es filial argentina de la International Association for Computational Mechanics.



Web de la AMCA

lunes, 13 de abril de 2009

Norma mía

Siempre existe una NORMA que a uno lo representa mejor.


(se recomienda acompañar esta lectura dejándose invadir por las hermosas canciones bitonales que vienen siendo ejecutadas por NORMA desde La Plata)

lunes, 30 de marzo de 2009

Cálculo numérico catalán

Eliminado

Dicen que este método ya existía cuando Carl Friedrich Gauss, allá por 1800 presentó este algoritmo. Más precisamente en un histórico libro chino (Jiuzhang suanshu). Oriente versus Occidente. Los laureles se los llevó el mismísimo Carl Friedrich, aún a pesar de Wilhelm Jordan su compañero de fórmula.

Un sistema de ecuaciones se resuelve por eliminación gaussiana cuando se obtienen sus soluciones mediante la reducción del sistema dado a otro equivalente en el que cada ecuación tiene una incógnita menos que la anterior. Pivoteos y sustituciones inversas o directas deambulan por este método. Aqui, un ejemplo de código escrito en noble fortran.

! --------- PROGRAMA ELIMINACIÓN GAUSSIANA -------------------
! gauss.f90
! Resuelve sistemas de ecuaciones lineales de hasta 20x20

program gaussian

! datos.dat
! NÚMERO DE ECUACIONES
! N
! COEFICIENTES DE LA MATRIZ A(I,J)
! a11, a12, ..., a1N
! a21, a22, ..., a2N
! ...........................
! aN1, aN2, ..., aNN
! VECTOR INDEPENDIENTE
! b1, b2, ..., BN

PARAMETER (IN=20)
REAL :: A(IN,IN), B(IN)

OPEN(1,FILE='datos.dat',STATUS='OLD')
READ (1,*)
READ (1,*) N
READ (1,*)
READ (1,*) ((A(I,J),J=1,N),I=1,N)
READ (1,*)
READ (*,*) (B(I),I=1,N)
CLOSE(1)

OPEN(2,FILE='resultados.dat',STATUS='UNKNOWN')
WRITE (2,*) ('**** ELIMINACIÓN GAUSSIANA ****')
WRITE (2,*)
WRITE (2,*) ('COEFICIENTES DE LA MATRIZ ingresados:')
CALL PRINTA(A,IN,N,N,2)
WRITE(2,*)
WRITE(2,*) ('VECTOR INDEPENDIENTE ingresado:')
CALL PRINTV(B,N,2)
WRITE(2,*)

! CONVERTIR A LA FORMA TRIANGULO SUPERIOR
DO K = 1,N-1
IF (ABS(A(K,K)).GT.1.E-6) THEN
DO I = K+1, N
X = A(I,K)/A(K,K)
DO J = K+1, N
A(I,J) = A(I,J) -A(K,J)*X
ENDDO
B(I) = B(I) - B(K)*X
ENDDO
ELSE
WRITE (2,*) 'PIVOT CERO en la línea:'
WRITE (2,*) K
STOP
END IF
ENDDO
WRITE(2,*) 'MATRIZ MODIFICADA'
CALL PRINTA(A,IN,N,N,2)
WRITE(2,*)
WRITE(2,*) 'VECTOR INDEPENDIENTE MODIFICADO'
CALL PRINTV (B,N,2)
WRITE(2,*)

! SUSTITUCION INVERSA
DO I = N,1,-1
SUM = B(I)
IF (I.LT.N) THEN
DO J= I+1,N
SUM = SUM - A(I,J)*B(J)
ENDDO
END IF
B(I) = SUM/A(I,I)
ENDDO

! IMPRIMIR LOS RESULTADOS
write(2,*) ('VECTOR SOLUCIÓN')
CALL PRINTV(B,N,2)

END PROGRAM GAUSSIAN
!------------------------------------------

SUBROUTINE PRINTA(A,IA,M,N,ICH)
! ESCRIBE LA MATRIZ A
REAL A(IA,*)
DO I =1,M
WRITE(ICH,2) (A(I,J),J=1,N)
ENDDO
2 FORMAT(1X,6E12.4)
END SUBROUTINE PRINTA
!-----------------------------------------

SUBROUTINE PRINTV(VEC,N,ICH)
! ESCRIBE EL VECTOR INDEPENDIENTE
REAL VEC(*)
WRITE(ICH,1) (VEC(I),I=1,N)
1 FORMAT(1X,6E12.4)
END SUBROUTINE PRINTV
!-----------------------------------------

viernes, 27 de marzo de 2009

Mate amargo

Se conoce a la yerba PIPORE como la más irracional de todas. Detrás de esa inocente y agradable voz guaraní se esconde, matemáticamente encriptada, la más perversa irracionalidad. De nada sirve el alfabeto, acá la cosa es algebraica.

Pi por e. Es que pi y e son dos números trascendentales. Trascienden. ¿Qué es pi por e? ¿Cómo es pi por e? ¿Cuánto vale pi por e? Ante tantas preguntas, solo el esbozo de respuesta de la última de ellas...


Se debe empezar por saber cuanto valen pi y e. Hoy en día, la gente se pelea por encontrar más decimales a estos números (como ejemplo, ver las aventuras de Shigeru Kondo y Steve Pagliarulo con el número e). Estos son pi y e, en este caso, con cincuenta decimales.

pi ≈ 3,14159265358979323846264338327950288419716939937510...

e ≈ 2.7182818284590452353602874713526624977572470936999...


Pero, ¿cuánto valen pi y e para un ingeniero? ... y PIPORE? Depende...


jueves, 19 de marzo de 2009

El Efecto Mariposa

Hacia 1960, el meteorólogo Edward Lorenz se dedicaba a estudiar el comportamiento de la atmósfera, tratando de encontrar un modelo matemático, un conjunto de ecuaciones, que permitiera predecir a partir de variables sencillas, mediante simulaciones de ordenador, el comportamiento de grandes masas de aire, en definitiva, que permitiera hacer predicciones climatológicas.

Lorenz realizó distintas aproximaciones hasta que consiguió ajustar el modelo a la influencia de tres variables que expresan como cambian a lo largo del tiempo la velocidad y la temperatura del aire. El modelo se concretó en tres ecuaciones matemáticas, bastante simples, conocidas, hoy en día, como modelo de Lorenz.

Pero, Lorenz recibió una gran sorpresa cuando observó que pequeñas diferencias en los datos de partida (algo aparentemente tan simple como utilizar 3 ó 6 decimales) llevaban a grandes diferencias en las predicciones del modelo. De tal forma, cualquier pequeña perturbación, o error, en las condiciones iniciales del sistema puede tener una gran influencia sobre el resultado final, lo que hacía muy difícil hacer predicciones climatológicas a largo plazo. Por ejemplo, los datos empíricos que proporcionan las estaciones meteorológicas tienen errores inevitables, aunque sólo sea porque hay un número limitado de observatorios incapaces de cubrir todos los puntos de nuestro planeta, esto hace que las predicciones se vayan desviando con respecto al comportamiento real del sistema.

Estas observaciones finalmente le llevaron a lo que llegó a convertirse en el efecto mariposa — un término que surgió de un artículo científico que presentó en 1972 titulado: “Predictability: Does the Flap of a Butterfly’s Wings in Brazil Set Off a Tornado in Texas? (Predictibilidad: ¿El aleteo de una mariposa en Brasil genera un tornado en Texas?”


Se denomina, por tanto, efecto mariposa a la amplificación de errores que pueden aparecer en el comportamiento de un sistema complejo. En definitiva, el efecto mariposa es una de las características del comportamiento de un sistema caótico, en el que las variables cambian de forma compleja y errática, haciendo imposible hacer predicciones más allá de un determinado punto, que recibe el nombre de horizonte de predicciones.

Las primeras visiones de Lorenz marcaron el inicio de un nuevo campo que impactó no sólo en las matemáticas sino virtualmente en cada rama de la ciencia – biológica, física y social. En la meteorología, llevó a la conclusión de que puede ser básicamente imposible predecir el clima más allá de dos o tres semanas con un grado razonable de precisión.

Algunos científicos desde entonces han afirmado que el siglo XX será recordado por tres revoluciones científicas: la relatividad, la mecánica cuántica y el caos.

lunes, 16 de marzo de 2009

Crítica literaria


- ¿Qué literatura numérica nos pueden recomendar los hijos de Kutta?

- Y, mirá... Se ha escrito mucho sobre análisis numérico. Podemos recorrer anaqueles y bibliotecas de todo el mundo revisando y disfrutando las muchas y variadas obras que versan sobre el análisis numérico. Pero de toda esa amplia gama te podría nombrar algunos... Por ejemplo tenés Numerical Analysis de Burden & Faires que es muy completo, y que viene con bastantes ejercicios (muchos resueltos), alguna que otra aplicación y varios algoritmos. Otro muy bueno es Numerical Analysis, Mathematics Of Scientific Computing de Kincaid & Cheney, que es más teórico que el anterior y trae menos ejercicios, algoritmos y aplicaciones; pero goza del beneficio de ser un clásico. También está Numerical Methods for Engineers and Scientists de Hoffmann, que es muy del estilo de el de Burden & Faires, con algunos temas de los de complemento más profundizados. En fin, hay mucho para elegir. Por lo menos con estos que te nombro tenés un buen panorama...

miércoles, 11 de marzo de 2009

Una alternativa

GNU Octave es un lenguaje de alto nivel, incialmente pensado para la computación numérica. Octave proporciona una interfaz de línea de comandos para resolver problemas lineales y no lineales de manera numérica, y desarrollar otros experimentos numéricos utilizando para ello un lenguaje compatible con Matlab.

Octave tiene una gran cantidad de herramientas para resolver problemas de álgebra numérica comunes, encontrar las soluciones de ecuaciones no lineales, realizar integrales de funciones ordinarias, manipular polinomios, e integrar ecuaciones diferenciales ordinarias y ecuaciones diferenciales algebraicas. Es fácil de extender y modificar a través de funciones definidas por el usuario escritas en el porpio lenguaje de Octave, o utilizando módulos cargados dinámicamente escritos en otros lenguajes como C, C++, Fortran, etc. Puede ser utilizado en los sistemas operativos Linux, Windows, MacOsX y OS/2.

GNU Octave es un software de distribución libre. Se puede distribuir y/o modificar GNU Octave bajo las condiciones del contrato GNU General Public License (GPL) publicado por la Free Software Foundation. El proyecto fue creado alrededor del año 1988 pero con una finalidad diferente: ser utilizado en un curso de diseño de reactores químicos. Posteriormente en el año 1992, se decide extenderlo y comienza su desarrollo a cargo de John W. Eaton y su gente.

lunes, 9 de marzo de 2009

Un relámpago llamado Justin

La celeridad con la Clarin.com reprodujo la noticia, similar a la desarrollada por el mismisimo Justin, ofrecía status de importante a lo sucedido. En realidad lo era. Ese viernes 12 de mayo de 2006, el atleta estadounidense, Justin Gatlin, batió el record mundial de los 100 metros llanos en la ciudad de Doha, disputando el Gran Premio de Qatar.


El relámpago llamado Justin, según tituló al día siguiente Pagina 12, un joven de 24 años nacido en Brooklyn, ostentaba varios títulos al momento de llegar a la línea de largada qatarí (Campeón Olímpico 2004 y Campeón del Mundo 2005). Dominador de las últimas grandes competiciones, había anunciado su intención de rebajar el tiempo del caribeño Asafa Powell cuanto antes (9,77 segundos), porque se consideraba en forma para conseguirlo. Esa tarde confianza le sobraba y en la conferencia de prensa previa, Gatlin bromeó con atacar el récord. "Si tenés el oro olímpico y mundial, ¿qué te falta?", canchereó.

Lo hizo, clavó 9,766 segundos.


Cinco días después, la Federación Internacional de Atletismo comunicó que el estadounidense Justin Gatlin sólo igualó el récord de Asafa Powell. La controvertida decisión, reveló que la marca de Gatlin efectivamente fue de 9,766 segundos, pero que fueron redondeados a 9,77 segundos según la normativa vigente.

El cuarto de Runge y Kutta

Los métodos Runge-Kutta son una importante familia de métodos iterativos, implícitos y explícitos, que se aplican para aproximar las soluciones de ecuaciones diferenciales ordinarias (EDOs). Estas metodologías, desarrollados alrededor de 1900 por los matematicos alemanes Carl David Tolmé Runge y Martin Wilhelm Kutta, son ampliamente utilizadas en la actualidad. Aquí se presenta el código en Pascal del método Runge-Kutta de cuarto orden, vulgarmente referenciado como “RK4” o “Runge-Kutta 4”.

program RK4;
(* Program en Pascal – Runge-Kutta 4 *)
(* Ecuación (ODE) : dy/dx = x^2 + sin(xy) *)
(* Condición inicial : y(1) = 2 *)

var
number, i : integer;
h, k1, k2, k3, k4, x, y : real;
function f(x,y : real) : real;
begin
f := x*x + sin(x*y)
end;

begin
number := 1;
while number > 0 do

begin
x := 1.0;
y := 2.0;
writeln(' Número de pasos : ');
read(number);
if number >= 1 then

begin
writeln(' Paso : ');
read(h);
writeln(' x y');
writeln(x, y);
for i := 1 to number do

begin
k1 := h*f(x,y);
k2 := h*f(x+0.5*h,y+0.5*k1);
k3 := h*f(x+0.5*h,y+0.5*k2);
k4 := h*f(x+h,y+k3);
x := x + h;
y := y + (k1+2*k2+2*k3+k4)/6;
writeln(x, y);
end;

end;
end;
end.

viernes, 6 de marzo de 2009

Los hijos de Kutta



Quiero contar a todos lo que esta sucediendo,
con Martin Wilhelm Kutta, ay! como está sufriendo,
la culpa es de sus hijos, que mal se están portando
todo el mundo comenta, su forma de calcular…

Usan matrices ralas, ¡los hijos de Kutta!
Son todos inestables, ¡los hijos de Kutta!
Viven mal condicionados, ¡los hijos de Kutta!
No les importa el orden de precisión, ¡a los hijos de Kutta!