Resolviendo la ecuación de ondas…

Tradicionalmente los matemáticos que trabajamos en el área de ecuaciones en derivadas parciales estudiamos problemas que vienen de procesos físicos. Es el caso de la ecuación del calor, la ecuación de Poisson o la ecuación de ondas. En esta entrada vamos a exponer dos métodos para resolver la ecuación de ondas. Estos métodos al tener un planteamiento distinto dan una información distinta. Veremos así diferencias entre pensar en las ecuaciones sólo o pensar en el fenómeno que modelizan. La ecuacion de ondas es
\displaystyle\partial_t\partial_t u=\partial_x\partial_x u,
junto a dos valores iniciales (tiene dos derivadas en tiempo) y las condiciones de contorno, que aquí tomamos dirichlet homogéneas. Esta ecuación refleja la separación del equilibrio de la cuerda en tiempo t y en el punto x.
Jean Le Rond D’Alembert demostró que si consideramos toda la recta (es decir, sin contornos) entonces podemos escribir la solución como una superposición de ondas, una que viaja hacia la derecha y otra que viaja hacia la izquierda. Estas ondas se escriben en función de los valores iniciales. Podemos hacer lo mismo en dominios acotados o semi acotados, pero es más lío.
Esta aproximación es puramente teórica, muchas ecuaciones admiten solución en forma de onda viajera (por ejemplo la de Fisher-Kolmogorov, \partial_t u=\partial_x\partial_x u +u(1-u) ). En este caso podemos esperarlo si observamos que podemos ‘factorizar’ el operador como dos operadores de transporte   Continue reading

De cuerdas y tambores, o cómo la física aparece en un problema de matemáticas

Cualquier estudiante de física tiene claro o al menos intuye cómo aparecen las matemáticas al estudiar problemas de física. Hoy vamos a hablar de cómo aparece la física en un teorema abstracto de matemáticas. Continue reading

A Francisco Gancedo le conceden el premio “Real Maestranza de Caballería de Sevilla”

¿Cómo empezar bien el año? Pues recibiendo un premio. Esa ha sido la manera de comenzar el 2012 de Francisco Gancedo ya que la Real Academia Sevillana de Ciencias le ha concedido el premio “Real Maestranza de Caballería de Sevilla” por sus investigaciones en el estudio de problemas de frontera libre asociados a interfases entre fluidos incompresibles. O de otra manera: olas en diversas situaciones (puede leerse una entrada sobre el tema aquí).

¡Felicidades Paco!

Usando las Matemáticas en biología

Empezamos el año participando en la IX edición del Carnaval de Biología organizado por La Ciencia de la Vida. Corrientemente las personas que se dedican a la docencia tienen que oir la pregunta ¿pero esto para qué vale?. Esas preguntas normalmente se refieren a las matemáticas o la física. En esta nueva entrada en nuestro blog vamos a presentar brevemente una posible aplicación de las matemáticas, en este caso a la biología. Ni es la aplicación más útil ni la más interesante, pero es sencilla.

Diego Córdoba es el nuevo Premio “Miguel Catalán”

El otro día, el Martes pasado concretamente, se anunciaron los Premios “Miguel Catalán”. Estos premios los da la Comunidad de Madrid al investigador más sobresaliente de todas las ciencias y tenemos el gusto de anunciar que el Premio en la categoría Jóven se lo ha llevado Diego Córdoba Gazolaz por sus trabajos en Mecánica de Fluidos. Algunos de los resultados en los que ha participado ya han sido anunciados aquí.

Nuestra más sincera enhorabuena desde aquí.

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

Cuántica e incertidumbre (Parte I)

Hoy vamos a hablar, procurando no ser muy rigurosos (aparecen algunas fórmulas pero se pueden saltar), de por qué la mecánica cuántica es necesaria y del principio de incertidumbre de Heisenberg. La entrada la hemos escrito de manera conjunta Rafa y yo mismo.
Werner Heisenberg

Werner Heisenberg, uno de los padres de la Mecánica Cuántica

