„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 kann ich in Python eine exponentielle und logarithmische Kurvenanpassung durchführen?

Wie kann ich in Python eine exponentielle und logarithmische Kurvenanpassung durchführen?

Veröffentlicht am 08.11.2024
Durchsuche:391

How can I perform exponential and logarithmic curve fitting in Python?

Kurvenanpassung: Exponentielle und logarithmische Ansätze in Python

Während die Polynomkurvenanpassung in Python mit polyfit() leicht verfügbar ist, werden in diesem Handbuch Methoden für exponentielle und logarithmische Kurven untersucht Anpassung.

Logarithmische Anpassung

Um eine Linie der Form y = anzupassen A B log x, führen Sie einfach eine Polynomanpassung von y gegen log x durch.

import numpy as np

x = np.array([1, 7, 20, 50, 79])
y = np.array([10, 19, 30, 35, 51])

coeffs = np.polyfit(np.log(x), y, 1)
print("y ≈", coeffs[1], "log(x)  ", coeffs[0])  # y ≈ 8.46 log(x)   6.62

Exponentielle Anpassung

Um a anzupassen Linie der Form y = Ae^{Bx}, nehmen Sie den Logarithmus beider Seiten und führen Sie eine Polynomanpassung von log y gegen durch x.

x = np.array([10, 19, 30, 35, 51])
y = np.array([1, 7, 20, 50, 79])

coeffs = np.polyfit(x, np.log(y), 1)
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 0.670 * exp(0.105 * x)")

Für eine bessere Genauigkeit , nutzen Sie Gewichtungen proportional zu y mithilfe des Schlüsselworts w in polyfit().

coeffs = np.polyfit(x, np.log(y), 1, w=np.sqrt(y))
print("y ≈ exp(", coeffs[1], ") * exp(", coeffs[0], " * x) = 4.12 * exp(0.0601 * x)")

Beachten Sie, dass die meisten Tabellenkalkulations- und wissenschaftliche Taschenrechneranwendungen verwenden eine ungewichtete Formel für die exponentielle Regression. Vermeiden Sie daher Gewichtungen, wenn Kompatibilität gewünscht wird.

Verwenden scipy.optimize.curve_fit

Wenn Scipy verfügbar ist, verwenden Sie Curve_fit zum Anpassen von Modellen ohne Transformationen.

from scipy.optimize import curve_fit

# Logarithmic fitting
coeffs, _ = curve_fit(lambda t, a, b: a   b * np.log(t), x, y)
print("y ≈", coeffs[1], "log(x)  ", coeffs[0])  # y ≈ 6.62   8.46 log(x)

# Exponential fitting with initial guess
coeffs, _ = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(4, 0.1))
print("y ≈", coeffs[0], "exp(", coeffs[1], " * x) = 4.88 exp(0.0553 x)")

Durch die Bereitstellung einer anfänglichen Vermutung kann Curve_fit erreichen das gewünschte lokale Minimum für die exponentielle Anpassung, was zu einer genaueren Anpassung als die transformierte Polyfit-Methode führt.

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