Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Warum schießt die Kurve nach oben?

Warum schießt die Kurve nach oben?

Schüler Gymnasium, 12. Klassenstufe

Tags: interpolation, Interpolationspolynom, kurven, newton

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
Gligow

Gligow aktiv_icon

12:27 Uhr, 12.04.2019

Antworten
Hallo liebe Community,

für die Schule bin ich gerade an einem Projekt, und zwar ist es meine Aufgabe aus 10 gewählten Punkten einen Graph zu erstellen mit Hilfe der Polynominterpolation. Ich habe mich für die Variante von Newton entschieden. Diese dauert bei 10 Punkten extrem lange und ist auch aufgrund der vielen Schreibarbeit sehr anfällig für Fehler, dennoch habe ich am Ende eine Kurve herausbekommen, deren Funktion ich im Folgenden auch einfügen werde.

Meine Punkte, aus welche ich die Kurve erstellen sollte lauteten:
(0\1415), (3\1288), (7\1254), (11\1120), (15\1172), (21\1097), (26\1132), (32\1127), (38\1129), (41\1165)

Die Funktion, die ich erhalten habe ist noch nicht gekürzt, entschuldig das bitte :-) Ich möchte ungern Fehler einbauen, die Ursache falscher Umformung sind, daher füge ich hier die originale Funktion an:

f(x)=1415-(1273)(x-0)
+(10921)(x-0)(x-3)
-(229352)(x-0)(x-3)(x-7)
+0,068495(x-0)(x-3)(x-7)(x-11)
-0,00495397(x-0)(x-3)(x-7)(x-11)(x-15)
+0,0002901(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)
-0,00001358646(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)(x-26)
+0,0000008670224(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)(x-26)(x-32)
-(1,324909110-7)(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)(x-26)(x-32)(x-38)



Tatsächlich ist die Kurve sehr passend für die ersten 7x Werte und geht auch genau durch die vorgegebenen Punkte. Ab dem 8. x Wert jedoch schießt die Kurve nach oben, und ich habe bisher keine logische Erklärung dafür gefunden. Ich bin mir eigentlich ziemlich sicher, dass es kein Rechenfehler ist und selbst wenn es einer wäre, dann wäre die Kurve doch lediglich ungenau, und würde nicht dieses Verhalten erkläre, oder?

Wenn mir jemand dabei helfen könnte mein Problem zu lösen, wäre ich äußerst dankbar :-)

Liebe Grüße,
Luca

Kurve Richtig händisch interpoliert

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Online-Nachhilfe in Mathematik
Antwort
ledum

ledum aktiv_icon

16:40 Uhr, 12.04.2019

Antworten
Hallo
dass eine Kurve mit x10 immer für große positive und negative Werte "nach oben schießt! liegt daran dass sehr bald für Werte > einer Grenze x10 der wesentliche Teil ist, also sozusagen übernimmt, die anderen Terme spielen eine immer kleinere Rolle. d.h. wenn man die 10 Punkt gern auf der Kurve haben will, kann sie dazwischen wilde Sprünge machen, du hast gluck, dass deine das nicht tut.
du hast daraus gelernt, was die meisten Leute machen, die eine Anzahl von Punkten haben, durch die sie eine Kurve legen, die plausibel ist: Man verwendet sogenannte "Splines", das heisst man nähert die Kurve nur stückweise an mit Polynomen dritten Grades, die an den Übergangsstellen dieselbe Steigung haben. Deine tapfere Arbeit ist also gut, aber nicht, das, was man meistens tut, weil Polynom 10 ten Grades eben immer nach kurzem stark steigt, also das wahrscheinliche Verhalten ausserhalb der ja meistens gemessenen Werte sehr falsch wiedergibt .
Gruß ledum
Antwort
anonymous

anonymous

09:35 Uhr, 13.04.2019

Antworten
Hallo
1.)
"Tatsächlich ist die Kurve sehr passend für die ersten 7 x-Werte"
Nur um Missverständnisse zu vermeiden. Ich habe das mal eben nachvollzogen und ahne, dass du eigentlich meinst:
Numerisch recht ordentlich stimmig sind die ersten acht Funktionswerte,
und auch der letzte Funktionswert f(41),
nur ausgerechnet der Funktionswert
f(38)_soll =1129
ist mit
f(38)_ist =11773
schon sehr auffällig daneben.

Das stimmt mich nachdenklich, ob nicht doch noch irgendwo ein Tippfehler, ein bug, eine Verwechslung, d.h. ein Eingabe- oder Programmierfehler vorliegt.

2.)
Aus numerischen Gründen ist es für solche Dinge immer sehr vorteilhaft zu normieren.

