Wie finde ich mit Python genau Schnittpunkte einer Kurve mit y = 0?

Patricia Arquette
Freigeben: 2024-10-21 07:17:30
Original
536 Leute haben es durchsucht

How to Accurately Find Intersection Points of a Curve with y = 0 Using Python?

Identifizieren der Schnittpunkte einer Kurve mit y = 0

Im Kontext des Python-Plots mit NumPy-Arrays ist der genaue Wert auf der Die Berechnung der Y-Achse, bei der sich eine Kurve mit y = 0 schneidet, kann eine schwierige Aufgabe sein. In diesem Artikel wird eine Methode zur genauen Bestimmung dieser Schnittpunkte besprochen und dabei die Einschränkungen bestehender Wurzelfindungstechniken angegangen.

Zunächst definieren wir unser Diagramm mithilfe von NumPy-Arrays:

<code class="python">import numpy as np
import matplotlib.pyplot as plt
vertical_data = ...
gradient = ...
plt.plot(gradient, vertical_data)
plt.show()</code>
Nach dem Login kopieren

Jetzt Angenommen, wir möchten den Nullwert der Kurve ermitteln. Herkömmliche Wurzelfindungsalgorithmen liefern aufgrund der Einschränkungen der Gleitkommagenauigkeit oft ungenaue Ergebnisse. Um dies zu überwinden, verwenden wir eine einfache lineare Interpolationstechnik:

<code class="python">import numpy as np

def find_roots(x, y):
    # Compute the sign differences
    s = np.abs(np.diff(np.sign(y))).astype(bool)
    # Perform linear interpolation at sign changes
    return x[:-1][s] + np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s])+1)</code>
Nach dem Login kopieren

Diese Funktion verwendet die x- und y-Arrays als Eingabe und lokalisiert die Schnittpunkte, an denen die y-Werte die Nullmarke schneiden. Wir wenden diese Funktion auf unsere Daten an und zeichnen die Ergebnisse auf:

<code class="python">z = find_roots(gradient, vertical_data)

plt.plot(gradient, vertical_data)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
plt.show()</code>
Nach dem Login kopieren

Durch Umkehren der Rollen von x und y können wir die Schnittpunkte entlang der x-Achse bestimmen:

<code class="python">plt.plot(vertical_data, gradient)
plt.plot(np.zeros(len(z)), z, marker="o", ls="", ms=4)
plt.show()</code>
Nach dem Login kopieren

Darüber hinaus ermöglicht die vorgestellte Methode die Suche nach Schnittpunkten bei y-Werten ungleich Null. Subtrahieren Sie einfach den gewünschten y-Wert von der Kurve, bevor Sie die Funktion „find_roots“ anwenden:

<code class="python">y0 = 1.4
z = find_roots(gradient, vertical_data - y0)
plt.plot(z, np.zeros(len(z))+y0)</code>
Nach dem Login kopieren

Um den Schnittpunkt zwischen zwei Kurven zu bestimmen, berechnen Sie schließlich die Differenz zwischen den Kurven und wenden Sie die Funktion „find_roots“ an, um den Schnittpunkt zu lokalisieren Punkte:

<code class="python">y2 = ...
z = find_roots(gradient, y2 - y1)
plt.plot(gradient, y1)
plt.plot(gradient, y2, color="C2")
plt.plot(z, np.interp(z, gradient, y1), marker="o", ls="", ms=4, color="C1")</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie finde ich mit Python genau Schnittpunkte einer Kurve mit y = 0?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!