Introducción
En este laboratorio, aprenderá a usar la biblioteca Matplotlib de Python para interpolar datos de una malla triangular a una malla cuadrada. Empezaremos creando una triangulación y luego interpolaremos los datos usando métodos lineales y cúbicos. Finalmente, graficaremos los resultados.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos para que Jupyter Notebook termine de cargar. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje comentarios después de la sesión y lo resolveremos rápidamente para usted.
Crear una triangulación
El primer paso es crear una triangulación usando los datos de x, y y triángulos dados. Luego graficaremos la triangulación.
## Crear triangulación.
x = np.asarray([0, 1, 2, 3, 0.5, 1.5, 2.5, 1, 2, 1.5])
y = np.asarray([0, 0, 0, 0, 1.0, 1.0, 1.0, 2, 2, 3.0])
triangles = [[0, 1, 4], [1, 2, 5], [2, 3, 6], [1, 5, 4], [2, 6, 5], [4, 5, 7],
[5, 6, 8], [5, 8, 7], [7, 8, 9]]
triang = mtri.Triangulation(x, y, triangles)
## Graficar la triangulación.
plt.triplot(triang, 'ko-')
plt.title('Triangular grid')
plt.show()
Interpolar datos usando el método lineal
El segundo paso es interpolar los datos usando el método lineal. Crearemos una malla cuadrada con espaciado regular y luego usaremos el método LinearTriInterpolator para interpolar los datos. Finalmente, graficaremos los datos interpolados.
## Interpolar a una malla cuadrada con espaciado regular.
z = np.cos(1.5 * x) * np.cos(1.5 * y)
xi, yi = np.meshgrid(np.linspace(0, 3, 20), np.linspace(0, 3, 20))
## Interpolar usando el método lineal.
interp_lin = mtri.LinearTriInterpolator(triang, z)
zi_lin = interp_lin(xi, yi)
## Graficar los datos interpolados.
plt.contourf(xi, yi, zi_lin)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Linear interpolation")
plt.show()
Interpolar datos usando el método cúbico
El tercer paso es interpolar los datos usando el método cúbico. Usaremos el método CubicTriInterpolator con el parámetro kind establecido en 'geom' o'min_E'. Finalmente, graficaremos los datos interpolados.
## Interpolar usando el método cúbico con kind=geom.
interp_cubic_geom = mtri.CubicTriInterpolator(triang, z, kind='geom')
zi_cubic_geom = interp_cubic_geom(xi, yi)
## Graficar los datos interpolados.
plt.contourf(xi, yi, zi_cubic_geom)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='geom'")
plt.show()
## Interpolar usando el método cúbico con kind=min_E.
interp_cubic_min_E = mtri.CubicTriInterpolator(triang, z, kind='min_E')
zi_cubic_min_E = interp_cubic_min_E(xi, yi)
## Graficar los datos interpolados.
plt.contourf(xi, yi, zi_cubic_min_E)
plt.plot(xi, yi, 'k-', lw=0.5, alpha=0.5)
plt.plot(xi.T, yi.T, 'k-', lw=0.5, alpha=0.5)
plt.title("Cubic interpolation, kind='min_E'")
plt.show()
Resumen
En este laboratorio, aprendimos a usar la biblioteca Matplotlib de Python para interpolar datos de una malla triangular a una malla cuadrada. Empezamos creando una triangulación y luego interpolamos los datos usando métodos lineales y cúbicos. Finalmente, graficamos los resultados.