Betrachten wir deinen letzten Summanden in deiner letzten Formelzeile:
-1.3249e-07(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)(x-26)(x-32)(x-38)
Der erste Koeffizient -1.3249e-07
wird mit einer (ich nenn's mal eine) Fakultät großer Faktoren multipliziert:
(x-0)(x-3)(x-7)(x-11)(x-15)(x-21)(x-26)(x-32)(x-38)=3.347e+11

D.h. programmintern werden sehr große Zahlen mit sehr kleinen Zahlen verrechnet. Das führt sehr leicht zu numerischen Genauigkeitsproblemen.

Ein wenig Abhilfe bietet hier meist, die Größen zu normieren.
Ich lege mal beispielsweise nahe, die Substitution zu verwenden:
u=x25

Du siehst dann schnell, dass dann die u-Werte nur noch Werte zwischen
0... 1,64
an.
Selbst u9 nimmt dann nur noch alltagstauglichere und numerisch 'harmonischere'
1.649=85.8
an. Und hieraus werden auch deine Funktions-Koeffizienten und die Summanden alltags-tauglicher und numerisch weniger anfällig.

3.)
Ich will dich aber nicht zu komplex verwirren. Die Tatsache, dass ja schon neun von 10 Stützpunkten stimmt, soll dich ermutigen, zuerst mal 1.) nochmals zu hinterfragen und sicher zu stellen, dass nicht einfach irgend ein Übertragungs-Schusslichkeit dein Kopfzerbrechen bereitet und Erfolgsgefühle verzögert...

Antwort
maxsymca

maxsymca

12:59 Uhr, 13.04.2019

Antworten
Ich beleuchte mal eine andere Seite.
Die Frage ist nicht so sehr was "vor" und "nach" den Punkten abgeht, sondern was zwischen den Punkten passiert: Mit GeoGebra ein Schnell-Schuss

Eine Polynominterpolation (sollte in etwa Dein Ergebnis sein)

L = {(0, 1415), (3, 1288), (7, 1254), (11, 1120), (15, 1172), (21, 1097), (26, 1132), (32, 1127), (38, 1129), (41, 1165)}

polynom(L)
f(x)=(((-500856320351)) / 14919775084966752000 * x^(9)) + (30267670824791 / 4973258361655584000 * x^(8)) - (686279232914659 / 1491977508496675200 * x^(7)) + (140096817865872941 / 7459887542483376000 * x^(6)) - (743420139607268663 / 1657752787218528000 * x^(5)) + (18882338791258280977 / 2983955016993350400 * x^(4)) - (5720438118046111349 / 113028599128536000 * x^(3)) + (85211473761934408891 / 414438196804632000 * x^(2)) - (42237138946522769 / 123344701429950 * x) + 1415

und ein Regressionspolynom (Minimierung der Abweichungen)

TrendPoly(L, 3)
p(x) = -0.012x³ + 1.09544x² - 30.9619x + 1394.87794

Siehe Bild1
und beachte wie das (rote) Polynom f von Punkt zu Punkt schwingt - im Vergleich dazu p(x) - dass die Punkte nicht genau trifft, aber den Gesamtverlauf "geauer" beschreibt.
Hast Du auch GeoGebra angewendet? Dann betrachte Dir Deine Funktion mal im Achsenverhältnis 1:1 - da siehst Du nur noch steile Berge und Täler - die Funktion schwingt zwischen den Punkte fürchterlich - nichts was zu einem Sachproblem hinter Deinen Werten passen würde?

und zum Schluss noch eine Splineinterpolation wie ledum angegeben hat.

Siehe Bild2


Window_2019-04-13_12-51-26
Window_2019-04-13_12-58-53
Antwort
Roman-22

Roman-22

18:18 Uhr, 13.04.2019

Antworten
> Ich bin mir eigentlich ziemlich sicher, dass es kein Rechenfehler ist und selbst wenn es einer wäre, dann wäre die Kurve doch lediglich ungenau, und würde nicht dieses Verhalten erkläre, oder?

Naja, und ich bin mir ziemlich sicher, dass du dich sehr wohl verrechnet hast und dass selbst eine kleine Abweichung zB im letzten Koeffizienten sehr große Auswirkungen auf die Kurvenform haben kann.

Was du da mit Newton machst ist eine Polynominterpolation, d.h. du erhältst eine Polynomfunktion 9. Grades, deren Graph die gegebenen Punkte genau enthält. Eine solche Polynomfunktion höheren Grades neigt aber leider zum Überschwingen.
Du schreibst ja nicht, um welche Anwendung es geht, aber oft ist eine Regression die bessere Wahl, wenn es zB um Messdaten geht oder um Trendanalysen. Dabei versucht man, eine Funktion beliebiger Bauart (zB eine lineare Funktion oder eine Exponentialfunktion, oder ....) so zu finden, dass deren Graph "möglichst gut" zu den gegebenen Punkten passt. IdR verläuft der Graph aber dann durch keinen einzigen dieser Punkte genau.

Im Anhang findest du die richtigen Werte für dein Newton-Polynom - wie du siehst, stimmt bereits der dritte Koeffizient nicht mehr überein.
Außerdem häng ich dir Bilder der Graphen vom Interpolation-Polynom und von zwei verschiedenen Regressionen dran.

Zum herumspielen mit Interpolations- und vor allem auch Regressionskurven empfehle ich das Programm "CurveExpert Professional". Es handelt sich dabei zwar um ein kostenpflichtiges Programm, aber die eingeschränkte kostenlose Trial-Version reicht zum Herumprobieren völlig aus.


B
B0
B1
B2
Frage beantwortet
Gligow

Gligow aktiv_icon

18:33 Uhr, 14.04.2019

Antworten
Vielen, vielen Dank für eure Hilfe! Ich habe dank euch nun eine vernünftige Interpolationskurve erstellen können und mein Fehler in meinem Newtonschen Interpolationsverfahren entdeckt, sodass nun alle Werte übereinstimmen.
Ohne eure Hilfe hätte ich das nicht schaffen können; Vielen Dank :-)