Bestimmen des Nullschnittpunkts einer Kurve
In Python das Finden des genauen Punkts, an dem eine Kurve die y-Achse schneidet (y=0 ) kann eine Herausforderung sein. Ein Numpy-Array stellt möglicherweise eine Kurve dar, bietet jedoch keine direkte Methode zur Identifizierung von Nullen.
Um dieses Problem zu beheben, kann ein linearer Interpolationsansatz verwendet werden. Der folgende Code zeigt, wie man den genauen Schnittpunkt findet:
<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>
Dieses Skript generiert ein Diagramm, das die Kurve und eine Markierung am genauen Schnittpunkt mit der y-Achse zeigt.
Achsenabschnitte bei Werten ungleich Null finden
Um Achsenabschnitte bei Werten ungleich Null (z. B. y0) zu finden, kann der gleiche Ansatz angewendet werden, indem die Nullstellen der um y0 verschobenen Kurve ermittelt werden:
<code class="python">y0 = 1.4 z = find_roots(x, y - y0) # ... plt.plot(z, np.zeros(len(z)) + y0)</code>
Schnittpunkt zweier Kurven
Um den Schnittpunkt zwischen zwei Kurven zu finden, suchen Sie die Nullstellen der Differenz zwischen den beiden Kurven:
<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>
Das obige ist der detaillierte Inhalt vonWie finde ich die Schnittpunkte einer Kurve mit der Y-Achse und anderen Kurven in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!