Principios de incertidumbre hay muchos, básicamente no es mas que una desigualdad de cierto tipo, donde un término controla a otro. En el caso concreto que nos atañe afirma que es imposible conocer con precisión la posición y la velocidad de una partícula cuántica (para fijar ideas un electrón). Los físicos (experimentales al menos) razonan diciendo que eso es porque para detectar un electrón hay que golpearlo con un fotón y entonces cambias su velocidad.
Esto nos deja con la duda: ¿habrá algún método que permita conocer las dos cosas?
La respuesta es que no. Y el motivo, enraizado en las matemáticas, tiene que ver con la transformada de Fourier. El ‘teorema’ aquí es que si tienes una función “grande” su transformada de Fourier es “pequeña” y viceversa (se puede intuir usando la desigualdad de Haussdorf-Young por ejemplo.). ¿Cómo afecta esto a nuestro electrón?. Los impacientes estarán pensando que se me está yendo la olla.
Pero comencemos aclarando por qué todas estas cosas tan raras de la cuántica son necesarias: supongamos que tenemos un átomo de hidrógeno (un electrón y un protón), y que tanto nuestro electrón como el núcleo del átomo se comportan como partículas clásicas. Entonces, al tener el núcleo carga eléctrica positiva y nuestro electrón carga eléctrica negativa deberían atraerse por la fuerza coulombiana entre ellos. Cuando un cuerpo con carga se acelera emite radiación electromagnética (véase la fórmula de Larmor [aquí inglés]) perdiendo así energía.
Trayectoria en espacio fásico

En una dimensión, la posición del electrón, x, oscilaría y caería hacia el origen de coordenadas. Su velocidad, p, también oscilaría y lo llevaría hacia el centro, radiando energía en el proceso.

Según este modelo el electrón se vería atraído irremisiblemente hacia el núcleo y acabaría chocando con éste. Pero esto implicaría ¡que no habría electrones!. En jerga científica diríamos que la materia no sería estable. Puesto que nosotros somos materia y estamos aquí las hipótesis de nuestro modelo no pueden ser correctas.
En otra entrada explicaremos la descripción de los estados en mecánica clásica y cuántica, pero permitidnos ahora que hagamos algunos supuestos. En la mecánica clásica la evolución de un sistema se describe como la trayectoria de un punto en el estado de fases. Sin embargo, en la mecánica cuántica esto no es posible, dado que el estado de un sistema solo puede venir dado como una “probabilidad”, de modo que no existe trayectoria de un solo punto que se adecue a la evolución temporal de un estado. Aquí, pues, la incógnita será una función (con argumentos en el espacio-tiempo y con valores en los complejos) \Psi (x,y,z,t) cuyo módulo al cuadrado (que es un número real) nos dará la densidad de probabilidad de que un sistema se encuentre en un cierto estado.
Esta función, que llamaremos “función de onda”,  evoluciona de acuerdo con la ecuación de Schrödinger. Esta es una ecuación en derivadas parciales (EDP) “cualitativamente” hiperbólica (ver la entrada anterior ). Para mayor simplicidad vamos a suponer aquí que no depende del tiempo, con lo que ahora nuestra ecuación de Schrödinger es elíptica y se puede escribir como la función que minimiza un funcional de acción (ya hablamos antes de este concepto)  J(\Psi)= \int |\nabla \Psi(x)|^2 dx +\int V(s)|\Psi(x)|^2 dx
Si utilizamos, como representación de la función de onda,  la base de POSICIONES, la densidad de probabilidad asociada a nuestra función de onda, \int_A |\Psi(x)|^2dx,  nos dará la probabilidad de que el sistema (en este caso, nuestro electrón) esté en una zona A del espacio.
Si nos interesa el MOMENTO (i.e. la velocidad), su función de onda es la transformada de Fourier de la función de onda de posiciones, \hat{\Psi}(p),  y esta es la madre del cordero.
En la mecánica clásica la posición y el momento eran independientes. Por eso, podríamos realizar medidas sobre una y otra cantidad sin afectar a la otra.
Ahora, no obstante, tenemos una ligadura: hay una relación que conecta la posición y el momento, y ha de cumplirse. Podemos, pues, escribir nuestro funcional en términos de las dos funciones de onda J(\Psi,\hat{\Psi})= \int |\hat{ \Psi}(p)|^2|p^2| dp +\int V(s)|\Psi(x)|^2 dx.
La formulación del principio de incertidumbre de Heisenberg es, pues, \int x^2|\Psi(x)|^2 dx \int p^2|\hat{\Psi}(p)|^2 dp=\int |\nabla_x \Psi(x)|^2 dx \int |\nabla_p \hat{\Psi}(p)|^2 dp\geq C donde C es cierta constante que podemos escribir explícitamente pero que hacerlo nos da una pereza superlativa por lo que lo dejamos ‘para el lector interesado’ ;). La constante es una ensalada de constante de Planck \hbar, \pi, algún dos… Puede escribirse también involucrando sólo una función de onda de la misma manera que se hace con el funcional.
Hemos dicho que \Psi(x,t) nos da una probabilidad, con función de densidad |\Psi(x,t)|^2dx. Así observamos que en realidad el término \int x^2|\Psi(x)|^2 dx es la varianza de nuestra variable aleatoria |\Psi(x,t)|^2 (que asumimos tiene media x=0, es decir, que nuestro electrón está más o menos rondando el origen de coordenadas espaciales).
Entonces si entendemos esas ‘normas’ de los gradientes como los “errores” (utilizaremos esta palabra aquí a modo explicativo, pero hay que ser cautos con la terminología), veremos que un error pequeño en alguna de nuestras mediciones, para fijar ideas, la posición, implica que el error del momento (es decir, de la velocidad) tiene que ser alto para que el producto sea mayor que una constante. Es más: cuanto mejor midamos una (menor error) mayor es el error de la otra. ¡Qué vida más dura la nuestra!
No he hablado nada claro en este último párrafo, y los exigentes se habrán quedado pensando que me explico muy mal (quizá tengan razón). Hemos calculado un par de ejemplos ilustrativos usando python. Hemos supuesto que es unidimensional y que nuestras funciones de onda toman valores en los reales y no en los complejos. No lo hacen, pero sed generosos con nosotros que esto es sólo una afición.
Supongamos que nuestra onda es como la de esta figura
Función de onda con momento definido: seno

