"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo encontrar intersecciones exactas cero y distintas de cero en gráficos utilizando interpolación lineal en Python?

¿Cómo encontrar intersecciones exactas cero y distintas de cero en gráficos utilizando interpolación lineal en Python?

Publicado el 2024-11-04
Navegar:215

How to Find Exact Zero and Non-Zero Intercepts on Plots Using Linear Interpolation in Python?

Encontrar intersecciones de curvas con cero

En Python, obtener valores exactos del eje y de un gráfico puede ser un desafío cuando el valor no es un número entero. Este artículo aborda este problema y presenta una solución basada en interpolación lineal.

Dadas dos matrices (vertical_data y gradient(temperature_data)), se genera un gráfico usando plt.plot. Sin embargo, el gráfico muestra un valor de y cercano a cero, pero no exactamente.

Interpolación lineal para la estimación de raíces

Para estimar la raíz exacta de una matriz numpy , se puede utilizar un método de interpolación lineal simple. El siguiente código demuestra cómo encontrar los valores cero de una curva arbitraria:

import numpy as np

def find_roots(x, y):
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    return x[:-1][s]   np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s]) 1)

x = .4 np.sort(np.random.rand(750))*3.5
y = (x-4)*np.cos(x*9.)*np.cos(x*6 0.05) 0.1

z = find_roots(x,y)

plt.plot(x,y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)

Este código identifica las raíces de la curva y las traza como círculos en el valor y exacto de cero.

Intersecciones distintas de cero

Se puede utilizar el mismo enfoque para encontrar la intersección de una curva con cualquier y distinta de cero. -valor (y0) modificando la línea que encuentra las raíces:

z = find_roots(x,y-y0)

Dos intersecciones de curvas

El método de interpolación lineal también se puede utilizar para encontrar la intersección entre dos curvas. Al encontrar las raíces de la diferencia entre las dos curvas, podemos estimar su punto de intersección:

y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5   0.03)   0.3

z = find_roots(x,y2-y1)

plt.plot(x,y1)
plt.plot(x,y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")
Declaración de liberación Este artículo se reimprime en: 1729465881 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3