Détermination de l'intersection zéro d'une courbe
En Python, trouver le point exact où une courbe coupe l'axe y (y=0 ) peut être un défi. Un tableau numpy peut représenter une courbe, mais il ne fournit pas de méthode directe pour identifier les zéros.
Pour résoudre ce problème, une approche d'interpolation linéaire peut être utilisée. Le code suivant montre comment trouver le point d'intersection exact :
<code class="python">import numpy as np import matplotlib.pyplot as plt # Generate sample data N = 750 x = 0.4 + np.sort(np.random.rand(N)) * 3.5 y = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1 # Define a function to find roots (zeros) 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) # Find the intersection point z = find_roots(x, y) # Plot the curve and the intersection point plt.plot(x, y) plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4) plt.show()</code>
Ce script générera un tracé montrant la courbe et un marqueur au point d'intersection exact avec l'axe y.
Trouver des interceptions à des valeurs non nulles
Pour trouver des interceptions à des valeurs non nulles (par exemple, y0), la même approche peut être appliquée en trouvant les zéros de la courbe décalés de y0 :
<code class="python">y0 = 1.4 z = find_roots(x, y - y0) # ... plt.plot(z, np.zeros(len(z)) + y0)</code>
Intersection de deux courbes
Pour trouver le point d'intersection entre deux courbes, trouvez les zéros de la différence entre les deux courbes :
<code class="python">x = .4 + np.sort(np.random.rand(N)) * 3.5 y1 = (x - 4) * np.cos(x * 9.) * np.cos(x * 6 + 0.05) + 0.1 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!