Si la funcion de onda es como un seno, la longitud de onda (o el momento) está bien definida.

Entonces por la fórmula de De Broglie, que conecta la visión de partículas con la de ondas, tenemos una velocidad definida (con poco o ningún error), que depende de la longitud de onda (¡otra entrada por hacer!). Esto de nuevo enlaza con nuestra transformada de Fourier, dado que este tipo de transformadas nos llevan desde el espacio de posiciones al espacio de momentos. Sin embargo, no conocemos nada de la posición, pues la probabilidad no se decanta por ninguna zona en particular y salvo puntos donde nunca estarán los electrones por lo demás no podemos decir nada. (Para el lector interesado, decir que esta función de onda no está bien definida en el espacio de posiciones: no es normalizable)
Otro caso interesante es algo así como:
Función de onda de un paquete gaussiano

Un paquete gaussiano es una elección "popular" de función de onda porque tiene incertidumbre mínima

En esta segunda imagen tenemos una función tal que al hacer el cuadrado obtenemos una zona que acapara casi toda la probabilidad, un entorno del origen (como la vida misma, unos pocos acaparan casi toda la proba…, digo, billetes). Es decir, casi sin error podemos saber su posición; sin embargo, no podemos usar la fórmula de De Broglie para calcular su velocidad, pues ¿quién me dice su longitud de onda?…
Para ir concluyendo ¿cómo enlaza esto con los gradientes (es decir, las derivadas)?, observamos que una función como la de la figura 1 tiene un gradiente ‘pequeño’, mientras que una función cómo la de la figura 2 tiene un gradiente ‘grande’. Sólo hay que ver que ese pico tiene una derivada bien grande. Así tenemos que entender que los gradientes me dan una idea del error, pero cambiando la variable. Es decir, una gradiente alto en las x me dice un error grande en las p y un error pequeño en las x. Aunque no hemos hablado de ello, esto tiene que ver con la estructura geométrica de las ecuaciones del movimiento Hamiltonianas (ya llegará, ya llegará…).
Es sorprendente (pero usual) cómo la física a veces acaba teniendo que ver con ideas abstractas de las matemáticas (al revés también ocurre).
Hay más que contar, pero se está insinuando una entrada muy larga, así que en la segunda parte de esta entrada escribiremos más acerca de los desarrollos matemáticos de la Transformada de Fourier y de si se puede obtener alguna propiedad física desde las matemáticas.
=======================
Esta entrada es participante en la XVIII Edición del Carnaval de la Física, alojado por “La Aventura , en la mecánica cuántica esto no es posible, de la Ciencia.

¿Qué es exactamente una EDO?

A lo largo de las entradas de esta bitácora han ido apareciendo conceptos relativamente avanzados (ecuaciones en derivadas parciales…) sin mencionar casi los conceptos previos (previos en el sentido pedagógico, porque cronológicamente surge todo al mismo tiempo) como pueden ser las ecuaciones diferenciales ordinarias.

Una ecuación diferencial ordinaria (EDO a partir de ahora) es una expresión que relaciona la derivada de la función incógnita con la propia función. Así el problema queda reducido a ver si podemos encontrar (o demostrar que existe) una función tal que se verifique una relación más o menos complicada entre ella y sus tasas de cambio.

Un ejemplo lo tenemos en la Ley de Malthus. Supongamos que tenemos un número de insectos f. El incremento del número de insectos evolucionará de manera proporcional a el mismo, o de otra manera, en ausencia de rivales o limitaciones propias del medio la cantidad de hijos que medran es proporcional al número de padres. Razonable, ¿verdad?. Así la EDO la podemos escribir como f'(t)=cf(t), f(0)=f_0.

