Spline-Berechnung < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Hallo Zusammen,
Ich habe zu einer Wertetabelle Bedingungen für einen entsprechenden natürlichen kubischen Spline berechnet. Es ergab sich ein Gleichungssystem mit 20 Gleichungen und Unbekannten. Es stellte sich allerdings als ziemlich schwierig heraus dieses System zu lösen. Zuerst habe ich's mit der einfachsten Methode probiert, und versucht immer jeweils eine Gleichung nach einer Variable hin aufzulösen, dann diese Variable überall einzusetzen und die nutzlose Gleichung dann zu streichen. Leider entstanden dabei sehr lange Gleichungen, so daß ich diesen Ansatz wegen dem unglaublichen "Variablensalat" aufgeben mußte.
Danach habe ich's mit einer $20 [mm] \times 20\texttt{-Matrix}$ [/mm] probiert:
[mm]\left(\begin{array}{cccccccccccccccccccc|c}-30&2&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0\\0&0&0&0&0&0
&0&0&0&0&0&0&0&0&0&0&30&2&0&0&0\\-125&25&-5&1&0&0&0&0&0&0&0&0&0&0&0
&0&0&0&0&0&{{1}\over{26}}\\-27&9&-3&1&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0
&0&{{1}\over{10}}\\0&0&0&0&-27&9&-3&1&0&0&0&0&0&0&0&0&0&0&0&0&{{1
}\over{10}}\\0&0&0&0&-1&1&-1&1&0&0&0&0&0&0&0&0&0&0&0&0&{{1}\over{2
}}\\0&0&0&0&0&0&0&0&-1&1&-1&1&0&0&0&0&0&0&0&0&{{1}\over{2}}\\0&0
&0&0&0&0&0&0&1&1&1&1&0&0&0&0&0&0&0&0&{{1}\over{2}}\\0&0&0&0&0&0&0&0
&0&0&0&0&1&1&1&1&0&0&0&0&{{1}\over{2}}\\0&0&0&0&0&0&0&0&0&0&0&0&27
&9&3&1&0&0&0&0&{{1}\over{10}}\\0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&27&9
&3&1&{{1}\over{10}}\\0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0&125&25&5&1&{{1
}\over{26}}\\0&0&0&0&0&0&0&0&0&0&0&0&18&2&0&0&-18&-2&0&0&0\\0&0&0
&0&0&0&0&0&6&2&0&0&-6&-2&0&0&0&0&0&0&0\\0&0&0&0&-6&2&0&0&6&-2&0&0&0
&0&0&0&0&0&0&0&0\\-18&2&0&0&18&-2&0&0&0&0&0&0&0&0&0&0&0&0&0&0&0
\\0&0&0&0&0&0&0&0&0&0&0&0&27&6&1&0&-27&-6&-1&0&0\\0&0&0&0&0&0&0&0
&3&2&1&0&-3&-2&-1&0&0&0&0&0&0\\0&0&0&0&3&-2&1&0&-3&2&-1&0&0&0&0&0&0
&0&0&0&0\\27&-6&1&0&-27&6&-1&0&0&0&0&0&0&0&0&0&0&0&0&0&0\end{array}\right)[/mm]
Die Matrix nahm leider das komplette DIN A4-Blatt ein. Nach 4 Umformungsschritten (und 4 verbrauchten Blättern) gab' ich schließlich auf. Ich bin mir aber sicher, daß es gerade für ein solches System einen ganz einfachen Ansatz gibt(,oder doch nicht)? Natürlich könnte ich dieses System in wenigen Millisekunden mit meinem C.A.S. lösen nur bringt mir das nichts für die Klausur. Na ja, vielleicht wisst ihr einen Rat.
Danke!
Viele Grüße
Karl
|
|
|
|
Hallo Karl,
Um möglichst wenig Einträge in der Matrix zu haben benutzt man zumeist spezielle Splinefunktionen.
Bsp: [mm] s_i(x)=a*(x-x_i)^2*(x-x_{i+1})+b*(x-x_i)*(x-x_{i+1})+c*(x-x_i)+d
[/mm]
So erhält man aus der Bedingung [mm] s(x_i)=f(x_i)=y_i [/mm] schon die Koeffizienten c,d ohne a,b kennen zu müssen. Sie müssen also nicht zur Vergrößerung des GS beitragen. Allerdings weiß ich jetzt ncht ob's noch was besseres gibt und mit welchen Splines du jetzt angesetzt hast sehe ich auch nicht. Ansonsten glt für solch ein GS mit vielen Nullen: Auffüllen vermeiden. Heißt beim Gaußalgorithmus möglichst eine Zeile/Spalte Kombination mit vielen Nullen raussuchen. Dadurch ereicht man das in der Matrix nach dem Umformungsschritt möglichst viele Nullen stehen.
gruß
mathemaduenn
|
|
|
|
|
Hallo mathemaduenn,
Es ging dabei eigentlich um diese Aufgabe:
Aufgabe |
Es sei [mm]f:\left[-5,5\right]\to\mathbb{R}[/mm] gegeben durch [mm]\textstyle f(x):=\frac{1}{1+x^2}[/mm]. Berechne die kubische Spline-Interpolierende mit den natürlichen Randbedingungen [mm]s''\left(x_0\right)=s''\left(x_N\right)=0[/mm] zu den Stützstellen [mm]x_j = -5 + 2j,\quad j=0,\dotsc,5[/mm].
|
Und ich habe ganz normale Polynome 3ten Grades verwendet: [mm]f\left(x\right) = ax^3 + bx^2 + cx + d[/mm].
Viele Grüße
Karl
|
|
|
|
|
Hallo Karl,
"Normale" Polynome sind eben eher schlecht weil das Gleichungssystem recht groß wird. Wenn du den von mir vorgeschlagene Ansatz verwendest kannst Du eben je 2 Koeffizienten deiner 5 Splinefunktionen( [mm] s_i [/mm] ) direkt aus 2 Gleichungen berechnen. Übrig bleibt eine schwach besetzte 10x10 Matrix zu lösen wie gesagt Aufüllen vermeiden. Ob's noch einfacher geht weiß ich nicht. Da es äquidisdante Stützstellen sind sollte die Matrix sehr regelmäßig aussehen. Ich persönlich find's wenig sinnvol 10x10 Matrizen in einer Klausur zulösen. Da sollte es doch eigentlich bei einem einfachen Bsp. bleiben.
gruß
mathemaduenn
|
|
|
|
|
Hallo mathemaduenn,
Ich bin noch auf folgende Spline-Darstellung gestoßen. Was ist davon zu halten? Welche Darstellung ist den vorteilhafter in der Klausur?
Danke!
Viele Grüße
Karl
|
|
|
|
|
Hallo Karl,
ein gleichungssystem nur für die y''_i klingt auf jeden Fall interessant. Denn das hätte ja gerade mal die Dimension n bei n Splineintervallen. Ein schöner trick die Gleichheit der zweiten Ableitung zu sichern indem man sie als Parameter einführt. Das angesprochene GS müsste nun eben noch die Gleichheit der 1. Ableitung in den Stützstellen sicherstellen. Kannst ja mal machen.
gruß
mathemaduenn
|
|
|
|
|
Hallo Zusammen!
Ich bin gestern nach einigem Suchen auf ein Schema zur Berechnung eines natürlichen kubischen Splines gestoßen, welches auch funktioniert (ich habe es jetzt an der damaligen Aufgabe von Hand (mit Taschenrechner) ausprobiert). Leider funktioniert dieses Schema nicht für Splines mit periodischen und Hermite-Randbedingungen(, oder doch?). Weiß jemand eventuell ein ähnliches Schema für diese anderen Splines? Oder wie man das vorliegende Schema auf die anderen beiden Fälle anpassen kann?
Gegeben: Interpolationspunkte [mm]\left(x_k,y_k\right)[/mm] mit [mm]k=0,\dotsc,n[/mm].
Gesucht: natürlicher kubischer Spline [mm]s(x)[/mm] durch diese Punkte.
Schema:
Sei [mm]S_i[/mm] die 2te Ableitung von [mm]s(x)[/mm] bei [mm]x_i[/mm] für [mm]i=0,\dotsc,n-1[/mm]. Ferner setze man:
[mm]h_i := x_{i+1}-x_i;\quad a_i := \frac{S_{i+1}-S_i}{6h_i};\quad b_i := \frac{S_i}{2};\quad c_i := \frac{y_{i+1}-y_i}{h_i} - \frac{2h_iS_i + h_iS_{i+1}}{6};\quad d_i := y_i.[/mm]
Die stückweisen Polynome [mm]s_i[/mm] bei [mm]x_i[/mm] aus denen [mm]s(x)[/mm] besteht, sehen dann folgendermaßen aus:
[mm]s_i(x) := a_i\left(x-x_i\right)^3+b_i\left(x-x_i\right)^2+c_i\left(x-x_i\right)+d_i.[/mm]
Zur Bestimmung der 2ten Ableitungen löst man folgendes LGS:
[mm]\begin{pmatrix}
2\left(h_0+h_1\right) & h_1 & {} & {} & {}\\
h_1 & 2\left(h_1 + h_2\right) & h_2 & {} & {}\\
{} & h_2 & 2\left(h_2 + h_3\right) & h_3 & {}\\
{} & {} & \ddots & \ddots & {}\\
{} & {} & {} & h_{n-2} & 2\left(h_{n-2} + h_{n-1}\right)
\end{pmatrix}\begin{pmatrix}S_1\\\vdots\\S_{n-1}\end{pmatrix} = 6\begin{pmatrix}
\frac{y_2-y_1}{h_1} - \frac{y_1-y_0}{h_0}\\
\frac{y_3-y_2}{h_2} - \frac{y_2-y_1}{h_1}\\
\frac{y_4-y_3}{h_3} - \frac{y_3-y_2}{h_2}\\
\vdots\\
\frac{y_n-y_{n-1}}{h_{n-1}} - \frac{y_{n-1}-y_{n-2}}{h_{n-2}}
\end{pmatrix}.[/mm]
Und da es hier ein natürlicher Spline sein soll, setzt man [mm]S_0 = S_n = 0[/mm].
Wäre schön, wenn mir jemand helfen könnte!
Viele Grüße
Karl
|
|
|
|
|
Hallo Karl,
Eine Möglichkeit wäre deinem Gleichungssystem einfach 2 Zeilen hinzuzufügen das wäre dann zwar nicht mehr rein tridiagonal hätte aber immer noch eine vergleichsweise schöne Struktur.
> LGS:
>
>
> [mm]\begin{pmatrix}
1& {} & {} & {} & {}\\
2\left(h_0+h_1\right) & h_1 & {} & {} & {}\\
h_1 & 2\left(h_1 + h_2\right) & h_2 & {} & {}\\
{} & h_2 & 2\left(h_2 + h_3\right) & h_3 & {}\\
{} & {} & \ddots & \ddots & {}\\
{} & {} & {} & h_{n-2} & 2\left(h_{n-2} + h_{n-1}\right)\\
{} & {} & {} & {} & 1
\end{pmatrix}\begin{pmatrix}S_0\\\vdots\\S_{n}\end{pmatrix} = 6\begin{pmatrix}
0\\
\frac{y_2-y_1}{h_1} - \frac{y_1-y_0}{h_0}\\
\frac{y_3-y_2}{h_2} - \frac{y_2-y_1}{h_1}\\
\frac{y_4-y_3}{h_3} - \frac{y_3-y_2}{h_2}\\
\vdots\\
\frac{y_n-y_{n-1}}{h_{n-1}} - \frac{y_{n-1}-y_{n-2}}{h_{n-2}}\\
0
\end{pmatrix}.[/mm]
Jetzt nurmal für die natürlichen Randbedingungen hingeschrieben. Sonst müßte ich ja auch noch richtig anfangen mit rechnen. eine andere praktische Möglichkeit fällt mir nicht ein.
viele grüße
mathemaduenn
|
|
|
|
|
Hallo mathemaduenn!
Inzwischen habe ich noch ein Rechenverfahren dafür gefunden. Nur die Schreibweisen sind anders (blau sei das erste Schema und grün das Andere):
[mm]\begin{array}{r@{\;}c@{\;}l}
\textcolor{green}{a_j}&:=&\textcolor{blue}{d_i}\\
\textcolor{green}{b_j}&:=&\textcolor{blue}{c_i}\\
\textcolor{green}{d_j}&:=&\textcolor{blue}{a_i}\\
\textcolor{green}{c_j}&:=&\textcolor{blue}{S_i}
\end{array}[/mm]
Ein Problem ist, daß dort bei den Koeffizientenformeln und dem Gleichungssystem die Zahl 3 statt 6 benutzt wird. Das neue Schema enthält auch die ersehnten weiteren Bedingungen für den Hermite-Fall. Also:
Bedingung, die im Gleichungssystem-Schema "oben" steht:
[mm]2h_0S_0 + h_0S_1 = \frac{3}{h_0}\left(\textcolor{blue}{d_1}-\textcolor{blue}{d_0}\right)-3f^{(1)}(a)[/mm]
und die ersehnte Zusatzzeile, die im LGS "unten" steht:
[mm]h_{n-1}S_{n-1} + 2h_{n-1}S_n = 3f^{(1)}(b) - \frac{3}{h_{n-1}}\left(\textcolor{blue}{d_n}-\textcolor{blue}{d_{n-1}}\right)[/mm]
Aber wie gesagt, es gibt "leichte" Unterschiede zwischen diesen Schemata. Zum Einen 3 statt 6 und zum Anderen fehlt im "grünen" Schema das [mm]\textcolor{blue}{b_i}[/mm], oder? Was ist denn nun richtig?
Hoffe mir ist noch zu helfen... [Bild Nr. 1 (fehlt/gelöscht)]
Grüße
Karl
|
|
|
|
|
Hallo Karl!
Mir war es zu lang, diese ganze Diskussion durchzulesen , aber sehe ich das richtig, dass du ein "Schema" haben möchtest, um Splines zu berechnen? Bist du sicher, dass du so etwas brauchst? Wir hatten da auf den Übungszetteln ein oder zwei Aufgaben zu, aber selbst mit den "Formeln" im Buch war das erstens nicht einfach (weil ich nie wusste, was jetzt was sein soll und wie das und das definiert ist, was nämlich wieder woanders stand), und zweitens ist das einfach nur dumme Rumrechnerei!
Ich hatte mir für die Klausur damals gesagt, wenn so etwas in der Klausur kommt, dann mache ich das nach dem Schema "Steckbriefaufgabe".
Viele Grüße
Bastiane
P.S.: Wie sieht's denn aus? Schreibst du dies mal die Klausur und wann ist sie?
|
|
|
|