lagrange-interpolation
Ich habe die Antworten über die Lagrange-interpolation, aber ich konnte nicht finden einen passenden zu meiner Frage. Ich versuche, Lagrange-interpolation für eine Oberfläche mit matlab. Sagen wir, ich habe eine x-und y-Vektor und f=f(x,y). Ich interpolieren dieser f-Funktion. Ich denke, was ich getan habe ist mathematisch korrekt:
function q = laginterp(x,y,f,ff)
n = length(x);
m = length(y);
v = zeros(size(ff));
for k = 1:n
for l = 1:m
w1 = ones(size(ff));
w2 = ones(size(ff))
for j = [1:k-1 k+1:n]
for j = [1:l-1 l+1:n]
w1 = (x-x(j))./(x(k)-x(j)).*w1;
w2 = (y-y(i))./(y(l)-y(i)).*w2;
end
end
ff = ff + w1.*w2.*f(k,l);
end
end
Es ist meine Funktion und dann warte ich auf eine Antwort für beliebige x,y,f wie
x= 0:4;
y = [-6 -3 -1 6];
f=[2 9 4 25 50];
v = laginterp(x,y,f,ff);
plot3(x,y,'o',f,q,'-')
Ich bin immer dankbar für jede Hilfe!!!
- Ich bin mir nicht wirklich klar, was das problem hier ist. Hat die Funktion nicht funktioniert? Auch, Sie sollten look into Vektorisieren von Ihr code... vier
for
Schleifen ist fast nie der Matlab-Weg, Dinge zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser geht nicht auf deine Frage direkt, aber es gibt eine Lagrange-interpolation " - Funktion auf der Matlab File Exchange die scheint ziemlich beliebt.
Lagrange-interpolation ist grundsätzlich NIE eine gute Wahl für die interpolation. Ja, es wird in den ersten Kapitel viele Texte, diskutieren interpolation. Macht es gut? Nein. Das macht es bequem, eine gute Möglichkeit zur EINFÜHRUNG von Ideen der interpolation, und manchmal, um zu beweisen einige einfache Ergebnisse.
Ein ernstes problem ist, dass ein Benutzer entscheidet, zu versuchen, diese jämmerliche Entschuldigung für eine interpolation, und findet, dass lo und siehe, es funktioniert für 2 oder 3 Punkte. Wow, schaut Euch das an! Also ist der logische Weiterführung der Nutzung auf Ihre Reale Datensätze mit 137 Punkte, oder 10000 Datenpunkten oder mehr, von denen einige Punkte sind in der Regel Replikate. Was ist passiert? Warum funktioniert mein code nicht geben gute Ergebnisse? Oder vielleicht werden Sie einfach blind davon ausgehen, dass es funktioniert hat, und dann veröffentlichen Sie ein Papier mit unsinnigen Resultaten.
Ja, es gibt einen Lagrange-tool auf die Datei Exchange. Ja, es ist sogar wahrscheinlich bekam einige gute Kritiken, geschrieben von Erstsemester, die hatte keine wirkliche Vorstellung, was Sie auf der Suche waren, und die leider kein Konzept der numerischen Analyse. Verwenden Sie es nicht.
Wenn Sie eine Interpolations-tool in MATLAB, könnten Sie beginnen mit griddata oder TriScatteredInterp. Diese Ausbeute wird ganz vernünftige Ergebnisse. Andere Methoden sind radial-basis-Funktion Interpolationen, von denen gibt es auch ein tool auf den FEX, und eine Vielzahl von splines, mein persönlicher Favorit. Beachten Sie, dass eine interpolation, verwendet werden blind und ohne Verständnis oder die Wertschätzung der Fallstricke und produzieren sinnlose Ergebnisse. Aber das gilt für fast jede numerische Methode.