Heim  >  Artikel  >  Backend-Entwicklung  >  Wie finde ich die Schnittpunkte einer Kurve mit der Y-Achse und anderen Kurven in Python?

Wie finde ich die Schnittpunkte einer Kurve mit der Y-Achse und anderen Kurven in Python?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 07:12:02732Durchsuche

How to Find the Intersection Points of a Curve with the Y-Axis and Other Curves in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn