Kurve fitten *matplotlib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ilonar
User
Beiträge: 13
Registriert: Donnerstag 13. Dezember 2018, 14:05

Moin!

Ich möchte gerne eine Kurve fitten und plotten. Leider bekomme ich dabei eine Fehlermeldung, die ich nicht ganz kapiere.

Hier ist mein Skript:

Code: Alles auswählen

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np

def func(x, a, b, c):
    return a * np.exp(-b * x) + c

xdata = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
ydata = [1.638, 1.496, 1.392, 1.306, 1.232, 1.202, 1.171, 1.057]

popt, pcov = curve_fit(func, xdata, ydata)
popt

plt.plot(xdata, func(xdata, *popt), 'r-') 
 
Die Fehlermeldung kommt dann in der Zeile "return a * np.exp(-b * x) + c"

Code: Alles auswählen

TypeError: can't multiply sequence by non-int of type 'numpy.float64'

<Figure size 432x288 with 0 Axes>
Ich stehe gerade ein bisschen auf dem Schlauch, vielleicht weiß ja einer von euch weiter.
Danke sehr!

Viele Grüße
Ilona
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Schau Dir doch mal an, mit welchen Datentypen Du die Funktion `func` aufrufst, dann sollte es klar sein. Eine Liste kann man nicht mit einer Kommazahl multiplizieren (und das Multiplizieren mit einer Ganzzahl hat eine ganz andere Bedeutung).
Du willst wohl xdata in ein numpy-Array umwandeln.
ilonar
User
Beiträge: 13
Registriert: Donnerstag 13. Dezember 2018, 14:05

Sirius3 hat geschrieben: Samstag 23. Mai 2020, 18:06 Schau Dir doch mal an, mit welchen Datentypen Du die Funktion `func` aufrufst, dann sollte es klar sein. Eine Liste kann man nicht mit einer Kommazahl multiplizieren (und das Multiplizieren mit einer Ganzzahl hat eine ganz andere Bedeutung).
Du willst wohl xdata in ein numpy-Array umwandeln.
ach.. klar! Danke dir!
Antworten