Maison > Article > développement back-end > Comment trouver des interceptions exactes nulles et non nulles sur des tracés à l'aide de l'interpolation linéaire en Python ?
Trouver des 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.
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 zéro d'une courbe arbitraire :
<code class="python">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)</code>
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 toute valeur y non nulle (y0) en modifiant la ligne qui trouve les racines :
<code class="python">z = find_roots(x,y-y0)</code>
Intersections de deux 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 :
<code class="python">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")</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!