Interpolación de una malla triangular a una malla cuadrada

Beginner

This tutorial is from open-source community. Access the source code

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.