„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 führen Sie in Python eine exponentielle und logarithmische Kurvenanpassung über die Polynomanpassung hinaus durch?

Wie führen Sie in Python eine exponentielle und logarithmische Kurvenanpassung über die Polynomanpassung hinaus durch?

Veröffentlicht am 20.11.2024
Durchsuche:815

How do you perform exponential and logarithmic curve fitting in Python beyond polynomial fitting?

Exponentielle und logarithmische Kurvenanpassung in Python über die Polynomanpassung hinaus

Zusätzlich zur Polynomanpassung, die in Python über die Funktion polyfit() verfügt, gibt es Techniken zur exponentiellen Anpassung und logarithmische Kurven.

Logarithmische Kurvenanpassung

Um eine Kurve an das Modell y = A B log x anzupassen, können wir die Daten transformieren, indem wir den Logarithmus beider Seiten nehmen, was zu log y = führt log A B log x. Durch Anpassen von log y an log x mit polyfit() erhalten wir die Koeffizienten log A und B.

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("Coefficients:", coeffs)
print("y ≈", coeffs[1], " ", coeffs[0], "log(x)")

Exponentielle Kurvenanpassung

Um eine Kurve an das Modell y anzupassen = Ae^(Bx), können wir den Logarithmus beider Seiten nehmen, was zu log y = log A B x führt. Die Parameter können dann durch Anpassen von log y an x ​​mithilfe von polyfit() ermittelt werden.

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("Coefficients:", coeffs)
print("y ≈", np.exp(coeffs[1]), "*", "exp(", coeffs[0], "x)")

Hinweis zur Vorspannung bei der ungewichteten Anpassung

Es ist erwähnenswert, dass eine ungewichtete Anpassung (ohne Berücksichtigung der Gewichtungen der Datenpunkte) zu einer Verzerrung hin zu kleinen Werten führen kann, insbesondere bei der exponentiellen Kurvenanpassung. Um dies zu mildern, können Gewichte proportional zu den y-Werten in den Anpassungsprozess einbezogen werden.

Scipy für die Kurvenanpassung verwenden

Scipy stellt die Funktion „curve_fit()“ zur Durchführung einer nichtlinearen Kurvenanpassung bereit. Dadurch können wir jedes Modell direkt und ohne Transformationen anpassen.

from scipy.optimize import curve_fit

# Logarithmic curve fitting
popt, pcov = curve_fit(lambda t, a, b: a   b * np.log(t), x, y)
print("Coefficients:", popt)
print("y ≈", popt[1], " ", popt[0], "log(x)")

# Exponential curve fitting
popt, pcov = curve_fit(lambda t, a, b: a * np.exp(b * t), x, y, p0=(1, 0.1))
print("Coefficients:", popt)
print("y ≈", popt[0], "*", "exp(", popt[1], "x)")
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