PD. Dr. Martin Kreuzer WS 2001/2002 Fakultät für Mathematik Universität Regensburg

Übungen zur Vorlesung “Computeralgebra für Naturwissenschaftler”

Tutorium 5: Berechnung von Splines

Nachfolgend wollen wir einige der Resultate von Abschnitt 16 der Vorlesung in CoCoA implementieren und anwenden. Seien a, b ∈ ℚ mit a < b, sei C = (c_{0}, …, c_{k}) ∈ ℚ^{k+1} eine Zerlegung des Intervalls [a, b], und seien d_{0}, …, d_{k} ∈ ℚ vorgegebene Funktionswerte.

a) Für i = 0, …, k sei ℓ_{i} = ∏_{j≠i} \frac{x−c_{j}}{c_{i}−c_{j}} ∈ ℚ[x]. Beweisen Sie, dass das Lagrange-Interpolationspolynom ℓ = ∑_{i=0}^{k} d_{i}ℓ_{i} einen Grad deg(ℓ) ≤ k hat und durch die Stützpunkte (c_{0}, d_{0}), …, (c_{k}, d_{k}) geht.

b) Schreiben Sie eine CoCoA-Funktion Lagrange(…), die als Eingabe eine Liste [[c_{0}, d_{0}], …, [c_{k}, d_{k}]] erwartet und die das Lagrange-Interpolationspolynom berechnet.

c) Wenden Sie Ihre Funktion Lagrange(…) in den folgenden Fällen an.

1) Interpolation von f : [0, 2π] ⟶ ℝ (t ↦ sin(t)) mit Stützpunkten bei c_{i} = \frac{iπ}{2} für i = 0, …, 4.

2) Interpolation von g : [−2, 2] ⟶ ℝ (t ↦ \frac{1}{1+25t^{2}} ) mit Stützpunkten bei (−2, −1, 0, 1, 2).

3) Interpolation von f mit Stützpunkten bei c̃_{i} = \frac{iπ}{4} für i = 0, …, 8.

4) Interpolation von g mit Stützpunkten bei (−2, −1.5, −1, −0.5, 0, 0.5, 1, 1.5, 2). Wie hat sich die Vergrößerung der Zahl der Stützpunkte jeweils ausgewirkt? Hinweis: Schreiben Sie zuerst eine CoCoA-Funktion Sin(…), die mit Hilfe der Taylor-Entwicklung den Wert von sin(t) bis auf eine gegebene Nachkommastellenzahl genau berechnet. Implementieren Sie dann eine Funktion Values(…), die aus [c_{0}, …, c_{k}] die Liste [[c_{0}, d_{0}], …, [c_{k}, d_{k}]] bestimmt. Der Name der zu interpolierenden Funktion soll dabei eines der Argumente von Values(…) sein.

d) Schreiben Sie eine CoCoA-Funktion Splines(…), die bei angegebenem r ≥ 0 ein Erzeugendensystem des ℝ[x]-Moduls 𝕊^{r}(C) der r-mal stetig differenzierbaren C-Splines berechnet.

e) Beweisen Sie die Formeln von Satz 16.11 für die Berechnung natürlicher Splines.

f) Implementieren Sie eine CoCoA-Funktion NatSpline(…), die aus einer Liste von Stützpunkten [[c_{0}, d_{0}], …, [c_{k}, d_{k}]] den zugehörigen natürlichen C-Spline berechnet.

g) Wenden Sie Ihre Funktion NatSpline(…) an, um die Funktion h : [0, 3] ⟶ ℝ mit h(t) = sin(e^{t}) and den Punkten c_{i} = \frac{i}{4} mit i = 0, …, 12 zu interpolieren. Hinweis: Um die Funktion h(t) genügend genau zu berechnen, sollten Sie sin(t) und e^{t} weit genug (z.B. die ersten 70 Terme) in eine Taylorreihe entwickeln.

h) Wiederholen Sie den vorhergehenden Teil mit der Zerlegung C′ = (0, 0.45, 1.15, 1.55, 1.85, 2.05, 2.25, 2.4, 2.55, 2.65, 2.75, 2.85, 3). Welche der beiden Spline-Funktionen approximiert h besser?