Articulo de referencia

método de marcha rápida

El método de marcha rápida [ 1 ] es un método numérico creado por James Sethian para resolver problemas de valores en la frontera de la ecuación de Eikonal : | ∇ tú ( incógnita ...

El método de marcha rápida [ 1 ] es un método numérico creado por James Sethian para resolver problemas de valores en la frontera de la ecuación de Eikonal :

|(incógnita)|=1/F(incógnita) para incógnitaΩ{\displaystyle |\nabla u(x)|=1/f(x){\text{ para }}x\in \Omega }
(incógnita)=0 para incógnitaΩ{\displaystyle u(x)=0{\text{ para }}x\in \partial \Omega }

Normalmente, este tipo de problema describe la evolución de una superficie cerrada en función del tiempo.{\displaystyle u}con velocidadF{\displaystyle f}en la dirección normal en un puntoincógnita{\displaystyle x}en la superficie de propagación. Se especifica la función de velocidad y el tiempo en el que el contorno cruza un punto.incógnita{\displaystyle x}se obtiene resolviendo la ecuación. Alternativamente,(incógnita){\displaystyle u(x)}puede considerarse como la cantidad mínima de tiempo que se necesitaría para alcanzarΩ{\displaystyle \partial \Omega }comenzando desde el puntoincógnita{\displaystyle x}El método de marcha rápida aprovecha esta interpretación de control óptimo del problema para construir una solución desde el exterior, partiendo de la "información conocida", es decir, los valores límite.

El algoritmo es similar al de Dijkstra y se basa en el hecho de que la información solo fluye hacia afuera desde el área de siembra. Este problema es un caso especial de los métodos de conjuntos de nivel . Existen algoritmos más generales , pero suelen ser más lentos.

Extensiones a dominios no planos (triangulados) que resuelven

|S(incógnita)|=1/F(incógnita),{\displaystyle |\nabla _{S}u(x)|=1/f(x),}

para la superficieS{\displaystyle S}yincógnitaS{\displaystyle x\in S}, fueron presentados por Ron Kimmel y James Sethian .

Algoritmo

Primero, supongamos que el dominio se ha discretizado en una malla. Nos referiremos a los puntos de la malla como nodos. Cada nodoincógnitai{\displaystyle x_{i}}tiene un valor correspondienteUi=U(incógnitai)(incógnitai){\displaystyle U_{i}=U(x_{i})\approx u(x_{i})}.

El algoritmo funciona igual que el algoritmo de Dijkstra, pero difiere en cómo se calculan los valores de los nodos. En el algoritmo de Dijkstra, el valor de un nodo se calcula utilizando uno solo de los nodos vecinos. Sin embargo, al resolver la EDP enRnorte{\displaystyle \mathbb {R} ^{n}}, entre1{\displaystyle 1}ynorte{\displaystyle n}de los nodos vecinos se utilizan .

Los nodos se clasifican como lejanos (aún no visitados), considerados (visitados y con un valor asignado provisionalmente) y aceptados (visitados y con un valor asignado permanentemente).

  1. Asignar cada nodoincógnitai{\displaystyle x_{i}}el valor deUi=+{\displaystyle U_{i}=+\infty }y etiquetarlos como lejos ; para todos los nodosincógnitaiΩ{\displaystyle x_{i}\in \partial \Omega }colocarUi=0{\displaystyle U_{i}=0}y etiquetaincógnitai{\displaystyle x_{i}}como se aceptó .
  2. Para cada nodo lejanoincógnitai{\displaystyle x_{i}}, utilice la fórmula de actualización de Eikonal para calcular un nuevo valor paraU~{\displaystyle {\tilde {U}}}. SiU~<Ui{\displaystyle {\tilde {U}}<U_{i}}luego establecerUi=U~{\displaystyle U_{i}={\tilde {U}}}y etiquetaincógnitai{\displaystyle x_{i}}como se considera .
  3. Dejarincógnita~{\displaystyle {\tilde {x}}}sea ​​el nodo considerado con el valor más pequeñoU{\displaystyle U}. Etiquetaincógnita~{\displaystyle {\tilde {x}}}como se aceptó .
  4. Por cada vecinoincógnitai{\displaystyle x_{i}}deincógnita~{\displaystyle {\tilde {x}}}Eso no se acepta, calcule un valor tentativo.U~{\displaystyle {\tilde {U}}}.
  5. SiU~<Ui{\displaystyle {\tilde {U}}<U_{i}}luego establecerUi=U~{\displaystyle U_{i}={\tilde {U}}}. Siincógnitai{\displaystyle x_{i}}fue etiquetado como hasta ahora , actualice la etiqueta a considerado .
  6. Si existe un nodo considerado , vuelva al paso 3. De lo contrario, finalice.

Véase también

  • Métodos tipo Dijkstra para la ecuación de Eikonal, JN Tsitsiklis, 1995
  • El método de marcha rápida y sus aplicaciones por James A. Sethian
  • Métodos de marcha rápida con múltiples plantillas
  • Implementación en Matlab de marcha rápida con múltiples plantillas
  • Detalles de implementación de los métodos de marcha rápida
  • Método de Marcha Rápida Generalizada de Forcadel et al. [2008] para aplicaciones en segmentación de imágenes.
  • Implementación en Python del método de marcha rápida
  • Consulte el capítulo 8 de «Diseño y optimización de elementos nanoópticos mediante el acoplamiento de la fabricación al comportamiento óptico», archivado el 20 de agosto de 2013 en Wayback Machine.

Notas

  1. JA Sethian. Un método de conjunto de nivel de marcha rápida para frentes que avanzan monótonamente, Proc. Natl. Acad. Sci., 93, 4, pp.1591--1595, 1996.