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!