Spline laut Beispiel lösen < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Guten Abend liebe Mathe Gemeinde,
bitte lasst euch nicht von der Länge dieses Beitrages abschrecken. Ich habe lediglich versucht alles einigermaßen nachvollziehbar zu erklären.
Zur Zeit beschäftige ich mich mit der Thematik der kubischen Splines.
Normaler Weise benötigt man ein lineares Gleichungssytem mit 4*(n-1) Gleichungen, um die entsprechenden Unbekannten zu berechnen. Mittels deren Hilfe ist es dann Möglich die kubischen Funktionen [mm] (a*x^3+b*x^2+c*x+d) [/mm] für das entsprechende Intervall aufzustellen.
Nun Habe ich ein Beispiel gefunden, welches das Gleichungssystem einfacher definiert und somit wesentlich schneller berechenbar ist. Ich habe das ganze mal nachgerechnet, erhalte aber falsche Ergebnisse. Also entweder kann ich den Algorithmus nicht ganz nachvollziehen oder ich habe mich verrechnet.
Der Algorithmus den ich meine, stammt aus diesem Buch:
siehe Kapitel 20.1.1 Seite 7
Demnach berechnet sich
[mm] d_{i}=y_{i}
[/mm]
[mm] c_i=1/(x_{i+1}-x_i)*(y_{i+1}-y_i)-(x_{i+1}-x_i)/3*(b_{i+1}+2*b_i)
[/mm]
[mm] a_i=1/(3*(x_{i+1}-x_i))*(b_{i+1}-b_i)
[/mm]
[mm] b_i [/mm] wird über das Gleichungssytem berechnet wobei die Matrix [mm] A=\pmat{ 2*(x_2-x_1+x_3-x_2) & x_3-x_2 & 0 \\ x_3-x_2 & 2*(x_3-x_2+x_4-x_3) & x_4-x_3 \\ 0 & x_4-x_3 & 2*(x_4-x_3+x_5-x_4)}
[/mm]
Das Beispiel nutzt folgende Punkte (1,1), (4,3), (5,2), (6,4), (9,1) und das entsprechende Gleichungssystem
[mm] b_1=0
[/mm]
[mm] \pmat{ 8 & 1 & 0 \\ 1 & 4 & 1 \\ 0 & 1 & 8}\vektor{b_2\\b_3\\b_4}=\vektor{-5\\9\\-9}
[/mm]
Ich habe folgende vier Funktionen aufgestellt:
[mm] f_1=(1/(3*(x1-x0))*(b_1))*x^3+(1/(x1-x0)*(y1-y0)-(x1-x0)/3*(b_1))*x+y0
[/mm]
[mm] f_1=-0,10926*x^3+0*x^2+1,65*x+1
[/mm]
[mm] f_1=-59/540*x^3+0*x^2+33/20*x+1
[/mm]
[mm] f_2=(1/(3*(x2-x1))*(b_2-b_1))*x^3+b_1*x^2+(1/(x2-x1)*(y2-y1)-(x2-x1)/3*(b_2+2*b_1))*x+y1
[/mm]
[mm] f_2=1,28333*x^3-0,98333*x^2-1,3*x+3
[/mm]
[mm] f_2=77/60*x^3-59/60*x^2-13/10*x+3
[/mm]
[mm] f_3=(1/(3*(x3-x2))*(b_3-b_2))*x^3+b_2*x^2+(1/(x3-x2)*(y3-y2)-(x3-x2)/3*(b_3+2*b_2))*x+y2
[/mm]
[mm] f_3=-1,45*x^3+2,86667*x^2+0,58333*x+2
[/mm]
[mm] f_3=-29/20*x^3+43/15*x^2+7/12*x+2
[/mm]
[mm] f_4=(1/(3*(x4-x3))*(-b_3))*x^3+b_3*x^2+((x3-x2)*(b_3+b_2)+(1/(x3-x2)*(y3-y2)-(x3-x2)/3*(b_3+2*b_2)))*x+y3
[/mm]
[mm] f_4=0,16481*x^3-1,48333*x^2+1,96667*x+4
[/mm]
[mm] f_4=89/540*x^3-89/60*x^2+59/30*x+4
[/mm]
Diese stimmen mit denen aus dem Buch fast überein. Der Autor hat bei den Koeffizienten [mm] c_1 [/mm] , [mm] a_2 [/mm] und [mm] c_4 [/mm] jeweils ein negatives Vorzeichen, was ich jedoch nicht bestätigen konnte.
Egal ob die Vorzeichen nun negativ oder positiv sind erhalte ich nicht die gewünschten Splines. Der Autor hat auf Seite 10 seine Splinefunktion definiert:
[mm] f_1=-59/540*x^3+59/180*x^2+119/90*x-73/135
[/mm]
[mm] f_2=77/60*x^3-983/60*x^2+409/6*x-269/3
[/mm]
[mm] f_3=-29/20*x^3+1477/60*x^2-821/6*x+252
[/mm]
[mm] f_4=89/540*x^3-89/20*x^2+1127/30*x-484/5
[/mm]
Diese weichen aber sowohl von meinen Koeffizienten als auch von seinen eigenen Koeffizienten ab. Kann mir jemand erklären, wie er auf diese Funktionen gekommen ist? Ich wäre euch wahnsinnig dankbar!!
Viele Grüße und einen schönen Abend wünscht
Laus
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:27 Mo 14.01.2013 | Autor: | meili |
Hallo Laus,
> Guten Abend liebe Mathe Gemeinde,
>
> bitte lasst euch nicht von der Länge dieses Beitrages
> abschrecken. Ich habe lediglich versucht alles
> einigermaßen nachvollziehbar zu erklären.
>
> Zur Zeit beschäftige ich mich mit der Thematik der
> kubischen Splines.
> Normaler Weise benötigt man ein lineares Gleichungssytem
> mit 4*(n-1) Gleichungen, um die entsprechenden Unbekannten
> zu berechnen. Mittels deren Hilfe ist es dann Möglich die
> kubischen Funktionen [mm](a*x^3+b*x^2+c*x+d)[/mm] für das
> entsprechende Intervall aufzustellen.
>
> Nun Habe ich ein Beispiel gefunden, welches das
> Gleichungssystem einfacher definiert und somit wesentlich
> schneller berechenbar ist. Ich habe das ganze mal
> nachgerechnet, erhalte aber falsche Ergebnisse. Also
> entweder kann ich den Algorithmus nicht ganz nachvollziehen
> oder ich habe mich verrechnet.
Leider ist deine Abfolge von a, b, c, d gerade anders herum,
wie die im Beispiel, was zwar das Nachvollziehen etwas verwirrt,
aber, da konsequent durchgezogen, zum gleichen Ergebnis führen müßte.
>
> Der Algorithmus den ich meine, stammt aus diesem Buch:
>
> siehe Kapitel 20.1.1 Seite 7
>
> Demnach berechnet sich
> [mm]d_{i}=y_{i}[/mm]
>
> [mm]c_i=1/(x_{i+1}-x_i)*(y_{i+1}-y_i)-(x_{i+1}-x_i)/3*(b_{i+1}+2*b_i)[/mm]
> [mm]a_i=1/(3*(x_{i+1}-x_i))*(b_{i+1}-b_i)[/mm]
>
> [mm]b_i[/mm] wird über das Gleichungssytem berechnet wobei die
> Matrix [mm]A=\pmat{ 2*(x_2-x_1+x_3-x_2) & x_3-x_2 & 0 \\ x_3-x_2 & 2*(x_3-x_2+x_4-x_3) & x_4-x_3 \\ 0 & x_4-x_3 & 2*(x_4-x_3+x_5-x_4)}[/mm]
>
> Das Beispiel nutzt folgende Punkte (1,1), (4,3), (5,2),
> (6,4), (9,1) und das entsprechende Gleichungssystem
> [mm]b_1=0[/mm]
> [mm]\pmat{ 8 & 1 & 0 \\ 1 & 4 & 1 \\ 0 & 1 & 8}\vektor{b_2\\b_3\\b_4}=\vektor{-5\\9\\-9}[/mm]
>
> Ich habe folgende vier Funktionen aufgestellt:
>
> [mm]f_1=(1/(3*(x1-x0))*(b_1))*x^3+(1/(x1-x0)*(y1-y0)-(x1-x0)/3*(b_1))*x+y0[/mm]
> [mm]f_1=-0,10926*x^3+0*x^2+1,65*x+1[/mm]
> [mm]f_1=-59/540*x^3+0*x^2+33/20*x+1[/mm]
>
> [mm]f_2=(1/(3*(x2-x1))*(b_2-b_1))*x^3+b_1*x^2+(1/(x2-x1)*(y2-y1)-(x2-x1)/3*(b_2+2*b_1))*x+y1[/mm]
> [mm]f_2=1,28333*x^3-0,98333*x^2-1,3*x+3[/mm]
> [mm]f_2=77/60*x^3-59/60*x^2-13/10*x+3[/mm]
>
> [mm]f_3=(1/(3*(x3-x2))*(b_3-b_2))*x^3+b_2*x^2+(1/(x3-x2)*(y3-y2)-(x3-x2)/3*(b_3+2*b_2))*x+y2[/mm]
> [mm]f_3=-1,45*x^3+2,86667*x^2+0,58333*x+2[/mm]
> [mm]f_3=-29/20*x^3+43/15*x^2+7/12*x+2[/mm]
>
> [mm]f_4=(1/(3*(x4-x3))*(-b_3))*x^3+b_3*x^2+((x3-x2)*(b_3+b_2)+(1/(x3-x2)*(y3-y2)-(x3-x2)/3*(b_3+2*b_2)))*x+y3[/mm]
> [mm]f_4=0,16481*x^3-1,48333*x^2+1,96667*x+4[/mm]
> [mm]f_4=89/540*x^3-89/60*x^2+59/30*x+4[/mm]
>
> Diese stimmen mit denen aus dem Buch fast überein. Der
> Autor hat bei den Koeffizienten [mm]c_1[/mm] , [mm]a_2[/mm] und [mm]c_4[/mm] jeweils
> ein negatives Vorzeichen, was ich jedoch nicht bestätigen
> konnte.
Ich komme auf folgende Ergebnisse
(hoffentlich ohne Rechen- und Tippfehler):
[mm] $a_1 [/mm] = [mm] -\bruch{59}{540}, \quad a_2 [/mm] = [mm] \bruch{77}{60}, \quad a_3 [/mm] = [mm] -\bruch{87}{60}, \quad a_4 [/mm] = [mm] \bruch{89}{540}$
[/mm]
[mm] $b_1 [/mm] = 0, [mm] \quad b_2 [/mm] = [mm] -\bruch{59}{60}, \quad b_3 [/mm] = [mm] \bruch{43}{15}, \quad b_4 [/mm] = [mm] -\bruch{89}{60}$
[/mm]
[mm] $c_1 [/mm] = [mm] \bruch{33}{20}, \quad c_2 [/mm] = [mm] -\bruch{13}{10}, \quad c_3 [/mm] = [mm] \bruch{7}{12}, \quad c_4 [/mm] = [mm] \bruch{59}{30}$
[/mm]
[mm] $d_1 [/mm] = [mm] 1,\quad d_2 [/mm] = 3, [mm] \quad d_3 [/mm] = 2, [mm] \quad d_4 [/mm] = 4$
Führt dann zu folgenden Polynomen:
[mm] $p_1(x) [/mm] = [mm] -\bruch{59}{540}*(x-1)^3 [/mm] + [mm] \bruch{33}{20}*(x-1) [/mm] + 1$,
[mm] $p_2(x) [/mm] = [mm] \bruch{77}{60}*(x-4)^3 [/mm] - [mm] \bruch{59}{60}*(x-4)^2 [/mm] - [mm] \bruch{13}{10}*(x-4) [/mm] + 3$,
[mm] $p_3(x) [/mm] = [mm] -\bruch{87}{60}*(x-5)^3 [/mm] + [mm] \bruch{43}{15}*(x-5)^2 [/mm] + [mm] \bruch{7}{12}*(x-5) [/mm] + 2$,
[mm] $p_4(x) [/mm] = [mm] \bruch{89}{540}(x-6)^3 [/mm] - [mm] \bruch{89}{60}(x-6)^2 [/mm] + [mm] \bruch{59}{30}*(x-6) [/mm] + 4$
Ich habe diese Funktionen nicht ausmultipliziert und ausprobiert,
ob sie dann mit denen auf Seite 10, bis auf die schon angesprochenen
Rechen- oder Druckfehler, übereinstimmen - sie sollten aber.
Auf Seite 6 unten:
[mm] $S|_{\left[x_i,x_{i+1}\right] } \qquad p_i(x) [/mm] = [mm] a_i [/mm] + [mm] b_i(x-x_i) +c_i(x-x_i)^2+d_i(x-x_i)^3$
[/mm]
und für diese Polynome werden im folgenden die
Koeffizienten [mm] $a_i, b_i, c_i$ [/mm] und [mm] $d_i$ [/mm] berechnet.
Die Funktionen sind entlang der x-Achse verschoben.
Nur so macht [mm] $a_i [/mm] = [mm] y_i$ [/mm] Sinn. ... und man kommt zu dem einfacheren,
benutzten Gleichungssystem.
>
> Egal ob die Vorzeichen nun negativ oder positiv sind
> erhalte ich nicht die gewünschten Splines. Der Autor hat
> auf Seite 10 seine Splinefunktion definiert:
> [mm]f_1=-59/540*x^3+59/180*x^2+119/90*x-73/135[/mm]
> [mm]f_2=77/60*x^3-983/60*x^2+409/6*x-269/3[/mm]
> [mm]f_3=-29/20*x^3+1477/60*x^2-821/6*x+252[/mm]
> [mm]f_4=89/540*x^3-89/20*x^2+1127/30*x-484/5[/mm]
>
> Diese weichen aber sowohl von meinen Koeffizienten als auch
> von seinen eigenen Koeffizienten ab. Kann mir jemand
> erklären, wie er auf diese Funktionen gekommen ist? Ich
> wäre euch wahnsinnig dankbar!!
>
> Viele Grüße und einen schönen Abend wünscht
> Laus
Gruß
meili
|
|
|
|