Verfasst am: 22.06.2013, 03:30
Titel: Fehler bei Newtonscher Interpolation berechnen
Hallo
Ich würde gerne den Maximalfehler der newtonschen Interpolation mit Hilfe einer Formel in Octave berechnen. Die Koeffizienten für das Polynom habe ich bereits berechnen. Die Knotenanzahl ist 12, also ist das ein Polynom des elften Grades. Ich habe einige Artikel dazu gelesen, weiß aber nicht, wie ich die Formeln in der Praxis einsetzen soll. Eine Formel sieht interessant aus:
das Stichwort hierzu sind die "dividierten Differenzen", welche in der Form f[x1,x2,...,xn] geschrieben werden.
Anbei ein Auszug aus der Numerik-Vorlesung
Ich habe das ganze mal Programmiert, hab jedoch keine Zeit das genau zu erläutern. Ich berechne im Skript die dividierten Differenzen und (da ich keine einfachere Möglichkeit sehe) erstelle mir das Polynom als Anonymous-Funktion aus einem String, den ich automatisch generiere.
Code:
% Polynominterpolation mit Newton (Dividierte Differenzen)
% Stuetzstellen:
x = [0123];
p = x.^3; % Beispielpolynom
fmat = zeros(length(x)); % Matrix, wo dividierte Differenzen eingetragen werden
fmat(:,1) = p'; % Erste Spalte sind die Stuetzstellen selbst
for j = 2:length(x);% Die Spalten abarbeiten (erste Spalte existiert schon) % Die Zeilen abarbeiten (s. Dreiecksform der dividierten Differenten im Skript) % Die zu berechnenden Zeilen werden "nach rechts" immer um eins % reduziert for i = 1:k-1% Zeilen abarbeiten % Dividierte Differenzen ausrechnen
fmat(i,j) = (fmat(i+1,j-1)-fmat(i,j-1))/(x(j+(i-1))-x(i));
% Anmerkung: Indizierung von x: % In der Tabelle im Skript (letzte Seite) fällt auf: % Der höchste Index des x-Wertes in f[...] ist immer % Spalte+(Zeile-1), der niedrigste Index der Zeilenindex % also f[x_k,...,x_l] mit k = i und l = j+(i-1)
end%
% k um eins Reduzieren (Im naechsten Schritt (naechste Spalte) % muss eine Zeile weniger berechnet werden
k = k-1;
end;
Zur Fehleranalyse: Ich glaube ich habe da auch nen Eintrag auf Wikipedia unter Polynominterpolation gesehen. Der Fehler an den Stüzstellen muss immer Null sein, sonst wurde das Polynom falsch berechnet.
ich habe das mit den Fehlern schon hingekriegt, einfach war es aber nicht. Da die n+1 Ableitung meiner Funktion gleich Null ist (ein Koeffizient hat den Wert Null), konnte ich die Formel mit der Ableitung nicht verwenden. Daher musste ich das Knotenpolynom auswerten (erste Ableitung, xmax), dann für dieses xmax, p(x) (berechnetes Newtonplynom) auswerten, dann diese Werte in die x und y Tabelle einsetzen, dafür die dividierte Differenz berechnen. Diese dividierte Differenz mit dem Knotenpolynom für das gesuchte x multiplizieren, der Fehler ist berechnet. Für einen hohen Polynomgrad stimmt der Fehler einigermaßen, bei einem kleineren Grad wird zum Ende des Intervalls der theoretische Fehler sehr groß, so dass er nicht mehr mit den berechneten Werten übereinstimmt.
Danke für die Antwort, Grüße
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.