Ich habe ein Skript (50 Zeilen) verfasst, was zu gegebenen 4 Punkten eine Kurve zeichnet, die durch diese Punkte verläuft. Das soll nun für beliebig viele Punkte geschehen.
Dazu muss ein lineares Gleichungssystem gelöst werden, dessen Koeffizentenmatrix mit np.vander() unabhäng von der Punkte-Anzahl erzeugt werden kann. Die Lösung sei x, hier:
t = np.linspace(-20,20,100)
y = pow(t,3)*x[3] + pow(t,2)*x[2] + t*x[1] + x[0]
Um aber die Kurve bei 5 Punten zu plotten, müsste das ndarray y um pow(t,4)*x[4] ergänzt werden. Kann man dort etwa einen String 'pow(t,i)*x' einfügen?
Hat jemand Interesse an solchen Sachen? Dann müsste ich lernen, wie man im Forum den Code übermitteln kann.
np.ndarray ergänzen
Das gibt es alles fertig:
https://numpy.org/doc/stable/reference/ ... lyfit.html
https://numpy.org/doc/stable/reference/ ... lyval.html
https://numpy.org/doc/stable/reference/ ... lyfit.html
https://numpy.org/doc/stable/reference/ ... lyval.html
Da wird nichts genährt, sondern ein Optimierproblem gelöst. Und wenn Du so viele Ordnungen wie Punkte hast, dann geht das Polynom exakt durch alle Punkte. Und polyval ist egal, wie Du auf die Koeffizienten gekommen bist.
Optimierung bedeutet erstmal nur, dass man für eine gegebene Merit-Funktion ein Minimum finden will, ob das nun über ein Näherungsverfahren (oder wie hier algebraisch) gelöst wird, ist eine andere Frage.
Und wie schon geschrieben, ist im trivialen Fall der Merit-Funktionswert 0 möglich, also dass das Polynom durch alle Punkte exakt geht.
Wenn es also passende Funktionen für Dein Problem gibt, dann solltest Du da nicht selbst was erfinden, sondern diese nutzen.
Und wie schon geschrieben, ist im trivialen Fall der Merit-Funktionswert 0 möglich, also dass das Polynom durch alle Punkte exakt geht.
Wenn es also passende Funktionen für Dein Problem gibt, dann solltest Du da nicht selbst was erfinden, sondern diese nutzen.