Unos comentarios antes de seguir: el número de datos iniciales (como f(0)=f_0 en el ejemplo anterior) tiene que ser el mismo que el máximo número de derivadas presentes en la expresión. Así como la ecuación anterior tenía una derivada debíamos poner un dato inicial. En el ejemplo del oscilador armónico al tener la ecuación x''=\omega^2 x necesitamos dos datos iniciales, x(0)=x0 y x'(0)=v0. Supongamos que tenemos una EDO de segundo orden (es decir, con dos derivadas) como la del oscilador armónico, entonces la solución general se escribe como $latex f(t)= c_1 e^{omega t}+ c_2e^{-omega t}$, donde para c_i son dos constantes que se fijan usando los datos iniciales.  Es decir, el conjunto de soluciones de una EDO linear de segundo orden (sin usar los datos iniciales) es un espacio vectorial (gracias a la linearidad) de dimensión 2 (el número de derivadas). Esta es una diferencia fundamental (y poco conocida entre los físicos) con respecto a las EDPs, pues una EDP tiene un espacio de soluciones de dimensión infinita.

Parece claro que conseguir escribir la solución de una EDO de manera explícita, es decir, una fórmula cerrada, no va a ser fácil o siquiera posible en cuanto la EDO sea no-lineal, por ejemplo algo como f''(t)=f^2(t)f'(t). Nos interesa entonces saber que existe dicha solución, ser capaces de simularla con el ordenador y ser capaces de extraer propiedades cualitativas.

Para una EDO general, f'(t)=F(t,f(t)), la existencia se puede segurar si se dan unas propiedades en la expresión F(x,y), a saber, que sea derivable en la variable y.

Para aproximar la solución de la EDO f'=F(t,f(t)) f(t_0)=f_0 se tienen que aproximar unas integrales, f(t)=f_0+\int_0^t F(s,f(s))ds. Según el método que usemos tendremos una mejor o peor cota del error cometido. La manera típica, conocida como métodos Runge-Kutta, de hacerlo es considerar una serie de puntos entre dos nodos temporales y calcular el valor de la función F en esos puntos. Después hemos de sumar dichos valores con unos pesos. La teoría de los métodos Runge-Kutta es bien conocida y se puede encontrar en la red sin mucho problema (siempre que se hable un mínimo de inglés al menos). Aquí voy a colgar unos códigos hecho por mí:

function [u,t,h,totalt]=euler(F,t0,T,u0,N)
%funcion que aproxima con un metodo de Euler explicito la solucion de la edo
%u’=F(u,t) hasta tiempo T con N nodos temporales. u0 es el dato inicial.
%%Rafael Granero Belinchon
tic
h=(T-t0)/N;
t=[t0:h:T];
u=zeros(N+1,1);
u(1)=u0;
for i=2:N+1
u(i)=u(i-1)+feval(F,u(i-1),t(i-1))*h;
end
plot(t,u);
totalt=toc;

function [u,t,h,totalt]=rungekutta4(F,t0,T,u0,N)
%Funcion que aproxima con una RK4 la solucion de
%y’=F(y) y(t0)=u0 y tiempo final T. N da el numero
%de nodos temporales.
%%Rafael Granero Belinchon
tic
h=(T-t0)/N;
t=[t0:h:T];
u=zeros(N+1,1);
u(1)=u0;
for i=2:N+1
s1=feval(F,u(i-1),t(i-1));
s2=feval(F,u(i-1)+h*0.5*s1,t(i-1)+h*0.5);
s3=feval(F,u(i-1)+h*0.5*s2,t(i-1)+h*0.5);
s4=feval(F,u(i-1)+h*s3,t(i-1)+h);
u(i)=u(i-1)+(s1+2*s2+2*s3+s4)*h/6;
end
plot(t,u);
totalt=toc;

function [u,t,totalt]=rungepasovariable(F,t0,T,u0,N,tol)
%funcion que aproxima con un metodo de paso variable
%la solucion de la ecuacion diferencial y’=F(y) en [t0,T]
%con u0 como dato inicial una cantidad N de pasos temporales y una tolerancia tol.
%%Rafael Granero Belinchon
tic
t=[t0];
dt=(T-t0)/N;
u=[u0];
u1=u;
u2=u;
while t(end)<=T
fev=feval(F,u(end),t(end));
s=u(end)+0.5*dt*fev;
u2(end+1)=u(end)+feval(F,s,t(end)+0.5*dt)*dt;
u1(end+1)=u(end)+fev*dt;
err=abs(u2(end)-u1(end));
h=0.9*dt*sqrt(tol/err);
u(end+1)=u(end)+feval(F,s,t(end)+0.5*h)*h;
t(end+1)=t(end)+h;
dt=h;
end
totalt=toc;

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.