Not logged in. · Lost password · Register

Johanno
Johanno
Member since Mar 2017
24 posts
Subject: Newton polynom
Ich bekomme die Aufgabe 1c nicht hin.
Laut Wikipedia: https://de.wikipedia.org/wiki/Polynominterpolation#Ansatz:_Newton-Basis
ist N_0(x) = 1
Somit müsste das erste Feld immer Koeffizent * 1 sein.

(("newton_polynomial", np.array([1., 2., 3.]), np.array([0., 1., 1.])), np.poly1d([3., -1., 1.])),

coefficients: 1
x = 0
also N_0(0) = 1
1*1 = 1

aber hier wird 3 erwartet.

Entweder hab ich die Aufgabe total falsch verstanden oder da ist ein Fehler drin.
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
286 posts
Ich vermute, ohne das konkret nachzurechnen, dass das Problem in der Verwendung von poly1d liegt. Dort sollen die Koeffizienten in absteigender Rangfolge angegeben werden.
Zudem ist zu beachten, dass sie der Koeffizient für x^0 nicht nur aus dem Koeffizient c0 und dem Newtonpolynom N_0 zusammensetzt, sondern auch mit aus den x^0 Anteilen der ausmultiplizierten Terme für die anderen Koeffizienten.

Am Beispiel:
c0+c1*(x-x0) = c1x+(c0-c1*x0); => Poly1d([c1,(c0-c1*x0]);

(Alle Angaben sind wie immer ohne Gewähr.)
I hate Forumssignaturen
Johanno
Johanno
Member since Mar 2017
24 posts
Ich versteh es immer noch nicht.

müsste man nicht einfach
Poly1d([c2 * (x_2 - x_0)(x_2 - x_1), c1 * (x_1 - x_0), c0])
zurückgeben?
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
286 posts
Das macht in meinen Augen eher wenig Sinn. Wie willst du das aus der Formel für das Newton Interpolationspolynom herleiten?
I hate Forumssignaturen
Johanno
Johanno
Member since Mar 2017
24 posts
Also Ich glaube zu wissen was man machen muss, aber finde keine brauchbare Möglichkeit das in Code zu bekommen.
Man muss den Newton ansatz irgendwie Umformen, so dass man dann die aus multiplizierte Polynomform für das Poly1d hat, aber das Horner-Schema arbeitet ja ganz anders und ansonsten könnte ich höchstens händisch den Mist schriftlich ausrechenen für x^3 x^4 usw. aber das kann ja wohl kaum der Sinn der Sache sein.
Ich scheitere hier am Matheteil xD nicht unbedingt am programierteil. Vielleicht kann man es ja irgendwie mit linalg lösen aber kp, Keine Lust mehr.
Destranix
Erfahrener Webhelfer und Um-Rat-Frager
Member since Sep 2018
286 posts
Also Ich glaube zu wissen was man machen muss, aber finde keine brauchbare Möglichkeit das in Code zu bekommen.
Rekursion. So habe ich das zumidnest gelöst.
Der Rekursionsfall ist eigentlich ganz einfach, du musst lediglich das Polynom aus dem vorherigen Aufruf mit Werten multiplizieren und einen neuen Wret einfügen.

Ich rate dazu, für ein Polynom mit 3 Koeffizienten einmal händisch das polynom auszumultiplizieren und die Koeffizenten mit denen deselben Polynoms zu vergleichen, wenn du dieses nur für die letzten zei Koeffizienten Ausrechnest(als wäre c==c1 und C1=c2).
I hate Forumssignaturen
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Datenschutz | Kontakt
Powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2011 by Yves Goergen