Interpolació de Lagrange amb Octave

Tenim els punts següents: f(-1)=2, f(0)=0, f(3)=4, f(7)=7. Volem estimar el valor de f(4) fent servir la interpolació de Lagrange.

Utilitzem aquesta funció d’Octave (extreta del llibre “Applied numerial methods using Matlab”).

gerard@Zeus:~> more lagranp.m
function [l,L] = lagranp(x,y)
%Input : x = [x0 x1 .... xN], y = [y0 y1 ... yN]
%Output : l = Lagrange polynomial coefficients of degree N
%       L = Lagrange coefficient polynomial
N = length(x)-1;
l = 0;
for m = 1:N + 1
        P = 1;
        for k = 1:N + 1
                if k ~= m, P = conv(P,[1 -x(k)])/(x(m)-x(k)); end
        end
        L(m,:) = P;
        l = l + y(m)*P;
end

Ara, executem Octave:

octave:1> x = [ -1 0 3 7];
octave:2> y = [ 2 0 4 7 ];
octave:3> lagranp(x,y)
ans =

  -0.11458   1.06250  -0.82292   0.00000

Per tant, f(4)=-0.11458*4^3 +  1.06250*4^2  -0.82292* 4 +  0.00000 = 6.3752

Gerard

Gerard Farràs i Ballabriga.