El asombroso mundo de las curvas de nivel y Python

El asombroso mundo de las curvas de nivel y Python

Una curva de nivel es un concepto que resulta de la intersección de una superficie:

Z = f(x,y) con un plano Z = k donde k es una constante.


Cuando me tope en análisis II con este concepto me preguntaba: ¿Para qué? ¿Por qué es útil comprender esto? ¿Dónde se aplica? Las respuestas a estas preguntas no llegaron de forma inmediata pero hoy en día encuentro varios campos de aplicación y sin duda es una herramienta teórica que es útil comprender. Recuerden que la teoría permite expandir tu conocimiento y te va a dar herramientas para abstraer conceptos y comprender mejor problemáticas futuras.

Algunos campos de aplicación:

  • Topografía y cartografía

La curva de nivel es una representación plana de una superficie tridimensional intersectada por un plano constante

  • Mecánica de fluidos: Utilizadas para representar lineas isobaras (igual presión) o igual velocidad (perfiles) en el flujo de un fluido. Es muy útil para diseño de tuberias, perfiles de alas de avión, etc.
  • Lineas equipotenciales en campos eléctricos y magnéticos


Pero también resulta útil comprenderlas en el contexto de Machine Learning. Por ejemplo, en la visualización de superficies de costo en problemas de optimización o bien para analizar el comportamiento de modelos en espacios de características bidimensionales. Estas curvas de nivel pueden representar la frontera de decisión de un modelo.


Creo que es más fácil visualizar el concepto con un ejemplo así que voy a acudir al hermoso paraboloide en el espacio:


z = x^2 + y^2


Gráfica del paraboloide en el espacio


Planos trazados en z=2, z=3, z=4, z=6


Intersecciones / curvas de nivel entre el paraboloide y los planos de arriba


En definitiva, la intersección entre un plano constante (z = k) y una superficie, será una curva de nivel f: R^2 -> R, es decir, esta curva será plana y a cualquier punto en el que nos paremos de ese plano, nos devolverá un valor Real.

Es interesante ver como podemos resolver este problema utilizando 🐍.


Para esto, tomaremos nuestra función de arriba y la llamaremos g(x,y)

Y la tomaremos en el intervalo D = [-2;2] x [-2;2]

g(x,y) = x^2 + y^2

import numpy as np
import matplotlib.pyplot as plt        
xx = np.linspace(-2, 2)
yy = np.linespace(-2,2)
X, Y = np.meshgrid(xx, yy)
Z = X**2 + Y**2        
plt.contour(X, Y, Z)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Representación de f(x,y)')
plt.show()        


Representación de las curvas de nivel


Ahora tomemos otra función más divertida y ver como podemos dibujar los contornos.

f(x,y) = cos(-xy) + sinh(x+ y + 1) + log((3+ x^2) / (1+y^2)

Y la tomaremos el mismo intervalo D = [-2;2] x [-2;2]

(esta función la tome prestada de nuestra querida internet)

Elegimos este intervalo porque por fuera la función se comporta de forma medio extraña, podes dibujarla en geogebra y ver como es el gráfico

Al igual que arriba, vamos trabajar con numpy para crear el mesh y tener una representación de las funciones.

import numpy as np
import matplotlib.pyplot as plt
from numpy import cos, sinh, log         

xx = np.linspace(-2, 2)
yy = np.linespace(-2,2)
X, Y = np.meshgrid(xx, yy)
Z = cos(-10 * X * Y) + sinh(X + Y) - log((3 + X ** 2) / (1 + Y ** 2))

plt.contour(X, Y, Z)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Representación de f(x,y)')
plt.show()        


Curvas de nivel para f(x,y)
plt.contourf(X, Y, Z, 15)
plt.show()        

Y también podemos trazar contornos


Inicia sesión para ver o añadir un comentario.

Más artículos de Franco Di Leo

  • P-Value

    P-Value

    Background previo Para entender el concepto de p-value en el ámbito de estadística general, tenemos que entender…

    2 comentarios
  • useEvent Hook

    useEvent Hook

    Como ya saben, antes de ir a la solución, primero vamos a entender el problema. En este artículo vas a encontrar…

    5 comentarios
  • A/B Testing

    A/B Testing

    Salimos a producción con un feature que creemos que la va a romper, el Feature X nos va a ayudar a convertir mejor y va…

  • Compound Components Pattern en React

    Compound Components Pattern en React

    Antes de llegar a la solución, me gustaría navegar sobre el problema. Imaginemos que tenemos que compartir un estado o…

    2 comentarios
  • Auditoria de Identidad

    Auditoria de Identidad

    La primera vez que me topé con este concepto, me quedé sorprendido. A veces creemos que para destacar en nuestro sector…

    1 comentario
  • La cámara de Eco

    La cámara de Eco

    Okey, arranquemos con el problema y dando un poco de contexto. Estas últimas 3 semanas pasé mucho tiempo con el celular…

    1 comentario
  • Outliers y diagramas de caja

    Outliers y diagramas de caja

    ¿Qué son los outliers? Spoiler alert: Podes ver este concepto en mi video de Youtube https://www.youtube.

    1 comentario

Otros usuarios han visto

Ver temas