Spline

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een spline is een functie die bestaat uit een aaneenschakeling van stukjes van polynomen. De hoogste graad van de voorkomende polynomen noemt men de graad van de spline. Met behulp van splines kunnen op relatief eenvoudige wijze krommen beschreven en bewerkt worden. Als er sprake is van eerstegraads polynomen ontstaat een lineaire spline en wordt de kromme benaderd door aaneengesloten rechte lijnstukjes.

De scheeps- of jachtontwerper gebruikte vroeger strooklatten ('splines') om de lijnentekening van de romp te stroken. Met gewichtjes ('ducks') werd de strooklat op zijn plaats gehouden. Op de werkvloer werd de lijnentekening vaak op ware grote uitgeslagen ('lofting'). Ook hier werden strooklatten gebruikt. Door zeer nauwkeurig te werken, kon uit de spantentekening de vorm van de 'gangen' (de planken die de huid van de romp vormden) worden 'uitgekruist' met de stelling van Pythagoras.

Bij de toepassing van splines als beschrijving van een kromme, zal vaak geëist worden dat de spline in de deelpunten een gegeven waarde aanneemt en dat de aansluiting van de stukjes polynoom voldoende glad zal verlopen.

Wiskundige Beschrijving[bewerken]

Definitie[bewerken]

Een spline van de graad n op het interval [a,b] is een functie S op dat interval, gedefinieerd door


S(x) := \left\{\begin{matrix} 
    S_0(x) & x \in [x_0, x_1] \\
    S_1(x) & x \in [x_1, x_2] \\
    \vdots & \vdots \\
S_{k-1}(x) & x \in [x_{k-1}, x_k] 
\end{matrix}\right..

Daarin is iedere Si(x) een veelterm van ten hoogste de graad n en vormen de k+1 punten xi (zogenaamde "knopen") een verdeling van [a,b], waarvoor dus geldt:

\!a=x_0 < x_1 < ... < x_{k-1} < x_k=b,

Merk op dat in de definitie geëist wordt dat in de knopen xi geldt:

\!S_{i-1}(x_i)=S_i(x_i),

zodat een spline een continue functie is.

Lineaire spline ( n = 1 )[bewerken]

Dit is de eenvoudigste vorm van een spline: gewoon een polygoon. Als we de waarden in de knopen aangeven met yi, wordt de spline gegeven door:

S_i(x) = y_i + \frac{y_{i+1}-y_i}{x_{i+1}-x_i}(x-x_i)

Grafisch kunnen we de kromme die door de spline beschreven wordt tekenen door de punten (x_i,y_i) opvolgend met elkaar te verbinden.

Kwadratische spline ( n = 2 )[bewerken]

Voor het opstellen van de kwadratische spline (van de vorm a+bx+c) gebruiken we de volgende formule:


S_i(x) = y_i + z_i(x-x_i) + \frac{z_{i+1}-z_i}{2(x_{i+1}-x_i)}(x-x_i)^2

De overgangen tussen verschillende Si moeten continu zijn (eerste voorwaarde), maar ook de eerste afgeleide in de overgangspunten moeten gelijk zijn (tweede, extra voorwaarde). De voorwaarden zijn dan:

S_{i-1}(x_i) = S_{i}(x_i) \qquad \mbox{ , } i=1,\ldots k
S'_{i-1}(x_i) = S'_{i}(x_i) \qquad \mbox{ , } i=1,\ldots k

De coëfficiënten kunnen als volgt worden bepaald:


z_{i+1} = -z_i + 2 \frac{y_{i+1}-y_i}{x_{i+1}-x_i}

Kubische spline ( n = 3 )[bewerken]

Zeer analoog aan de kwadratische spline. Opnieuw hebben we een extra reeks voorwaarden nodig, namelijk dat de tweede afgeleide continu in de overgangspunten is. Alle voorwaarden op een rijtje:

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) \qquad \mbox{ , } i=0,\ldots k -1

Praktisch opstellen[bewerken]

In de praktijk worden splines van verschillende graad met behulp van matrices bepaald.

Randvoorwaarden[bewerken]

Belang randvoorwaarden: twee splines gemaakt met dezelfde punten, maar andere raaklijnen in begin- en eindpunt

Bij een spline gemaakt uit n punten, zijn n-1 veeltermen nodig. Iedere veelterm moet aan een aantal voorwaarden voldoen (door punten gaan, afgeleide in punt). Bij hogeregraads splines zijn echter vrijheidsgraden over: terwijl een eerstegraadsspline onmiddellijk vast ligt, kunnen aan een derdegraads splines nog 2 voorwaarden opgelegd worden. We kunnen deze voorwaarden invullen door een begin- en eindrichting aan te geven (eerste afgeleide in begin en eind gekend), of te eisen dat de tweede afgeleide in de eindpunten 0 is. In het laatste geval wordt de resulterende kromme een natuurlijke spline genoemd.

Voorbeeld[bewerken]

Punten[bewerken]

Hier de punten waartussen we een kromme, Spline willen geconstrueerd zien:

Punten splines.png

Lineair[bewerken]

Hierbij verbinden we doodgewoon de punten. Je ziet snel dat er geen vrijheidsgraden zijn, ieder stukje is vast bepaald.

Spline lineair.png

Kwadratisch[bewerken]

Zoals hierboven besproken, blijft er één vrijheidsgraad over, die naar wens ingevuld kan worden (ergens raaklijn definiëren, of in een eindpunt de tweede afgeleide nul stellen).

Spline kwadratisch.png

Kubisch[bewerken]

Spline kubisch.jpg