Seite 1 von 1

Polynom herleiten

Verfasst: Dienstag 20. Oktober 2020, 15:48
von Ozymandias
Guten Tag zusammen,

ich habe ein kleines Problem und zwar: ich habe die Kennlinie eines Sensors, die einen Polynom 3.ten Grades darstellt und tabelarisch definiert ist...
Was ich aber brauche, ist die Gleichung dazu, also Polynom selbst.

Ich habe dazu ein Plot erstellt, hier ist der Code:

Code: Alles auswählen

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

title = "Kennlinie"

Masse = np.asarray([-40, -30, -20, -15, -12, -10, -8, -6, 0, 6, 8, 10, 12, 15, 20, 30, 40, 50, 60, 75, 90, 105, 120, 140, 160, 190, 220, 250, 280, 310, 340, 370, 400, 440, 480, 560, 620, 640])
Zeit = np.asarray([669.59, 650.87, 627.72, 613.61, 604.00, 597.01, 589.49, 581.35, 552.79, 519.06, 507.73, 496.85, 486.61, 472.60, 452.62, 421.91, 398.76, 380.04, 364.21, 344.11, 327.02, 312.04, 298.64, 282.65, 268.31, 249.14, 232.09, 216.68, 202.56, 189.50, 177.31, 165.88, 155.09, 141.56, 128.88, 105.60, 89.47, 84.55])

print('Luftmasse anzahl', Masse.size)
print('Zeit anzahl', Zeit.size)

fig = plt.figure(title)
plt.plot(Zeit,Masse, marker='o', linestyle='solid')
plt.grid(0)
plt.legend(loc='upper left', frameon=True)
plt.xlabel('T [μs]')
plt.ylabel('Masse [kg/h]')
fig.set_size_inches(10, 5)
plt.show()
Es wird auch richtig gezeichnet und alles ist gut.

Aber die kriege ich das Polynom an sich dafür raus?

Vielen Dank im Voraus!

PS: ich bin ein absoluter Python-Anfänger... die C-Sprachen und Java sind kein Problem, aber Python.... hust.

Re: Polynom herleiten

Verfasst: Dienstag 20. Oktober 2020, 17:31
von einfachTobi
Zum Beispiel mit curve_fit(). Beispiele stehen unten in der Doku.

Re: Polynom herleiten

Verfasst: Dienstag 20. Oktober 2020, 17:39
von Ameinsenpeter
Eine andere Möglichkeit wäre evtl. mit np.polyfit. Polyfit gibt dir die Koeffizienten eines Polynoms gewünschten Grades.
Die Funktion np.poly1d() erzeugt nun dieses Polynom.

Code: Alles auswählen

koeff = np.polyfit(Zeit, Masse, 3) #Berechnet die Koeffizienten für ein Polynom 3. Grades
Poly= np.poly1d(koeff) #Erzeugt Polynom mit Koeffizienten von Polyfit
print(Poly) # Zeigt dir dein Polynom
plt.plot(Zeit, Poly(Zeit)) # Plot stimmt perfekt überein

Re: Polynom herleiten

Verfasst: Dienstag 20. Oktober 2020, 19:08
von Ozymandias
Hallo Ihr Beiden,

mit Polyfit hat es funktioniert! Danke schön.
Es ist ein kleines Projekt. Das Vorhaben ist einen Sensor (Sensor1, spannungsmoduliert) durch einen anderen Sensor (Sensor2, frequenzmoduliert) zu ersetzen.

Sensor1 misst eine physikalische Größe und gibt diese als Spannung aus. Die Kennlinie ist bekannt, lässt sich aber durch gar nichts vernünftig abbilden, also SPLine Interpolation.
Sensor2 misst dieselbe physikalische Größe und gibt diese als Frequenz aus. Die Gleichung dazu habe ich nun.

Mein Wandlungsweg wäre also: Frequenz --> physikalische Größe -> Spannung und das ganze mit möglichstwenig Abweichung...

Re: Polynom herleiten

Verfasst: Donnerstag 12. November 2020, 14:33
von webbygirl21
Rein interessehalber: ist ein Polynom dritten Grades eigentlich automatisch die beste Annäherung?