Introducción al cálculo variacional en las matemáticas

Esta entrada es la gemela de la entrada Introducción al cálculo variacional en la física (http://scientiapotentiaest.ambages.es/?p=87). En ella David nos decía

Queremos saber qué camino tomará un cuerpo en una cierta situación. Imaginemos que tenemos una cantidad (un funcional, matemáticamente hablando), a la que llamaremos acción (con unidades de energía por segundo), que depende del “camino” que ese cuerpo toma en su movimiento. Esa acción puede ser calculada para cada cualquier camino siempre y cuando tenga una cierta regularidad.  Pues bien, el camino real, el que tomará el cuerpo y que podrá ser predicho, es aquel que hace de la acción un mínimo (más rigurosamente, un valor estacionario).

Así, el enfoque en mecánica clásica es: dado un sistema físico, obtenemos un funcional; a este funcional se le calculan los puntos críticos y esos puntos críticos nos dan las soluciones del problema. Matemáticamente esto es ir del funcional a la ecuación diferencial.

Veamos esto con un ejemplo: Supongamos que tenemos una partícula de masa unidad bajo el influjo de un potencial U(x) (sistema físico).

Entonces el Lagrangiano se define como

L=E_c-E_p

donde E_c=\frac{1}{2}\left(\frac{dx}{dt}\right)^2 es energía cinética, que depende de la velocidad v=\frac{dx}{dt};  y E_p es energía potencial, que depende del potencial U en el lugar donde la particula se encuentra. Entonces se tiene, si la posición de la partícula se denota como x, que el lagrangiano es

L(x)=\frac{1}{2}\left(\frac{dx}{dt}\right)^2-U(x).

Ahora definimos la acción como A[x]=\int_0^t L(x)dt. Esta acción la hemos obtenido de consideraciones físicas como son la definición de energía cinética y potencial.

Una vez tenemos la acción, queremos minimizarla. Para esto hemos de encontrar los puntos críticos. Si fuese una función de una variable normal y corriente derivaríamos e igualaríamos a 0. Derivar es encontrar el cambio de una cantidad cuando se varía otra de manera infinitesimal. Aquí la idea es similar. Lo que hacemos es, dada una perturbación con los extremos fijos (v(t) tal que v(0)=v(t)=0) de nuestra trayectoria x consideramos la curva y(t)= x(t)+sv(t).

Ahora pensamos la acción para esta nueva curva y como una función de s,

A[y](s)=\int_0^t L(y(t))dt,

y obtenemos el cambio en ella cuando variamos ligeramente s; esto es, derivamos en s y hacemos s=0.

\frac{d}{ds}A[y](s)\bigg{|}_{s=0}=\frac{d}{ds}\left(\int_0^t L(y(t))dt\right)\bigg{|}_{s=0}

Calculamos, utilizando la regla de la cadena,

L(y)=\frac{1}{2}\left(\frac{dx}{dt}+s\frac{dv}{dt}\right)^2-U(x+sv),

\frac{d}{ds}U(x+sv)\bigg{|}_{s=0}=U'(x)v, (para el potencial)

\frac{d}{ds}\frac{1}{2}\left(\frac{dx}{dt}+s\frac{dv}{dt}\right)^2\bigg{|}_{s=0}=\frac{dx}{dt}\frac{dv}{dt}, (para la energía cinética).

Sustituyendo obtenemos \int_0^t \frac{dx}{dt}\frac{dv}{dt} dt-\int_0^t U'(x)vdt, y si integramos por partes en la primera integral nos queda

\int_0^t (-\frac{d^2x}{dt^2}-U'(x))vdt.

Esta integral debe ser 0 para que nuestra x sea un punto crítico del funcional, y además debe serlo para toda perturbación v.

Estas consideraciones nos imponen una relación entre las derivadas \frac{d^2x}{dt^2} y U'(x),

\frac{d^2x}{dt^2}+U'(x)=0

que es, nada más y nada menos, la segunda ley de Newton.

Este enfoque va desde el funcional, que se obtiene con consideraciones físicas, a la ecuación diferencial. O de otra manera, se usa una ecuación diferencial para solucionar un problema de minimizar un funcional.

Sin embargo también existe el método inverso. Supongamos que tenemos una ecuación diferencial (generalmente en derivadas parciales) como puede ser

\Delta u= f(u)

con f una función no lineal, por ejemplo un polinomio. Así, el llamado Método Directo del Cálculo de Variaciones consiste en definir un funcional tal que sus puntos críticos vengan dados por la ecuación que era nuestro problema original.

Demostrar la existencia de solución para la ecuación original es lo mismo que conseguir un punto crítico de nuestro funcional. Si además probamos que es único entonces la ecuación tendrá una única solución. Así con este enfoque vamos desde la ecuación al funcional.

Y como seguir abundando en este tema puede ser muy técnico lo dejaremos aquí por el momento.

Las olas: Un matemático en la playa.

Ya va haciendo calor y empieza a apetecer el irse a la piscina o a la playa. Sin duda la playa es uno de los sitios menos entendidos por el mundo científico y más visitados por el resto del mundo. El fenómeno al que me refiero cuando digo que no se comprende completamente, claro está, son las olas. En esta entrada estudiaremos diversos casos de olas entre fluidos ilustrando el texto con diversos videos.

[iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/GEl-Qu7ApGQ” frameborder=”0″ allowfullscreen]

Vamos a empezar hablando de un caso un poco más general que las típicas olas en la superficie del mar. En matemáticas entendemos por interfase entre fluidos a la parte donde estos entran en contacto entre sí. Así una ola es la interfase entre el aire y el agua. Una interfase entre fluidos con distintas propiedades puede exhibir un comportamiento muy complicado, patológico si se quiere, pero que es, pienso yo al menos, visualmente muy bonito. Estoy pensando por ejemplo en singularidades como pueden ser las llamadas singularidades de Kelvin-Helmholtz o Rayleigh-Taylor. Hagamos una parada antes de proseguir con nuestras olas.

Supongamos por un momento que tenemos dos fluidos con densidades distintas, por fijar ideas digamos aceite y agua, de manera que el fluido más denso (el agua) está en el fondo de un recipiente cerrado completamente (un tubo con ambos extremos taponados). El fluido menos denso (el aceite) reposa encima del agua. Supongamos ahora que dicho tubo, y por tanto los fluidos, está en reposo, por ejemplo en una mesa. La pregunta es ¿qué ocurre si, repentinamente, inclinamos dicho recipiente? Veamos unos vídeos con este experimento:

[iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/CL7s8h7mtPE” frameborder=”0″ allowfullscreen] [iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/ggEp4n6Bhps” frameborder=”0″ allowfullscreen] [iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/1XqJJfw63zQ” frameborder=”0″ allowfullscreen]

Lo que vemos en el video es que la interfase “se enrolla” sobre sí misma. Esto es debido a que las velocidades (que son un vector en 3D) tangentes a la interfase tienen signo distinto. Es decir, si lo pensamos en una interfase en 2D (una curva) sería que la velocidad en el fluido que está encima de la interfase “señala hacia la izquierda” mientras que para el fluido que está debajo de la interfase “señala a la derecha”. De ahí esa tendencia a girar y enrollarse.

Supongamos ahora que cambiamos el orden de los fluidos. Ahora tenemos (por ejemplo porque tenemos una barrera entre ambos fluidos) el agua reposando sobre el aceite. ¿Qué ocurre si retiramos rápidamente la barrera entre ambos fluidos? Bueno, pues que el fluido más denso, por la gravedad, caerá hacía abajo, empujando en su camino al fluido menos denso, que subirá hacía arriba. Vale, el caso es que lo que va a ocurrir es sencillo de vaticinar, lo curioso aquí es la manera en que ocurre. Vayamos otro rato a youtube…

[iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/VlAzyVx7N9M” frameborder=”0″ allowfullscreen] [iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/8EkFL-8wIUI” frameborder=”0″ allowfullscreen]

Tras ver estos experimentos y haber pensado un poquito nos damos cuenta de que el que quiera entender bien estos procesos tiene mucho trabajo por delante. Y ahí estamos bregando algunos…

Volvamos a las olas. Hace tan sólo unos días uno de mis jefes (Diego Córdoba) y algunos de mis compañeros (Ángel Castro, Francisco Gancedo y Javier Gómez) y otros colaboradores (el medallista Field Charles Fefferman) hicieron un importante avance. Probaron la existencia de otro tipo de singularidad para el caso de las olas. Bautizaron a esta singularidad como “splash”. Arremanguémonos y veamos un poco las matemáticas que hay debajo de todo esto…

Consideremos una curva en el plano. Esta será nuestra ola inicial. La evolucion de esta ola viene dada por la evolución del fluido bajo ella. Se trata así de un problema de frontera libre, es decir, donde el propio dominio es una incógnita. Así tenemos que, bajo la ola, se verifican las ecuaciones de Euler incompresibles y que además el fluido es irrotacional. Sobre la curva suponemos que tenemos el vacío (esto es un buen modelo porque el agua tiene una densidad mucho mayor a la del aire). Lo que se sabía antes de los trabajos de Diego y compañía eran la existencia local de solución, es decir, que una ola “suave” sigue siendo una ola “suave” al menos un corto tiempo. Esta existencia local es cierta tanto en el caso donde se supone que la profundidad del mar es infinita como en el caso con un lecho marino predeterminado (son resultados de S. Wu y D. Lannes, respectivamente). También se sabe que si las olas “son muy planitas” la existencia es global, es decir, la ola existe para cualquier tiempo (resultados obtenidos independientemente por S. Wu y P. Germain, N. Masmoudi y J. Shatah).

[iframe: width=”400″ height=”320″ src=”http://www.youtube.com/embed/SdPI6yrjJoM” frameborder=”0″ allowfullscreen]

Los resultados con bandera española en este tema comienzan con un artículo (de A. Castro, D. Córdoba, C. Fefferman, F. Gancedo y M. López) donde se prueba que una ola que empieza siendo un grafo, es decir, se puede escribir como (x,f(x)), deja en un tiempo finito T de ser un grafo. De otra manera, la ola rompe. Matemáticamente esto es que la derivada espacial de la ola se hace infinita en algún punto. El resultado de hace unos días que he mencionado más arriba abunda más en esta línea. Lo que A. Castro, D. Córdoba, C. Fefferman, F. Gancedo y J. Gómez prueban es que existen olas que empiezan siendo curvas suaves y que en un tiempo finito se tocan. Es decir, se ha perdido la propiedad de ser una curva sin autointersecciones. Así es plausible el escenario de comenzar con un grafo, evolucionar hasta perder la propiedad de ser un grafo, es decir, la ola rompe, y, al continuar pasando el tiempo, la curva se acabe autointersecando. Esto es justamente lo que hemos visto en el primer video de esta entrada. Así que podemos concluir dos cosas: una es que algo tan cotidiando como una ola puede ser matemáticamente un problema muy difícil. La segunda cosa que podemos aprender es que nuestro modelo para la dinámica de fluidos funciona en el sentido de que recupera comportamientos reales observados en la naturaleza.

Antes de acabar quiero agradecer a mi compañero Javier Gómez que nos haya dejado el video de sus simulaciones.

—-Esta es nuestra contribución a la edición 2.5 del Carnaval de Matemáticas (http://carnavaldematematicas.bligoo.es/), que está siendo albergado por el blog Juegos Topológicos (http://topologia.wordpress.com/d).

Caminos aleatorios e imágenes

Esta es nuestra entrada para el Carnaval de Matemáticas 2.2 (alojado esta vez en Gaussianos).

Muchas veces se ha escrito sobre la relación entre los caminos aleatorios y la ecuación del calor, y quizá próximamente tratemos nosotros ese tema. Sin embargo hoy vamos a ver una aplicación poco conocida de esa relación. En esta entrada vamos a tratar brevemente una manera de emplear las matemáticas, y mas concretamente los caminos aleatorios o las trayectorias brownianas, para que un ordenador sepa qué imagen está ‘viendo’. Ahora que han puesto unos radares de tramo (que funcionan memorizando las matrículas de los coches y midiendo tiempos para calcular la velocidad media del tramo donde está el radar) en las carreteras españolas este problema tiene una clara aplicación práctica.

Desde hace unos años el tratamiento de imágenes usando ecuaciones en derivadas parciales es un área de investigación matemática floreciente. Normalmente tratan el problema de detectar los contornos de una imagen o de suavizarlos (de manera que veamos mejor la imagen). Nuestro problema es ligeramente distinto. Nosotros, dada una silueta (es decir un contorno cerrado y suave que encierra un área negra mientras que lo de fuera es blanco), tenemos que enseñar al ordenador a sacar propiedades de los contornos de manera que aprenda a distinguir entre las distintas siluetas.

La manera usual de extraer propiedades de una silueta es ‘medir’ y ‘clasificar’ los puntos del interior del contorno en función de su posición relativa a la curva que delimita la silueta (a partir de ahora la denotaremos S, mientras que el contorno será \partial S). Esto puede hacerse por ejemplo con la distancia mínima. Es decir, a cada punto interior se le asigna un valor que viene dado por la distancia mínima a \partial S. Se forma así lo que se llama una segmentación (se divide la silueta en partes) que no es muy regular (he apostado con David a que vosotros, los lectores, podéis encontrar un ejemplo muy rápido…). Para utilizar esta manera de relacionar puntos del interior con la frontera lo que se hace es resolver la ecuación eikonal con condiciones de borde Dirichlet sobre la silueta: es decir se resuelve |\nabla u|^2=1\;\;x\in S,\; u(x)=0\;\; x\in \partial S. Esta manera tiene ciertas desventajas, algunas matemáticamente obvias. Por ejemplo podemos convencernos rápidamente de que la ecuación anterior no tiene una única solución. En efecto, consideremos el problema en una dimensión: tenemos así a ecuación diferencial ordinaria |u'(x)|=1 en un intervalo acotado. Podemos construir infinitas soluciones, basta con ir construyendo triángulos con lados de pendiente 1 o -1. Podemos construirlos más grandes, más pequeños, unos pocos o muchos… Cada una de estas construcciones será una solución ‘débil’ (otro día hablaremos más de la soluciones débiles, hoy lo dejo caer sólo :P).

Así que si descartamos la aproximación anterior tenemos que proponer una nueva… para que no nos digan que hacemos críticas destructivas. Así que lo que hacemos (ver la referencia más abajo) es considerar un camino aleatorio, y más concretamente consideramos el tiempo medio, que denotamos por t que tarda una partícula que siga dicho camino aleatorio en golpear \partial S si inicialmente estaba en un punto x\in S. Cuando a cada x le asignamos este t tenemos una segmentación. ¿Qué ecuación diferencial cumple? En (1) la motivan razonando de la siguiente manera: sea t(x,y) el tiempo medio que emplean estas partículas en golpear el contorno del dominio saliendo desde el punto (x,y) (interno de la silueta S). Entonces si (x,y)\in \partial S se tiene que t(x,y)=0, si no, por ser las probabilidades uniformes se tiene que se puede calcular conociendo los valores de los puntos vecinos. Efectivamente, si estamos en un punto (x,y) y conocemos el valor de t en los puntos inmediatamente vecinos lo que podemos hacer es ‘gastar un movimiento’ en movernos a un punto vecino (siguiendo el camino aleatorio uniforme, lo que nos da una probabilidad 1/4 de elegir un determinado punto adyacente) y sumarle el tiempo medio que se emplea desde este nuevo punto. Por lo tanto se tiene que el valor es
t(x,y)=1+\frac{1}{4}\left(t(x+dx,y)+t(x-dx,y)+t(x,y+dx)+t(x,y-dx)\right).

Entonces observamos que la discretización del Laplaciano es
\Delta t(x,y)\approx\frac{t(x+dx,y)+t(x-dx,y)+t(x,y+dx)+t(x,y-dx)-4t(x,y)}{dx^2}, y por lo tanto la ecuación anterior es una versión discretizada de -\Delta t=\frac{4}{dx^2}.

Una manera rigurosa de obtener la misma conclusión es considerar la ecuación
\frac{1}{2}\Delta u=-1, con datos de borde Dirichlet homogéneos. Sea ahora \tau_{(x,y)}=\inf\{s:X_s(x,y)\in\partial S\}. Entonces se tiene
u(x,y)=E[\tau_{(x,y)}].

La idea de la demostración es aplicar la fórmula de It\^ o (ver (2) o (3)) al proceso $u(X_s)$, donde $X_s$ es un movimiento browniano, obteniendo la fórmula siguiente tras tomar esperanzas

E[u(X_{\tau_{(x,y)}})]-E[u(x,y)]=E\bigg{[}\int_0^{\tau_{(x,y)}}\Delta u(X_s)ds\bigg{]}.

Ahora usamos las condiciones de borde y la ecuación para obtener
0-u(x,y)=-E\bigg{[}\int_0^{\tau_{(x,y)}}1ds\bigg{]}=-E[\tau_{(x,y)}], concluyendo la demostración.

Una vez que tenemos t solución de la ecuación de Poisson anterior lo que hacemos es definir nuevas funciones \Phi(x)=u(x)+|\nabla u(x)|^2 y y \Psi(x)=-\nabla\cdot\bigg{(}\frac{\nabla u}{|\nabla u|}\bigg{)} (entre otras). La función Phi tiene ciertas propiedades que la hacen interesantes, pero para el tratamiento de imágenes lo más importante es que los valores altos de \Phi indican concavidades (allí el gradiente es grande) y que podemos utilizar el método del umbral para dividir nuestra forma en partes sin perder información. La función Psi (cuyo operador es el 1-Laplaciano) tiene la propiedad de que ciertos valores se alcanzan en zonas curvadas. Por lo tanto sirve para encontrar esquinas en nuestra forma. Los valores negativos de \Psi indican concavidades. Cuanto más negativo más ‘picuda’ es la concavidad. Al reves también funciona, los valores altos indican convexidades. Así extraemos información de la imagen y el ordenador puede discernir entre ellas.

Para el lector familiarizado con Matlab dejamos un código. Con estas funciones se puede experimentar un poquito lo que hemos estado diciendo.

function [img,img2,u,t,cnt]=imagessor(tol,itmax,image)
%this program use the sor method for solve the poisson equation in a silhouette
%tol is the tolerance
%itmax is the maximum number of iterations
%image is an png image.
%Rafael Granero Belinchon

tic
img=imread(image);
figure;imagesc(img);
input(‘Press any key’)
img=double(img);
[H,W]=size(img);
w= 2 / ( 1 + sin(pi/(H+1)) );%our overrelaxation parameter
for i=1:H
for j=1:W
img2(i,j)=abs(img(i,j)-255); %change white for black and viceversa
end
end
img2;
figure; imagesc(img2);
input(‘Press any key’)
clear i,j;
%now we start with the algorithm. Like maybe it will be difficult put the geometry of the silhouette
%we use the easy bounday conditions to treat all the image, but we only solve the poisson inside the silhouette.
%This maybe is not efficiently, but is easier.
u=img2;
v=u;
err=1;
cnt=0;
while((err>tol)&(cnt<=itmax))
for i=2:H-1
for j=2:W-1
if (img2(i,j)==0)

else
v(i,j)=u(i,j)+w*(v(i-1,j) + u(i+1,j) + v(i,j-1) + u(i,j+1) +1 – 4*u(i,j))/4;
E(i,j)=v(i,j)-u(i,j);
end
end
end
err=norm(E,inf);
cnt=cnt+1;
u=v;
end
u=flipud(u);
figure;imagesc(u);
mesh(u)
t=toc;

function [Phi,t]=phi(u,NGu)
%This program calculate the function phi=u+NGu^2
%NGu is the norm of the gradient of u
%Rafael Granero Belinchon

tic
[H,W]=size(NGu);
for i=1:H
for j=1:W
Phi(i,j)=u(i,j)+NGu(i,j)^2;
end
end
t=toc;

function [Psi,t]=psiimages(u,Gux,Guy,NGu)
%This program calculate the function psi=-div(gradient(u)/norm(gradient(u))
%NGu is the norm of the gradient of u
%Gux is the first component of the gradient,
%Guy is the second one
%Rafael Granero Belinchon

tic
[H,W]=size(NGu);
for i=2:H
for j=2:W
Psix(i,j)=((Gux(i,j)-Gux(i-1,j))*NGu(i,j)-Gux(i,j)*(NGu(i,j)-NGu(i-1,j)))/NGu(i,j)^2;
Psiy(i,j)=((Guy(i,j)-Guy(i,j-1))*NGu(i,j)-Guy(i,j)*(NGu(i,j)-NGu(i,j-1)))/NGu(i,j)^2;
Psi(i,j)=-Psix(i,j)-Psiy(i,j);
end
end
t=toc;

function [Gux,Guy,NGu,t]=gradient(u)
%This program calculate the gradient and its norm
%Gux is the first component of the gradient,
%Guy is the second one
%NGu is the norm of the gradient
%Rafael Granero Belinchon

tic
[H,W]=size(u);
for i=2:H
for j=2:W
Gux(i,j)=u(i,j)-u(i-1,j);
Guy(i,j)=u(i,j)-u(i,j-1);
NGu(i,j)=(Gux(i,j)^2+Guy(i,j)^2)^0.5;
end
end
t=toc;

(1) L.Gorelick, M.Galun, E.Sharon, R.Basri, A.Brandt, ‘Shape Representation and Classification Using the Poisson Equation’, IEEE transaction on pattern analysis and machine intelligence, 28 (2006), no.12, 1991-2004.

(2) H.Kunita, Stochastic differential equation and stochastic flows of diffeomorphism, Lecture Notes in Math. vol 1097, Springer, 1984.

(3) H.Kunita, Stochastic flows and stochastic differential equations, Cambridge studies in advanced mathematics, 1997.

¿Podemos ir hacia atrás (matemáticamente) en el tiempo?

Me comentó David que sería interesante que explicase un poquito de lo que significa la reversibilidad temporal desde el punto de vista de las ecuaciones en derivadas parciales (EDPs de ahora en adelante). Es decir, sin mencionar nada de entropías. Este es un tema muy interesante e importante aunque a primera vista parezca una tontería. Lo hemos puesto como una serie de dos entradas. La primera (esta que estás leyendo) presentará las EDPs más fáciles y estudiará sus propiedades de cara a la reversibilidad temporal. En la segunda veremos la derivación de unos modelos más complicados y trataremos de entender dónde aparece la irreversibilidad temporal. Lo cierto es que en cierto modo es llamativo, pues las leyes de Newton son reversibles en tiempo y muchas (casi todas) de las ecuaciones de las que hablaremos surgen de ellas.

Viendo qué ocurre:
Para entender qué quiere decir y qué implica la reversibilidad (o irreversibilidad) temporal hemos de comprender primero los ejemplos más básicos de EDPs. Como dato para los técnicos supondré que todos los problemas están puestos para (t,x)\in [0,T]\times\mathbb{R}. Inmerso en el texto hay imágenes .jpg, imágenes animadas .gif (pinchad en ellas para que empiecen a moverse) y código Matlab (¡usadlo si podéis!).

La ecuación del transporte:

Comenzaremos con la ecuación del transporte unidimensional con coeficientes constantes. Esta es la EDP más sencilla que podemos poner.

\partial_t u + c \partial_x u=0, u(0,x)=f(x).

Supondremos que f es una función derivable con derivada continua una vez. La solución de esta ecuación es u(t,x)=f(x-ct) (¡comprobadlo!). Esta ecuación se llama ‘del transporte’ porque lo que hace es eso ‘mueve’ nuestra distribución inicial f. Si queremos cambiar el sentido del tiempo hemos de hacer el cambio t por -t. Entonces la nueva ecuación es

-\partial_t u + c \partial_x u=0, u(0,x)=f(x).

Observamos que el cambiar el tiempo de sentido es equivalente a cambiar el signo de c. Si utilizamos el código que propongo con varios valores de c observamos que este parámetro es una velocidad. Por lo tanto, parece natural que cambiar el sentido del tiempo cambie el sentido del movimiento. Es decir, que si para c>0 íbamos a la derecha, para tiempos negativos (o equivalentemente -c) tenemos que ir a la izquierda. Concluímos así que la ecuación del transporte es reversible en tiempo y que la reversibilidad es muy natural si partimos del proceso físico que se modela con esta ecuación.


Otra consecuencia, ésta mucho más sutil, de la reversibilidad temporal es que nuestra solución NUNCA va a ser mejor que nuestro dato inicial f. Esto es obvio en este caso porque tenemos una solución explícita, pero es cierto en general. Si u tuviese más derivadas que f entonces dando la vuelta al tiempo tendríamos una contradicción.

function [u,x,t]=transporte(dx,dt,f,c)
%%
%Funcion que me aproxima la solucion exacta (conocida) de la
%ecuacion del transporte u_t+cu_x=0 con dato inicial
% u(0,x)=f(x), paso espacial dx y paso temporal dt.
%f sera una funcion
% Rafael Granero Belinchon
%%

%Definicion de parametros:
T=10; %El tiempo final
t=0:dt:T; %el vector de tiempos
x=-pi:dx:pi; %el vector de espacio donde queremos
%nuestra aproximacion. No necesitamos condiciones de borde ¿por que?
u=zeros(length(x),length(t));
F=feval(f,x);

%Calculo de la solucion:
%La solucion del problema anterior es u(x,t)=f(x-ct)
u(:,1)=F;
for j=2:length(t)
u(:,j)=feval(f,x-c*t(j));
plot(x,u(:,j-1));%Representacion de los resultados
drawnow
end

function f=prueba(x)
f=sin(x);


La ecuación de ondas:

La siguiente ecuación es el paradigma de ecuación hiperbólica. Me refiero a la ecuación de ondas. Viendo el nombre está claro qué proceso físico quiere describir ¿no?.

Esta ecuación se escribe

\partial_t ^2 u= c^2\partial_x^2 u, u(0,x)=f(x), \partial _t(0,x)=g(x).

Visualmente parece mucho más complicada que la ecuación del transporte… sin embargo en realidad es igual (al menos en un cierto sentido). Vamos a escribirla como un sistema. Para ello definimos el sistema

\partial_t u=c\partial_x v, \partial_t v=c\partial_x u.

Si ahora derivamos en tiempo la ecuación para \partial_t u y utilizamos la segunda ecuación obtenemos

\partial_t^2 u=c\partial_x \partial_tv=c^2\partial_x ^2 u.

Es decir, que la ecuación de ondas no es más que dos transportes acoplados. Sin embargo todavía podemos hacerlo mejor. Podemos darnos cuenta de que el operador diferencial se puede escribir como

\partial_t^2-c^2\partial_x^2=(\partial_t + c\partial_x)(\partial_t-c\partial x),

y por lo tanto si tenemos u=u_1+u_2 con

\partial_t u_1 + c\partial_x u_1=0; \partial_t u_2 - c\partial_x u_2=0

tenemos una solución de la ecuación original. Concluímos que, como la ecuación del transporte era reversible, la ecuación de ondas, que se puede escribir como un par de ecuaciones del transporte debe ser reversible también.

La ecuación del calor:

Esta ecuación es parabólica. Se escribe

\partial_t u= \partial_x^2 u, u(0,x)=f(x).

Visualmente parece estar a medio camino entre la ecuación del transporte y la ecuación de ondas, sin embargo su comportamiento en radicalmente distinto. Para convencernos de ello podemos ‘jugar’ un poco con el código Matlab que adjunto. Los datos iniciales por defecto son los mismos, pero os animo a cambiarlos.

function [u,x,t,mx]=heatff(N,dt,K)
%%
%Funcion que me aproxima la solucion de la
%ecuacion del calor con dato inicial seno
%con condiciones periodicas (para usar FFT)
%N es el numero de nodos espaciales que se quieren
%usar. dt es el paso temporal que se quiere.
%K es la constante de difusion.
%Devuelve el espacio, el tiempo, la aproximacion de
%la solucion y el maximo de dicha solucion en cada tiempo
%Rafael Granero Belinchon
%%
T=5;%Tiempo final
dx=2*pi/(N-1);
x=-pi:dx:pi;%Espacio
t=0:dt:T;%Tiempo
uo=sin(x);%dato inicial
for k=1:N/2 %Operador laplaciano en espacio de fourier
L(k)=(k-1)*(k-1);
L(k+N/2)=(N/2-k+1)*(N/2-k+1);
end
L=K*L;
u(:,1)=uo’;
mx(1)=max(uo);
for l=1:length(t)
u(:,l+1)=ifft(exp(-L*dt*l).*fft(uo))’;%solucion
mx(l+1)=max(u(:,l+1));%Evolucion del maximo
plot(x,u(:,l));axis([-pi,pi,-1,1]);%Representacion de los resultados
drawnow
end
end

Para estudiar esta ecuación vamos a utilizar la transformada de Fourier. Para la transformada de Fourier de u(x) usaremos la notación \hat{u}(k). Así si transformamos la ecuación en espacio obtenemos las ecuaciones diferenciales ordinarias (EDOs a partir de ahora) indexadas en la longitud de onda k siguientes

\frac{d}{dt}\hat{u}(t,k)=-k^2\hat{u}(t,k), \hat{u}(0,k)=\hat{f}(k).

Esta ecuación la podemos resolver explícitamente

\hat{u}(t,k)=e^{-k^2t}\hat{f}(k).

Observemos ahora qué quiere decir el cambio del sentido del tiempo. De nuevo hagamos el cambio t por -t. La ecuación nos queda

\partial_t u= -\partial_x^2 u, u(0,x)=f(x).

No se ve nada claro, sin embargo, si buscamos los efectos del cambio en la solución explícita tenemos

\hat{u}(t,k)=e^{k^2t}\hat{f}(k),

de manera que cuando invirtamos la transformada de Fourier estamos calculando una convolución con una función que no está acotada, ni tiene ninguna potencia integrable… Vamos, que nuestra solución (que existe explícitamente) no está en ningún espacio razonable ni con propiedades físicas razonables. Por ejemplo, si u es la temperatura, entonces su integral (que es el calor) debe ser finita. Pues si damos la vuelta al tiempo obtenemos calor infinito para cualquier tiempo. Concluímos que la ecuación del calor NO es reversible en tiempo.

Una propiedad que a veces se da en las ecuaciones irreversibles y que es bien interesante es el ‘efecto regularizante’. Es decir, tu dato inicial f es continuo (por ejemplo), pero tu solución u es infinitamente derivable para todo tiempo (positivo). Como ya hemos mencionado antes, este comportamiento difiere del de las ecuaciones hiperbólicas usuales. La prueba de esto se puede hacer sin más que multiplicar por u e integrar por partes en espacio (¡comprobadlo!). Después basta observar que la ecuación es invariante por derivación tanto en tiempo como en espacio (¡Concluid el argumento!).

Vistos estos 3 ejemplos parece que hay una relación entre la ‘simetría’ del problema y su reversibilidad temporal. Quiero decir que, al menos de momento, las ecuaciones que tienen el mismo número de derivadas temporales que espaciales han resultado ser reversibles, mientras que las que no las tienen son irreversibles.

Otra cosa que se nos puede ocurrir es que las ecuaciones reversibles sean las que ‘no tiendan a nada’. Así vemos que la ecuación del calor tiende a ser idénticamente cero (necesita tiempo infinto para llegar a serlo) mientras que la ecuación del transporte sólo se movía por el espacio.

Veamos otro ejemplo:

La ecuación de Schrödinger:

Esta ecuación, clave en mecánica cuántica, se escribe

\partial _t u= i\partial_x^2 u, u(0,x)=f(x).

Si repetimos el análisis que hicimos para la ecuación del calor obtenemos que la solución es

\hat{u}(t,k)=e^{-ik^2t}\hat{f}(k),

que tiene un comportamiento oscilatorio. Por lo tanto, pese a tener una derivada en tiempo y dos en espacio se parece más a una ecuación de ondas que a una ecuación del calor. Observamos que el hecho de que aparezca la unidad imaginaria hace que u no sea real, sino compleja. Por lo tanto tiene una función conjugada. Si ahora cambiamos el sentido del tiempo observamos que para la función conjugada \bar{u} la ecuación es la misma. Por lo tanto si u es nuestra solución con el tiempo hacia delante, \bar{u} es una solución con el tiempo hacia atrás. Por lo tanto la ecuación de Schrödinger es reversible. Este ejemplo desmonta la hipótesis de que als reversibles debían tener el mismo número de derivadas en espacio y en tiempo.

function [u,x,t,L2,mx]=schrodinger(N,dt)
%%
%Funcion que me aproxima la solucion de la
%ecuacion de schrodinger con dato inicial seno
%con condiciones periodicas (para usar FFT)
%N es el numero de nodos espaciales que se quieren
%usar. dt es el paso temporal que se quiere.
%Devuelve el espacio, el tiempo, la aproximacion de
%la solucion, la norma L^2 de dicha solucion en cada tiempo
%y el maximo de la solucion en todo tiempo.
%Rafael Granero Belinchon
%%
T=5;%Tiempo final
dx=2*pi/(N-1);
x=-pi:dx:pi;%Espacio
t=0:dt:T;%Tiempo
uo=sin(x);%dato inicial
for k=1:N/2 %Operador laplaciano en espacio de fourier
L(k)=(k-1)*(k-1);
L(k+N/2)=(N/2-k+1)*(N/2-k+1);
end
L=i*L;
u(:,1)=uo’;
L2(1)=norm(uo)*dx;
mx(1)=max(abs (uo));
for l=1:length(t)
u(:,l+1)=ifft(exp(-L*dt*l).*fft(uo))’;%solucion
L2(l+1)=norm(u(:,l+1))*dx;%Evolucion de la norma L^2
mx(l+1)=max(abs(u(:,l+1)));%Evolución del máximo
plot(x,real(u(:,l)));axis([-pi,pi,-1,1]);%Representacion de los resultados
drawnow
end
end

Como dato anécdotico de esta ecuación hacemos notar que no puede reflejar efectos relativistas (¿por qué?).

En la próxima entrada, enlazando con esta, trataré la derivación desde la mecánica hamiltoniana de los modelos que se utilizan en mecánica de fluidos y trataré de explicar dónde aparece la irreversibilidad en el proceso. Sin embargo, esto es algo que no está ‘completamente entendido’ todavía.