„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie finde ich mithilfe der linearen Interpolation in Python exakte Null- und Nicht-Null-Achsenabschnitte in Diagrammen?

Wie finde ich mithilfe der linearen Interpolation in Python exakte Null- und Nicht-Null-Achsenabschnitte in Diagrammen?

Veröffentlicht am 04.11.2024
Durchsuche:346

How to Find Exact Zero and Non-Zero Intercepts on Plots Using Linear Interpolation in Python?

Kurvenschnittpunkte mit Null finden

In Python kann es schwierig sein, genaue Y-Achsenwerte aus einem Diagramm zu erhalten, wenn der Wert kein Wert ist ganze Zahl. Dieser Artikel befasst sich mit diesem Problem und stellt eine Lösung basierend auf linearer Interpolation vor.

Angesichts zweier Arrays (vertical_data und gradient(temperature_data)) wird mit plt.plot ein Diagramm erstellt. Das Diagramm zeigt jedoch einen y-Wert an, der nahe bei, aber nicht genau Null liegt.

Lineare Interpolation für die Wurzelschätzung

Zum Schätzen der genauen Wurzel eines Numpy-Arrays kann eine einfache lineare Interpolationsmethode verwendet werden. Der folgende Code zeigt, wie man die Nullwerte einer beliebigen Kurve findet:

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)

Dieser Code identifiziert die Wurzeln der Kurve und stellt sie als Kreise dar beim genauen y-Wert von Null.

Achsenabschnitte ungleich Null

Derselbe Ansatz kann zum Suchen verwendet werden der Schnittpunkt einer Kurve mit einem beliebigen y-Wert ungleich Null (y0) durch Modifizieren der Linie, die die Wurzeln findet:

z = find_roots(x,y-y0)

Zwei Kurvenschnittpunkte

Die lineare Interpolationsmethode kann auch verwendet werden, um den Schnittpunkt zwischen zwei Kurven zu finden. Indem wir die Wurzeln der Differenz zwischen den beiden Kurven finden, können wir ihren Schnittpunkt schätzen:

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")
Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729465881 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3