Diferencia entre revisiones de «Aproximación de problemas de control.Derivadas topológicas para la resolución problemas inversos: Resolución actividad propuesta»

De MateWiki
Saltar a: navegación, buscar
 
(No se muestran 28 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
  
 
{{ Artículo | Aproximación de problemas de control.Derivadas topológicas para la resolución problemas inversos: Resolución actividad propuesta| [[:Categoría:Programa de Docotrado IMEIO | Programa de Doctorado IMEIO]] | [[:Categoría:IMEIO14/15|Curso 2014-15]] | J. Yanez Escanciano }}
 
{{ Artículo | Aproximación de problemas de control.Derivadas topológicas para la resolución problemas inversos: Resolución actividad propuesta| [[:Categoría:Programa de Docotrado IMEIO | Programa de Doctorado IMEIO]] | [[:Categoría:IMEIO14/15|Curso 2014-15]] | J. Yanez Escanciano }}
 +
 +
El texto que aparece a continuación esta basado en la presentación ''Derivadas topológicas para la resolución de problemas inversos'' realizada por M. L. Rapún en la Escuela Técnica Superior de Ingenieros de Caminos el 11 de Febrero de 2015. 
  
 
==Introducción==
 
==Introducción==
Línea 8: Línea 10:
 
Un ''problema inverso'' es aquel en el que a partir de ciertas mediciones o valores observados se debe deducir alguno o varios de los parámetros del sistema.
 
Un ''problema inverso'' es aquel en el que a partir de ciertas mediciones o valores observados se debe deducir alguno o varios de los parámetros del sistema.
  
En este ejercicio, vamos a hacer énfasis en aquel problema inverso en el cual el parámetro que se pretende estimar son los defectos de un medio. Concretamente, se trataría de un problema de dispersión, en el cual se hace incidir una onda <math>u_{inc}</math> en el seno de un medio <math>R</math> contra unos defectos <math>\Omega</math>. Dado que las propiedades del medio difieren en el defecto, el dominio <math>\Omega</math> puede ser estimado.  
+
En este ejercicio, vamos a hacer énfasis en aquel problema inverso en el cual el parámetro que se pretende estimar son los defectos o inhomogeneidades del medio. Concretamente, se trataría de un problema de dispersión, en el cual se hace incidir una onda <math>u_{inc}</math> en el seno de un medio <math>R</math> contra unos defectos <math>\Omega</math>. Dado que las propiedades del medio difieren en el defecto, el dominio <math>\Omega</math> puede ser estimado por un procedimiento más o menos complejo.  
  
El objetivo en este problema inverso concreto, es, a partir de las mediciones <math>u_{meas}</math> tomados en una serie de receptores <math>\Gamma</math> encontrar los objetos <math>\Omega</math> tales que la diferencia <math>|u-u_{meas}|</math> sea mínima.   
+
El objetivo en este problema inverso concreto, es, a partir de las mediciones <math>u_{meas}</math> tomados en una serie de receptores <math>\Gamma</math>, encontrar los objetos <math>\Omega</math> tales que la diferencia <math>|u-u_{meas}|</math> sea mínima.   
  
 
Se debe subrayar que a pesar de su enorme interés, se trata  de un problema mal planteado que puede no tener solución, y si la tiene puede no depender continuamente de los datos.
 
Se debe subrayar que a pesar de su enorme interés, se trata  de un problema mal planteado que puede no tener solución, y si la tiene puede no depender continuamente de los datos.
  
Este problema tiene numerosas aplicaciones, entre las que destacan aquellas en campos de tanto interés como puedan ser la medicina, la geología o el análisis de estructuras.  
+
Este problema tiene numerosas aplicaciones, entre las que destacan aquellas en campos de tanto interés como puedan ser la medicina, la geología o el análisis de estructuras.
  
 
===Problema modelo===
 
===Problema modelo===
  
Supongamos que estamos tratando con ondas acústicas. Tenemos
+
Supongamos que estamos tratando con ondas acústicas. Tenemos que
  
 
<math>\rho U_{tt} = k \Delta U,</math>
 
<math>\rho U_{tt} = k \Delta U,</math>
  
donde <math> k </math>  es la constantes elásticas en problemas de dispersión acústica. La onda incidente es armónica en el tiempo   
+
donde <math> k </math>  es la constante elásticas en problemas de dispersión acústica. La onda incidente es armónica en el tiempo   
  
 
<math>U_{inc}(\vec{x}, t) = Re\left[e^{−i \omega t} u_{inc}(\vec{x})\right],</math>
 
<math>U_{inc}(\vec{x}, t) = Re\left[e^{−i \omega t} u_{inc}(\vec{x})\right],</math>
Línea 28: Línea 30:
 
y <math>u_{inc}</math> es una onda plana que se propaga en la dirección <math>\vec{d}</math>, tal que
 
y <math>u_{inc}</math> es una onda plana que se propaga en la dirección <math>\vec{d}</math>, tal que
  
<math>u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}</math>
+
<math>u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}.</math>
  
 
La solución del problema directo es también armónica en el tiempo por lo que
 
La solución del problema directo es también armónica en el tiempo por lo que
  
<math>U(\vec{x}, t) = Re\left[e^{−i \omega t} u(\vec{x})\right],</math>
+
<math>U(\vec{x}, t) = Re\left[e^{−i \omega t} u(\vec{x})\right].</math>
  
 
La onda incidente genera una la parte dispersada en <math>R \backslash \Omega</math> y en una parte trasmitida en <math>\Omega</math>
 
La onda incidente genera una la parte dispersada en <math>R \backslash \Omega</math> y en una parte trasmitida en <math>\Omega</math>
Línea 47: Línea 49:
  
 
<math> \Delta u + k_i u = 0 \text{ en }  \Omega, </math>
 
