Programmieraufgabe 6

Wichtig: Damit alle benötigten Pakete richtig eingebunden werden, führen Sie die nächste Zelle einmal aus, sobald Sie das Notebook neu öffnen.

In [13]:
# some setup
%matplotlib inline
import numpy as np 
import matplotlib.pyplot as plt 

Newtonsche Darstellung des Interpolationspolynoms

Sei $I = [a,b]$ ein Interval und $f \in C(I)$ eine stetige Funktion. Sei $x = \{x_0, \ldots, x_n\}$ eine Liste von Stützstellen und $y = \{y_0, \ldots, y_n\}$ eine Liste von Funktionsauswertungen, d.h. $y_i = f(x_i)$ für $i = 0, \ldots, n$.

a) Implementieren Sie einen Algorithmus, der basierend auf den Listen $x$ und $y$ eine Liste $z = \{ z_0, \ldots, z_n \}$ von dividierten Differenzen gemäss des Dreicksschemas berechnet, wobei

\begin{equation} z_i = f[x_0, \ldots, x_i] \, , \quad i = 0, \ldots, n\, . \end{equation}

In [23]:
# Fuegen Sie hier Ihre Loesung ein.

b) Implementieren Sie eine Funktion, die basierend auf einer Liste $x$ von Stützstellen und einer Liste $z$ von dividierten Differenzen die Auswertung des interpolierenden Polynoms $p \in \Pi_n$ an einer Stelle $t \in [a,b]$ mit Hilfe des Horner-Schemas berechnet.

In [24]:
# Fuegen Sie hier Ihre Loesung ein.

c) Implementieren Sie eine Funktion, die die Tschebyshev Knoten berechnet

In [25]:
# Fuegen Sie hier Ihre Loesung ein.

d) Testen Sie Ihren Code mit der Funktion $f(x) = |x|$ auf $I = [-1,1]$. Benutzen Sie äquidistante Stützstellen mit n = 5, 10, 15, 20. Plotten Sie dazu die interpolierenden Polynome sowie die Funktion $f$ in eine Achse.

In [26]:
# Fuegen Sie hier Ihre Loesung ein.

(e) Wiederholen Sie die Aufgabe mit dieselben Werten für $n$, aber unter Verwendung von Chebychevknoten als Stützstellen.

In [27]:
# Fuegen Sie hier Ihre Loesung ein.