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.
InformationsquelleAutor user1018331 | 2011-11-15
Schreibe einen Kommentar