<math> \Delta u + k_i u = 0 \text{ en }  \Omega, </math>
 +
 +
con las condiciones de contorno
  
 
<math> u^+ = u^-\text{ en }  \partial\Omega,</math>
 
<math> u^+ = u^-\text{ en }  \partial\Omega,</math>
Línea 52: Línea 56:
 
<math> \partial_n u^+ = \partial_n u^- \text{ en }  \partial\Omega,</math>
 
<math> \partial_n u^+ = \partial_n u^- \text{ en }  \partial\Omega,</math>
  
donde <math>k_e</math> y <math>k_i</math>  corresponden al medio y a los defectos respectivamente.
+
<math> \lim_{r \to \infty} r^{(n-1)/2} \left(\partial_r (u -u_{inc}) - i k_e (u -u_{inc})\right) = 0,</math>
 +
 
 +
donde <math>k_e</math> y <math>k_i</math>  corresponden al medio y a los defectos respectivamente, <math>r</math> es el radio.
 +
 
 
==Derivadas topológicas==
 
==Derivadas topológicas==
  
Línea 60: Línea 67:
 
<math> J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2.</math>  
 
<math> J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2.</math>  
  
La minimización puede ser realizada utilizando el método de las ''Derivadas topológicas''.  
+
La minimización puede ser realizada utilizando, entre otros, el método de las ''Derivadas topológicas''. La ''Derivada topológica'' se define como,
  
La ''Derivada topológicas'' se define como,
+
<math>D_T(\vec{x}, R)=\dfrac{J(R\backslash B_\epsilon(\vec{x}))-J(R)}{f(\epsilon)},</math>
  
<math>D_T(\vec{x}, R)=\dfrac{J(R\backslash B_\epsilon(\vec{x}))-J(R)}{f(\epsilon)}</math>
+
donde <math>B_\epsilon(\vec{x})</math> es la bola de centro <math>\vec{x}</math> y radio <math>\epsilon</math> y <math>f(\epsilon)</math> es una función positiva monótona decreciente cuyo límite existe, es no nulo y cuyo valor tiende a cero cuando <math> \epsilon </math> tiende a cero.
  
donde <math>B_\epsilon(\vec{x})</math> es la bola de centro <math>\vec{x}</math> y radio <math>\epsilon</math> y <math>f(\epsilon)</math> es una función positiva monótona decreciente cuyo límite existe y es no nulo y que además tiende a cero cuando <math> \epsilon </math> también tiende a cero.
+
Ciertamente, la ''Derivada topológica'' es una función lineal de <math>\vec{x}</math> fácil de interpretar como la variación del funcional <math>J</math> cuando se retira un volumen infinitesimal centrado <math>\vec{x}</math> y de radio <math>\epsilon</math>. En forma de desarrollo,
 
+
Ciertamente, la ''Derivada topológica'' es una función lineal de <math>\vec{x}</math> fácil de interpretar como la variación del funcional <math>J</math> cuando se retira un volumen infinitesimal centrado <math>\vec{x}</math> y de radio <math>\epsilon</math>. Escrito en forma de desarrollo,
+
  
 
<math>
 
<math>
Línea 74: Línea 79:
 
</math>
 
</math>
  
que permite entender mas claramente que en el caso en el que <math>D_T(\vec{x}, R)<0 </math> la probabilidad de que exista un defecto localizado en <math>\vec{x}</math> es elevada.
+
Una formulación que permite entender mas claramente que en el caso en el que <math>D_T(\vec{x}, R)<0 </math> la probabilidad de que exista un defecto localizado en <math>\vec{x}</math> es elevada.
  
 
===Calculo de la derivada topologica===
 
===Calculo de la derivada topologica===
 
En la práctica no se calcula la <math>D_T</math> utilizando su definición sino que se utilizan formulaciones alternativas utilizando, por ejemplo, una definición equivalente como límite de derivadas de forma y realizando posteriormente desarrollos asintóticos. En la mayoría de los casos, se suele poder llegar a expresiones sencillas de la DT que involucran la resolución de un problema directo y de un problema adjunto. Esto se puede concretizar de la siguiente forma. Para  
 
En la práctica no se calcula la <math>D_T</math> utilizando su definición sino que se utilizan formulaciones alternativas utilizando, por ejemplo, una definición equivalente como límite de derivadas de forma y realizando posteriormente desarrollos asintóticos. En la mayoría de los casos, se suele poder llegar a expresiones sencillas de la DT que involucran la resolución de un problema directo y de un problema adjunto. Esto se puede concretizar de la siguiente forma. Para  
  
<math> J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2.</math>  
+
<math> J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2,</math>  
  
 
se tiene que  
 
se tiene que  
 +
 
<math>
 
<math>
 
D_T(\vec{x}, R)=Re\left[(k_i^2-k_e^2) u(\vec{x})w(\vec{x})\right]
 
D_T(\vec{x}, R)=Re\left[(k_i^2-k_e^2) u(\vec{x})w(\vec{x})\right]
Línea 92: Línea 98:
 
y por tanto es  
 
y por tanto es  
  
<math>u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}</math>
+
<math>u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}.</math>
  
 
Por otra parte, <math>w</math> es solución de  
 
Por otra parte, <math>w</math> es solución de  
  
<math> \Delta w k_e^2 w = \overline{u-u_{meas}}\partial_{\Gamma}.</math>
+
<math> \Delta w+ k_e^2 w = (\overline{u-u_{meas}})\partial_{\Gamma}.</math>
  
 
Por ello,  <math>w</math>  es del tipo
 
Por ello,  <math>w</math>  es del tipo
  
 
<math>  
 
