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
!-----------------------------------------