"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment trouver des interceptions exactes nulles et non nulles sur des tracés à l'aide de l'interpolation linéaire en Python ?

Comment trouver des interceptions exactes nulles et non nulles sur des tracés à l'aide de l'interpolation linéaire en Python ?

Publié le 2024-11-04
Parcourir:326

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

Recherche d'intersections de courbes avec zéro

En Python, obtenir des valeurs exactes de l'axe Y à partir d'un tracé peut être difficile lorsque la valeur n'est pas un nombre entier. Cet article aborde ce problème et présente une solution basée sur l'interpolation linéaire.

Étant donné deux tableaux (vertical_data et gradient(temperature_data)), un tracé est généré à l'aide de plt.plot. Cependant, le tracé affiche une valeur y proche de zéro, mais pas exactement zéro.

Interpolation linéaire pour l'estimation de la racine

Pour estimer la racine exacte d'un tableau numpy , une méthode d'interpolation linéaire simple peut être utilisée. Le code suivant montre comment trouver les valeurs nulles d'une courbe arbitraire :

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)

Ce code identifie les racines de la courbe et les trace sous forme de cercles à la valeur y exacte de zéro.

Interceptions non nulles

La même approche peut être utilisée pour trouver l'intersection d'une courbe avec tout y non nul -value (y0) en modifiant la ligne qui trouve les racines :

z = find_roots(x,y-y0)

Deux intersections de courbes

La méthode d'interpolation linéaire peut également être utilisée pour trouver l'intersection entre deux courbes. En trouvant les racines de la différence entre les deux courbes, on peut estimer leur point d'intersection :

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")
Déclaration de sortie Cet article est réimprimé à l'adresse : 1729465881. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3