<math>  
w = \int_{\Gamma} G(\vec{x}-\vec{y}) (\overline{u-u_{meas}})(\vec{y}) dl_y.
+
w = \int_{\Gamma} G(\vec{x}-\vec{y}) (\overline{u-u_{meas}})(\vec{y}) dl_y
 
</math>
 
</math>
 +
donde <math>G(\vec{x}-\vec{y})</math> es el Kernel de una convolución.
  
 
==Aplicación de las derivadas Topológicas==
 
==Aplicación de las derivadas Topológicas==
===Descripción del problema===
+
===Descripción del problema propuesto===
 
[[Archivo:Diagrama medidas rapun2.png|marco|derecha|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 
[[Archivo:Diagrama medidas rapun2.png|marco|derecha|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
Como parte del curso de ''Ecuaciones en derivas parciales, Problema inverso y control'', se pide aplicar la técnica anteriormente descrita a un problema. en una primera fase, el problema propuesto consiste en encontrar la derivada topológica en un dominio cuadrado <math>[-1,1] \times [-1,1]</math> en el que existen unos defectos desconocidos, ver diagrama adjunto. Para ello se han hecho incidir diez ondas con diversas direcciones y se cuenta con una doce puntos de medida, localizados en torno al dominio cuadrado.
+
 
 +
Como parte del curso de ''Ecuaciones en derivas parciales, Problema inverso y control'', se pide aplicar la técnica anteriormente descrita a un problema.  
 +
 
 +
En una primera fase, el problema propuesto consiste en encontrar la derivada topológica en un dominio cuadrado <math>[-1,1] \times [-1,1]</math> en el que existen unos defectos desconocidos. Para ello se han hecho incidir diez ondas con diversas direcciones y se cuenta con una doce puntos de medida, localizados en torno al dominio cuadrado, ver diagrama adjunto.
  
 
Para la resolución del problema se nos facilita un fichero en el que están contenidos:
 
Para la resolución del problema se nos facilita un fichero en el que están contenidos:
  
 
* Las coordenadas de los puntos de medida
 
* Las coordenadas de los puntos de medida
* Las medidas en los trasndusctores
+
* Las medidas en los transductores
 
* Los ángulos de las ondas incidentes
 
* Los ángulos de las ondas incidentes
 
* El numero de onda de la ecuación de Helmholtz
 
* El numero de onda de la ecuación de Helmholtz
  
Con objeto de estudiar la sensibilidad de la solución a diferentes posiciones de los transductores, se pide además del caso con la configuración ya descrita las siguientes soluciones adicionales:
+
Con objeto de estudiar la sensibilidad de la solución a diferentes posiciones de los transductores, se pide además del caso ya descrito los siguientes resultados adicionales:
* Utilizando los datos recogidos por los 6 primeros receptores
+
* Obtener la ''Derivada topológica'' utilizando los datos recogidos por los seis primeros receptores
* Utilizando los datos recogidos  en los 6 últimos receptores
+
* Obtener la ''Derivada topológica'' utilizando los datos recogidos  en los seis últimos receptores
* Utilizando los datos recogidos por los 3 primeros receptores  
+
* Obtener la ''Derivada topológica'' utilizando los datos recogidos por los tres primeros receptores  
* Utilizando los datos recogidos por uno de cada dos receptores
+
* Obtener la ''Derivada topológica'' utilizando los datos recogidos por uno de cada dos receptores
* Utilizando los datos recogidos en uno de cada tres receptores
+
* Obtener la ''Derivada topológica'' utilizando los datos recogidos en uno de cada tres receptores
  
 
Debido a que en el diagrama en el que se propone el problema existe el caso en el que se tienen en cuenta tan solo tres receptores (uno de cada cuatro) se añade este caso adicionalmente.
 
Debido a que en el diagrama en el que se propone el problema existe el caso en el que se tienen en cuenta tan solo tres receptores (uno de cada cuatro) se añade este caso adicionalmente.
  
 +
===Metodo de solucion simplificada===
 +
 +
Para encontrar la ''Derivada topológica'' vamos a calcular la funciónes <math>u</math> y <math>w</math> soluciones del problema directo e inverso.
 +
 +
Las ondas planas incidentes pueden ser caracterizadas por las formulas
 +
<math> u_{inc \, k} (\vec{x})=e^{i \lambda \vec{d_k} \cdot \vec{x}} </math>
 +
 +
donde por simplicidad tomamos los
 +
 +
<math> d_{k}=(\cos{(\theta_k)}, \sin{(\theta_k)}). </math>
 +
 +
donde <math>k</math> representa cada una de las direcciones de la onda incidente.
 +
 +
En este ejercicio simplificado se ha tomado un valor de <math>\lambda=4</math>.
 +
 +
El funcional <math>J</math> que debemos minimizar toma la expresión,
 +
 +
<math> J=\dfrac{1}{2} \sum_{k=1}^{N_\text{direcciones}}\sum_{j=1}^{N_\text{receptores}} |u_k(x_j)-u_{meas}(x_j)|^2.</math>
 +
 +
La función <math>u_k</math> es solución de
 +
 +
<math> \Delta u_k + \lambda u_k = 0 \text{ en } R^2 \backslash \Omega  </math>
 +
 +
con
 +
 +
<math> u_k = 0 \text{ en } \partial\Omega</math>
 +
 +
y
 +
 +
<math> \lim_{r \to \infty} r^{(n-1)/2} \left(\partial_r (u_k -u_{inc \, k}) - i k_e (u_k -u_{inc \, k})\right) = 0.</math>
 +
 +
La ''Derivada topológica'' resulta entonces ser
 +
 +
<math> D_T (\vec{x}) = \sum_{k=1}^{N_\text{direcciones}} Re\left[u_{inc \, k}(\vec{x}) w_k(\vec{x})\right]. </math>
 +
 +
La solución del problema inverso se puede tomar de la forma
 +
 +
<math> w_k (\vec{x}) = \sum_{j=1}^{N_\text{receptores}} \dfrac{i}{4} H_0^{(1)}(\lambda |\vec{x}-\vec{x}_j|)(\overline{u_{meas \, k}(\vec{x}_j)-u_{inc \, k}(\vec{x}_j)}),</math>
 +
 +
donde <math>H_0^{(1)}</math> es la función de Hankel de primera especie y orden cero.
 +
 +
===Código utilizado===
 +
 +
La ''Derivada topológica'' fue calculada con el ''Script'' escrito en el lenguaje de programación Python que se muestra a continuación. Con el objeto de clarificar el codigo se han insertado comentarios que clarifican la función de cada bloque de código.
 +
 +
<source lang="python">
 +
#!/usr/bin/python
 +
 +
# Cargar los paquetes necesarios
 +
 +
import scipy.io
 +
import numpy as np
 +
import scipy.special as sci_spc
 +
import math
 +
 +
#Leer el archivo con los datos del probelma
 +
 +
mat = scipy.io.loadmat('DatosProblema.mat')
 +
 +
#Copiar cada variable por separado para mayor claridad
 +
 +
Xreceptores=np.array(mat['Xreceptores'])
 +
Yreceptores=np.array(mat['Yreceptores'])
 +
Angulos=np.array(mat['Angulos'])
 +
OndaMedida=np.matrix(mat['OndaMedida'])
 +
ll=np.array(mat['lambda'])
 +
lam=ll[0,0]
 +
 +
#Generar direcciones. tomo como numero complejo aunque se trata de R^2
 +
 +
d = np.zeros(shape=Angulos.shape, dtype=np.complex)
 +
for i in np.arange(Angulos.shape[1]):
 +
    d[0,i]=math.cos(Angulos[0,i])+math.sin(Angulos[0,i])*1j
 +
 +
#Generar matriz de puntos para calcular
 +
 +
x =  np.zeros([201,201], dtype=np.complex)
 +
for i in np.arange(-100,100,1):
 +
    for j in np.arange(-100,100,1):
 +
        x[i,j]=np.float(i)/100+np.float(j)/100*1j
 +
 +
# Generar matriz de puntos para la Derivada topologica
 +
 +
DT =  np.zeros([201,201], dtype=np.float)
 +
 +
# Generar vector con las coordenadas de los trasnductores
 +
 +
xj =  np.zeros([Xreceptores.shape[1]], dtype=np.complex)
 +
for i in np.arange(Xreceptores.shape[1]):
 +
    xj[i]=Xreceptores[0, i]+1j*Yreceptores[0, i]
 +
 +
# Valor de u en los trasnductores para cadqa direccion y trasnductor
 +
uj = np.zeros(shape=OndaMedida.shape, dtype=np.complex)
 +
for i in np.arange(uj.shape[0]):
 +
    for k in np.arange(uj.shape[1]):
 +
        uj[i,k]=np.exp(1j*lam*(d[0,k].real*xj[i].real+d[0,k].imag*xj[i].imag))
 +
 +
 +
#print x[-90,-90]
 +
 +
# Generar matrices para u y w
 +
 +
u =  np.zeros([201,201,Angulos.shape[1]], dtype=np.complex)
 +
w =  np.zeros([201,201,Angulos.shape[1]], dtype=np.complex)
 +
ww =  np.zeros([201,201,Angulos.shape[1],Xreceptores.shape[1]], dtype=np.complex)
 +
 +
#Calcular u y w en las coordenadas para cada direccion y receptor
 +
 +
for a in np.arange(-100,100,1):
 +
    for b in np.arange(-100,100,1):
 +
        for k in np.arange(Angulos.shape[1]):
 +
            u[a,b,k]=np.exp(1j*lam*(d[0,k].real*x[a,b].real+d[0,k].imag*x[a,b].imag))
 +
            for j in np.arange(Xreceptores.shape[1]):
 +
                ww[a,b,k,j]=1j/4*sci_spc.hankel1(0, lam*np.absolute(x[a,b]-xj[j]))*np.conjugate(OndaMedida[j,k]-uj[j,k])
 +
 +
# Sumar en receptores
 +
 +
for a in np.arange(-100,100,1):
 +
    for b in np.arange(-100,100,1):
 +
        for k in np.arange(Angulos.shape[1]):
 +
            for j in np.arange(Xreceptores.shape[1]):
 +
                w[a,b,k]+= ww[a,b,k,j]
 +
 +
 +
# Sumar en cada direccion
 +
 +
for a in np.arange(-100,100,1):
 +
    for b in np.arange(-100,100,1):
 +
        for k in np.arange(Angulos.shape[1]):
 +
            DT[a,b]+=(u[a,b,k]*w[a,b,k]).real
 +
 +
# Output de los valores
 +
 +
for a in np.arange(-100,100,1):
 +
    for b in np.arange(-100,100,1):
 +
        #print (%f, %f, %f) % (x[a,b].real(), x[a,b].imag(), DT[a,b])       
 +
        print '%f, %f, %f' % (x[a,b].real, x[a,b].imag, DT[a,b])
 +
 +
</source>
 +
 +
 +
Los valores obtenidos fueron dibujados en forma de ''Mapa térmico'' utilizando un segundo ''Script'', que se muestra a continuación, también realizado en lenguaje Python
 +
 +
 +
 +
<source lang="python">
 +
#!/usr/bin/python
 +
 +
import numpy as np
 +
import matplotlib.pyplot as plt
 +
from matplotlib.mlab import griddata
 +
 +
xi = np.linspace(-1., 1., 200)
 +
yi = np.linspace(-1., 1., 200)
 +
 +
do=np.loadtxt('datos_escalar.dat', delimiter=',')
 +
 +
x=do[:,0]
 +
y=do[:,1]
 +
z=do[:,2]
 +
 +
zi = griddata(x, y, z, xi, yi, interp='linear')
 +
CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
 +
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow,
 +
                  vmax=abs(zi).max(), vmin=-abs(zi).max())
 +
cbar = plt.colorbar()
 +
#cbar.set_label('DT', rotation=270)
 +
cbar.set_label('DT, [-]')
 +
 +
plt.xlim(-1, 1)
 +
plt.ylim(-1, 1)
 +
plt.xlabel('x, [-]')
 +
plt.ylabel('y, [-]')
 +
 +
plt.show()
 +
 +
</source>
 +
 +
==Soluciones Obtenidas==
 +
 +
===Derivada topológica obtenida teniendo en cuenta la totalidad de receptores===
 +
 +
Las soluciones obtenidas teniendo en cuenta todos los receptores, localizados según el diagrama, se pueden observar en el diagrama térmico siguiente. Dos zonas diferenciadas aparecen claramente en la figura en las que <math>D_T</math> toma valores negativos. Estas áreas están caracterizadas por adoptar tonos azules.
 +
 +
[[Archivo:Diagrama medidas rapun2.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
[[Archivo:Figure 1 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta doce receptores (totalidad)]]
 +
 +
El diagrama obtenido sirve de caso base para comparar los resultados que se obtiene cuando se utilicen un numero inferior de receptores o una disposición distinta (objeto de los siguientes subapartados).
 +
 +
===Derivada topológica obtenida teniendo en cuenta 6 receptores agrupados===
 +
 +
Seguidamente se realizó una repetición del calculo pero teniendo en cuenta tan solo la mitad de los receptores. El calculo se realizo tomando inicialmente la primera mitad de los receptores y luego la segunda mitad. Para lograr una mayor claridad en la exposición se incluyen sendos diagramas en los que se puede apreciar la distribución de los receptores en cada uno de los casos.
 +
 +
Los resultados obtenidos parecen, a primera vista, casi simétricos con respecto a los receptores eliminados.
 +
 +
El resultado para el defecto mas alejado de los transductores se degrada notablemente en ambos caso. Esto puede ser debido probablemente a la existencia de un cierto apantallamiento por parte del defecto mas cercano a los transductores.
 +
 +
Los niveles que se obtienen hacen pensar, teniendo en cuenta el resultado de la sección anterior, que el defecto (o inclusión) inferior derecho tiene un tamaño superior que la inclusión superior izquierda.
 +
 +
[[Archivo:Diagrama 6 p rapun.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
[[Archivo:Figure 2 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los seis primeros receptores]]
 +
 +
[[Archivo:Diagrama 6 u rapun.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
[[Archivo:Figure 3 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los seis últimos receptores]]
 +
 +
===Derivada topológica obtenida teniendo en cuenta 3 receptores agrupados===
 +
 +
El procedimiento fue repetido teniendo en cuenta tan solo tres transductores, localizados según aparece en la figura.
 +
 +
[[Archivo:Diagrama 3 p rapun.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
El resultado muestra que la solución obtenida se ha seguido degradando. Los defectos aparecen con una forma significativamente alargada, aunque, probablemente debido a la localización de los obstáculos, su localización toma, como en el caso base, una forma simétrica.
 +
 +
[[Archivo:Figure 4 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los tres primeros receptores exclusivamente]]
 +
 +
===Derivada topológica obtenida teniendo en cuenta receptores no agrupados===
 +
 +
Por ultimo se  tratan los resultados obtenidos en los casos en los que se han eliminado uno de cada dos, uno de cada tres y uno de cada cuatro receptores. Para mayor claridad se incluyen los diagramas correspondientes a cada una de las disposiciones de los transductores.  Es visible como la imagen obtenida se va degradando poco a poco, especialmente en el últimos caso, en el  que los obstáculos dejan de ser redondeados para achantarse perceptiblemente.
 +
 +
[[Archivo:Diagrama 1 2 rapun.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
[[Archivo:Figure 5 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada dos receptores exclusivamente]]
 +
 +
[[Archivo:Diagrama 1 2 rapun.png|marco|centro|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
 +
 +
[[Archivo:Figure 6 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada tres receptores exclusivamente]]
 +
 +
[[Archivo:Diagrama 1 2 rapun.png|centro|izquierda|alt=dominio_calculo|Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver]]
  
[[Archivo:Figure 1 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 7 vvlr.png|marco|centro| Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada cuatro receptores exclusivamente]]
[[Archivo:Figure 2 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 3 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 4 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 5 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 6 vvlr.png|marco|centro| Res1]]
+
[[Archivo:Figure 7 vvlr.png|marco|centro| Res1]]
+
  
  

Revisión actual del 10:22 25 mar 2015

Plantilla:Artículo

El texto que aparece a continuación esta basado en la presentación Derivadas topológicas para la resolución de problemas inversos realizada por M. L. Rapún en la Escuela Técnica Superior de Ingenieros de Caminos el 11 de Febrero de 2015.

1 Introducción

1.1 General

Un problema inverso es aquel en el que a partir de ciertas mediciones o valores observados se debe deducir alguno o varios de los parámetros del sistema.

En este ejercicio, vamos a hacer énfasis en aquel problema inverso en el cual el parámetro que se pretende estimar son los defectos o inhomogeneidades del medio. Concretamente, se trataría de un problema de dispersión, en el cual se hace incidir una onda [math]u_{inc}[/math] en el seno de un medio [math]R[/math] contra unos defectos [math]\Omega[/math]. Dado que las propiedades del medio difieren en el defecto, el dominio [math]\Omega[/math] puede ser estimado por un procedimiento más o menos complejo.

El objetivo en este problema inverso concreto, es, a partir de las mediciones [math]u_{meas}[/math] tomados en una serie de receptores [math]\Gamma[/math], encontrar los objetos [math]\Omega[/math] tales que la diferencia [math]|u-u_{meas}|[/math] sea mínima.

Se debe subrayar que a pesar de su enorme interés, se trata de un problema mal planteado que puede no tener solución, y si la tiene puede no depender continuamente de los datos.

Este problema tiene numerosas aplicaciones, entre las que destacan aquellas en campos de tanto interés como puedan ser la medicina, la geología o el análisis de estructuras.

1.2 Problema modelo

Supongamos que estamos tratando con ondas acústicas. Tenemos que

[math]\rho U_{tt} = k \Delta U,[/math]

donde [math] k [/math] es la constante elásticas en problemas de dispersión acústica. La onda incidente es armónica en el tiempo

[math]U_{inc}(\vec{x}, t) = Re\left[e^{−i \omega t} u_{inc}(\vec{x})\right],[/math]

y [math]u_{inc}[/math] es una onda plana que se propaga en la dirección [math]\vec{d}[/math], tal que

[math]u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}.[/math]

La solución del problema directo es también armónica en el tiempo por lo que

[math]U(\vec{x}, t) = Re\left[e^{−i \omega t} u(\vec{x})\right].[/math]

La onda incidente genera una la parte dispersada en [math]R \backslash \Omega[/math] y en una parte trasmitida en [math]\Omega[/math]

[math]u=u_{inc}+u_{sc} \text{ en } R\backslash\Omega[/math]

y

[math]u=u_{trans} \text{ en } \Omega.[/math]

Se tiene que $u$ es la solución del problema,

[math] \Delta u + k_e u = 0 \text{ en } R \backslash \Omega, [/math]

[math] \Delta u + k_i u = 0 \text{ en } \Omega, [/math]

con las condiciones de contorno

[math] u^+ = u^-\text{ en } \partial\Omega,[/math]

[math] \partial_n u^+ = \partial_n u^- \text{ en } \partial\Omega,[/math]

[math] \lim_{r \to \infty} r^{(n-1)/2} \left(\partial_r (u -u_{inc}) - i k_e (u -u_{inc})\right) = 0,[/math]

donde [math]k_e[/math] y [math]k_i[/math] corresponden al medio y a los defectos respectivamente, [math]r[/math] es el radio.

2 Derivadas topológicas

2.1 General

La variable que pretendemos encontrar, [math]\Omega[/math], puede ser hallada minimizando un funcional del error

[math] J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2.[/math]

La minimización puede ser realizada utilizando, entre otros, el método de las Derivadas topológicas. La Derivada topológica se define como,

[math]D_T(\vec{x}, R)=\dfrac{J(R\backslash B_\epsilon(\vec{x}))-J(R)}{f(\epsilon)},[/math]

donde [math]B_\epsilon(\vec{x})[/math] es la bola de centro [math]\vec{x}[/math] y radio [math]\epsilon[/math] y [math]f(\epsilon)[/math] es una función positiva monótona decreciente cuyo límite existe, es no nulo y cuyo valor tiende a cero cuando [math] \epsilon [/math] tiende a cero.

Ciertamente, la Derivada topológica es una función lineal de [math]\vec{x}[/math] fácil de interpretar como la variación del funcional [math]J[/math] cuando se retira un volumen infinitesimal centrado [math]\vec{x}[/math] y de radio [math]\epsilon[/math]. En forma de desarrollo,

[math] J(R\backslash B_\epsilon(\vec{x}))=J(R)+D_T(\vec{x}, R)f(\epsilon)+\ldots [/math]

Una formulación que permite entender mas claramente que en el caso en el que [math]D_T(\vec{x}, R)\lt0 [/math] la probabilidad de que exista un defecto localizado en [math]\vec{x}[/math] es elevada.

2.2 Calculo de la derivada topologica

En la práctica no se calcula la [math]D_T[/math] utilizando su definición sino que se utilizan formulaciones alternativas utilizando, por ejemplo, una definición equivalente como límite de derivadas de forma y realizando posteriormente desarrollos asintóticos. En la mayoría de los casos, se suele poder llegar a expresiones sencillas de la DT que involucran la resolución de un problema directo y de un problema adjunto. Esto se puede concretizar de la siguiente forma. Para

[math] J=\dfrac{1}{2} \int_\Gamma |u-u_{meas}|^2,[/math]

se tiene que

[math] D_T(\vec{x}, R)=Re\left[(k_i^2-k_e^2) u(\vec{x})w(\vec{x})\right] [/math]

donde [math]u[/math] es solución de un problema directo y [math]w[/math] es solución de un problema adjunto. Es decir, tomando [math]\Omega=\emptyset[/math] se tiene que [math]u[/math] es solución de

[math] \Delta u + k_e u = 0 [/math]

y por tanto es

[math]u_{inc}(\vec{x})= e^{i k \vec{x} \cdot \vec{d}}.[/math]

Por otra parte, [math]w[/math] es solución de

[math] \Delta w+ k_e^2 w = (\overline{u-u_{meas}})\partial_{\Gamma}.[/math]

Por ello, [math]w[/math] es del tipo

[math] w = \int_{\Gamma} G(\vec{x}-\vec{y}) (\overline{u-u_{meas}})(\vec{y}) dl_y [/math] donde [math]G(\vec{x}-\vec{y})[/math] es el Kernel de una convolución.

3 Aplicación de las derivadas Topológicas

3.1 Descripción del problema propuesto

alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver

Como parte del curso de Ecuaciones en derivas parciales, Problema inverso y control, se pide aplicar la técnica anteriormente descrita a un problema.

En una primera fase, el problema propuesto consiste en encontrar la derivada topológica en un dominio cuadrado [math][-1,1] \times [-1,1][/math] en el que existen unos defectos desconocidos. Para ello se han hecho incidir diez ondas con diversas direcciones y se cuenta con una doce puntos de medida, localizados en torno al dominio cuadrado, ver diagrama adjunto.

Para la resolución del problema se nos facilita un fichero en el que están contenidos:

  • Las coordenadas de los puntos de medida
  • Las medidas en los transductores
  • Los ángulos de las ondas incidentes
  • El numero de onda de la ecuación de Helmholtz

Con objeto de estudiar la sensibilidad de la solución a diferentes posiciones de los transductores, se pide además del caso ya descrito los siguientes resultados adicionales:

  • Obtener la Derivada topológica utilizando los datos recogidos por los seis primeros receptores
  • Obtener la Derivada topológica utilizando los datos recogidos en los seis últimos receptores
  • Obtener la Derivada topológica utilizando los datos recogidos por los tres primeros receptores
  • Obtener la Derivada topológica utilizando los datos recogidos por uno de cada dos receptores
  • Obtener la Derivada topológica utilizando los datos recogidos en uno de cada tres receptores

Debido a que en el diagrama en el que se propone el problema existe el caso en el que se tienen en cuenta tan solo tres receptores (uno de cada cuatro) se añade este caso adicionalmente.

3.2 Metodo de solucion simplificada

Para encontrar la Derivada topológica vamos a calcular la funciónes [math]u[/math] y [math]w[/math] soluciones del problema directo e inverso.

Las ondas planas incidentes pueden ser caracterizadas por las formulas [math] u_{inc \, k} (\vec{x})=e^{i \lambda \vec{d_k} \cdot \vec{x}} [/math]

donde por simplicidad tomamos los

[math] d_{k}=(\cos{(\theta_k)}, \sin{(\theta_k)}). [/math]

donde [math]k[/math] representa cada una de las direcciones de la onda incidente.

En este ejercicio simplificado se ha tomado un valor de [math]\lambda=4[/math].

El funcional [math]J[/math] que debemos minimizar toma la expresión,

[math] J=\dfrac{1}{2} \sum_{k=1}^{N_\text{direcciones}}\sum_{j=1}^{N_\text{receptores}} |u_k(x_j)-u_{meas}(x_j)|^2.[/math]

La función [math]u_k[/math] es solución de

[math] \Delta u_k + \lambda u_k = 0 \text{ en } R^2 \backslash \Omega [/math]

con

[math] u_k = 0 \text{ en } \partial\Omega[/math]

y

[math] \lim_{r \to \infty} r^{(n-1)/2} \left(\partial_r (u_k -u_{inc \, k}) - i k_e (u_k -u_{inc \, k})\right) = 0.[/math]

La Derivada topológica resulta entonces ser

[math] D_T (\vec{x}) = \sum_{k=1}^{N_\text{direcciones}} Re\left[u_{inc \, k}(\vec{x}) w_k(\vec{x})\right]. [/math]

La solución del problema inverso se puede tomar de la forma

[math] w_k (\vec{x}) = \sum_{j=1}^{N_\text{receptores}} \dfrac{i}{4} H_0^{(1)}(\lambda |\vec{x}-\vec{x}_j|)(\overline{u_{meas \, k}(\vec{x}_j)-u_{inc \, k}(\vec{x}_j)}),[/math]

donde [math]H_0^{(1)}[/math] es la función de Hankel de primera especie y orden cero.

3.3 Código utilizado

La Derivada topológica fue calculada con el Script escrito en el lenguaje de programación Python que se muestra a continuación. Con el objeto de clarificar el codigo se han insertado comentarios que clarifican la función de cada bloque de código.

#!/usr/bin/python

# Cargar los paquetes necesarios

import scipy.io
import numpy as np
import scipy.special as sci_spc
import math

#Leer el archivo con los datos del probelma

mat = scipy.io.loadmat('DatosProblema.mat')

#Copiar cada variable por separado para mayor claridad

Xreceptores=np.array(mat['Xreceptores'])
Yreceptores=np.array(mat['Yreceptores'])
Angulos=np.array(mat['Angulos'])
OndaMedida=np.matrix(mat['OndaMedida'])
ll=np.array(mat['lambda'])
lam=ll[0,0]

#Generar direcciones. tomo como numero complejo aunque se trata de R^2

d = np.zeros(shape=Angulos.shape, dtype=np.complex)
for i in np.arange(Angulos.shape[1]):
    d[0,i]=math.cos(Angulos[0,i])+math.sin(Angulos[0,i])*1j

#Generar matriz de puntos para calcular

x =  np.zeros([201,201], dtype=np.complex)
for i in np.arange(-100,100,1):
    for j in np.arange(-100,100,1):
        x[i,j]=np.float(i)/100+np.float(j)/100*1j

# Generar matriz de puntos para la Derivada topologica

DT =  np.zeros([201,201], dtype=np.float)

# Generar vector con las coordenadas de los trasnductores

xj =  np.zeros([Xreceptores.shape[1]], dtype=np.complex)
for i in np.arange(Xreceptores.shape[1]):
    xj[i]=Xreceptores[0, i]+1j*Yreceptores[0, i]

# Valor de u en los trasnductores para cadqa direccion y trasnductor
uj = np.zeros(shape=OndaMedida.shape, dtype=np.complex)
for i in np.arange(uj.shape[0]):
    for k in np.arange(uj.shape[1]):
        uj[i,k]=np.exp(1j*lam*(d[0,k].real*xj[i].real+d[0,k].imag*xj[i].imag))


#print x[-90,-90]

# Generar matrices para u y w

u =  np.zeros([201,201,Angulos.shape[1]], dtype=np.complex)
w =  np.zeros([201,201,Angulos.shape[1]], dtype=np.complex)
ww =  np.zeros([201,201,Angulos.shape[1],Xreceptores.shape[1]], dtype=np.complex)

#Calcular u y w en las coordenadas para cada direccion y receptor

for a in np.arange(-100,100,1):
    for b in np.arange(-100,100,1):
        for k in np.arange(Angulos.shape[1]):
            u[a,b,k]=np.exp(1j*lam*(d[0,k].real*x[a,b].real+d[0,k].imag*x[a,b].imag))
            for j in np.arange(Xreceptores.shape[1]):
                ww[a,b,k,j]=1j/4*sci_spc.hankel1(0, lam*np.absolute(x[a,b]-xj[j]))*np.conjugate(OndaMedida[j,k]-uj[j,k])

# Sumar en receptores

for a in np.arange(-100,100,1):
    for b in np.arange(-100,100,1):
        for k in np.arange(Angulos.shape[1]):
             for j in np.arange(Xreceptores.shape[1]):
                 w[a,b,k]+= ww[a,b,k,j]


# Sumar en cada direccion

for a in np.arange(-100,100,1):
    for b in np.arange(-100,100,1):
        for k in np.arange(Angulos.shape[1]):
            DT[a,b]+=(u[a,b,k]*w[a,b,k]).real

# Output de los valores

for a in np.arange(-100,100,1):
    for b in np.arange(-100,100,1):
        #print (%f, %f, %f) % (x[a,b].real(), x[a,b].imag(), DT[a,b])        
        print '%f, %f, %f' % (x[a,b].real, x[a,b].imag, DT[a,b])


Los valores obtenidos fueron dibujados en forma de Mapa térmico utilizando un segundo Script, que se muestra a continuación, también realizado en lenguaje Python


#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import griddata

xi = np.linspace(-1., 1., 200)
yi = np.linspace(-1., 1., 200)

do=np.loadtxt('datos_escalar.dat', delimiter=',')

x=do[:,0]
y=do[:,1]
z=do[:,2]

zi = griddata(x, y, z, xi, yi, interp='linear')
CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow,
                  vmax=abs(zi).max(), vmin=-abs(zi).max())
cbar = plt.colorbar() 
#cbar.set_label('DT', rotation=270)
cbar.set_label('DT, [-]')

plt.xlim(-1, 1)
plt.ylim(-1, 1)
plt.xlabel('x, [-]')
plt.ylabel('y, [-]')

plt.show()

4 Soluciones Obtenidas

4.1 Derivada topológica obtenida teniendo en cuenta la totalidad de receptores

Las soluciones obtenidas teniendo en cuenta todos los receptores, localizados según el diagrama, se pueden observar en el diagrama térmico siguiente. Dos zonas diferenciadas aparecen claramente en la figura en las que [math]D_T[/math] toma valores negativos. Estas áreas están caracterizadas por adoptar tonos azules.

alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver
Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta doce receptores (totalidad)

El diagrama obtenido sirve de caso base para comparar los resultados que se obtiene cuando se utilicen un numero inferior de receptores o una disposición distinta (objeto de los siguientes subapartados).

4.2 Derivada topológica obtenida teniendo en cuenta 6 receptores agrupados

Seguidamente se realizó una repetición del calculo pero teniendo en cuenta tan solo la mitad de los receptores. El calculo se realizo tomando inicialmente la primera mitad de los receptores y luego la segunda mitad. Para lograr una mayor claridad en la exposición se incluyen sendos diagramas en los que se puede apreciar la distribución de los receptores en cada uno de los casos.

Los resultados obtenidos parecen, a primera vista, casi simétricos con respecto a los receptores eliminados.

El resultado para el defecto mas alejado de los transductores se degrada notablemente en ambos caso. Esto puede ser debido probablemente a la existencia de un cierto apantallamiento por parte del defecto mas cercano a los transductores.

Los niveles que se obtienen hacen pensar, teniendo en cuenta el resultado de la sección anterior, que el defecto (o inclusión) inferior derecho tiene un tamaño superior que la inclusión superior izquierda.

alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver
Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los seis primeros receptores
alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver
Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los seis últimos receptores

4.3 Derivada topológica obtenida teniendo en cuenta 3 receptores agrupados

El procedimiento fue repetido teniendo en cuenta tan solo tres transductores, localizados según aparece en la figura.

alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver

El resultado muestra que la solución obtenida se ha seguido degradando. Los defectos aparecen con una forma significativamente alargada, aunque, probablemente debido a la localización de los obstáculos, su localización toma, como en el caso base, una forma simétrica.

Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta los tres primeros receptores exclusivamente

4.4 Derivada topológica obtenida teniendo en cuenta receptores no agrupados

Por ultimo se tratan los resultados obtenidos en los casos en los que se han eliminado uno de cada dos, uno de cada tres y uno de cada cuatro receptores. Para mayor claridad se incluyen los diagramas correspondientes a cada una de las disposiciones de los transductores. Es visible como la imagen obtenida se va degradando poco a poco, especialmente en el últimos caso, en el que los obstáculos dejan de ser redondeados para achantarse perceptiblemente.

alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver
Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada dos receptores exclusivamente
alt=dominio_calculo
Dominio de calculo (granate) puntos de medida (estrellas) y ondas incidentes (flechas) para el problema inverso que se pide resolver
Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada tres receptores exclusivamente

alt=dominio_calculo

Mapa térmico mostrando los valores de la derivada topológica obtenida teniendo en cuenta uno de cada cuatro receptores exclusivamente