Interpolation mit Chebyshev-Knoten

Computer-Algebra und Visualisierungen von Interpolationsformeln

Prof. Dr. Bernhard Zgraggen, HSR

Für ein Intervall [a, b] lassen sich die Chebyshev-Knoten für n+1 Messwerte wie folgt berechnen. Es sind dies Nullstellen des Chebyshev-Polnyoms (Subscript[T, n+1])(x) = cos((n+1)arccos(x)) = ChebyshevT[n+1, x].

a=-1; b=1; n=10;

chebpts=Table[a+((b-a)/2)(Cos[(((2i+1)Pi)/(2(n+1)))]+1),{i,0,n}]

n=8; m=7;
f[j_,k_]:=(∑_(i=0)^m)(ChebyshevT[j,Cos[(((2i+1)Pi)/(2(m+1)))]]*ChebyshevT[k,Cos[(((2i+1)Pi)/(2(m+1)))]])

Table[f[j,k],{j,0,n},{k,0,n}]//FullSimplify//MatrixForm

Die folgende Demonstration zeigt das Fehlerverhalten (maximale Amplitude) des Newtonpolynoms (Subscript[ℼ, n+1])(x) = (x-(Subscript[x, 0]))(x-(Subscript[x, 1]))⋯(x-(Subscript[x, n-1]))(x-(Subscript[x, n])) für gleichmässig verteilte Knoten versus Chebyshev-Knoten sowie ein Diagramm für die Konstruktion der Chebyshev-Knoten am Einheitskreis.

nmax=100;
Manipulate[Module[{tabnum, tabnumcos,tabradials},
tabnum=Table[{N[Cos[(((2i+1)Pi)/(2(n+1)))]], N[Sin[(((2i+1)Pi)/(2(n+1)))]]},{i,0,n}]; tabnumcos=Table[{N[Cos[(((2i+1)Pi)/(2(n+1)))]], 0.},{i,0,n}];
tabradials=Table[{{0.,0.},{N[Cos[(((2i+1)Pi)/(2(n+1)))]], N[Sin[(((2i+1)Pi)/(2(n+1)))]]}},{i,0,n}];

GraphicsRow[
{
Show[
Graphics[{RGBColor[1,0,0],AbsolutePointSize[4.5],Point/@tabnum}],
Graphics[{RGBColor[0,0,1],AbsolutePointSize[4.5],Point/@tabnumcos}], 
Graphics[Line@tabnum],
Graphics[Circle[{0,0},1]],
AspectRatio->Automatic, Axes->True
],

Show[
Plot[Evaluate@Product[x-tabnumcos[[i+1]][[1]],{i,0,n}],{x,-1,1},PlotRange->{{-1,1},All},PlotStyle->Darker[Red],PlotLabel->"Newtonprodukt Chebyshev (Subscript[ℼ, n + 1])(x)"],
Graphics[{RGBColor[0,0,1],AbsolutePointSize[4.5],Point/@tabnumcos}]
],
Plot[Evaluate@Product[x-(-1 + i*2/n),{i,0,n}],{x,-1,1},PlotRange->{{-1,1},All},PlotStyle->Darker[Red],PlotLabel->"Newtonprodukt Equidistanz (Subscript[ℼ, n + 1])(x)"]
}
]
],
{{n,1},1,nmax,1,Appearance->"Labeled"}]