Kubische Spline < Interpol.+Approx. < Numerik < Hochschule < Mathe < Vorhilfe
|
Ich würde für eine gegebene Punkte Menge [mm] (x_0,y_0),(x_1,y_1)\dots,(x_n,y_n) [/mm] die zu gehörigen natürlichen kubischen Splines ausrechnen.
Die Funktion wäre ja dann
[mm] S_i(x)=a_i(x-x_i)^2+b_i(x-x_i)^2+c_i(c-x_i)+d_i \;\;(i=0,1,\dots,n-1)
[/mm]
Wobei sich [mm] d_i=y_i [/mm] sofort aus [mm] S_i(x_i)=y_i [/mm] ergibt.
Aus den folgenden Bedingungen:
[mm] S_i(x_i)=S_{i-1}(x_i) \;\; S'_i(x_i)=S'_{i-1}(x_i) \;\; S''_i(x_i)=S''_{i-1}(x_i)
[/mm]
und der Randbedingungen [mm] S''_0(x_0)=0 [/mm] bzw. [mm] S''_{n-1}(x_n)=0
[/mm]
lässt [mm] b_0=0 [/mm] sofort erkennen.
Der Rest sich leider nicht so einfach erschließen.
Kann nun zwar alles umformen und einsetzten würde aber gerne ein Algorithmus haben um den Spaß berechnen und Visualisieren zu können.
Hatte zwar eine Formel aus meiner Vorlesung mit einer Tridiagonalmatrix
[mm] \left(\begin{array}{ccccc}
2 & \lambda_0 & 0 &\dots&0\\
1-\lambda_1 & 2 & \lambda_1 &&\\
0 &1-\lambda_2 &2&\lambda_2&\\
\vdots&\ddots&&\end{array}\right)\cdot\left(\begin{array}{c}M_0\\M_1\\\vdots\\M_{n-1}\end{array}\right)
[/mm]
und dann ist [mm] S_i(x)=\frac{M_j}{6*h_{j+1}}*(x_{j+1}-x)^3+\frac{M_{j+1}}{6*h_{j+1}}*(x-x_j)^3+\frac{y_{j+1}-y_j}{h_{j+1}}+\frac{h_{j+1}}{6}*(M_j+M_{j+1}))*(x-x_j)+y_j-\frac{M_j}{6}*h_{j+1}^2
[/mm]
aber beim berechnen kommen Sprünge rein (warum auch immer falls jmd einen grausamen Java-Code sehen mag)
Hat jmd einen sinnvollen Algorithmus wie man das GLS nach [mm] a_i,b_i,c_i [/mm] lösen kann?
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:51 Di 31.01.2012 | Autor: | Stoecki |
ich hab das mal mit dem gaus einfach ausgerechnet. Das ist denke ich die einfachste Implementierung.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 Mi 01.02.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|