____________________________________________________________

Asesorías en Matemáticas, Física e Ingeniería


_____________________________________________________________

Por: Carlos Armando De Castro P.

El siguiente algoritmo recibe un número arbitrario de pares de datos en la forma de una matriz de 2*n, donde las abcisas se encuentran en la primera fila (o renglón) y las ordenadas en la segunda fila de la matriz, e interpola los puntos dados por medio de poligonales ("splines" de orden 1) devolviendo los vectores m y b de los coeficientes de las rectas que interpolan a los datos y además entrega su gráfica:

________________________________________________________________________________________________

function [m,b]=spline_lineal(X) 

n=length(X(1,:));
 

for i=1:n-1;
    m(i)=(X(2,i+1)-X(2,i))/(X(1,i+1)-X(1,i));
    b(i)=X(2,i);
    x=X(1,i):X(1,i+1);
    y=m(i)*(x-X(1,i))+b(i);
    hold on;
    plot(x,y,'b');
end
 

for i=1:n;
    hold on;
    plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
    title('Interpolación por "splines" de orden 1.');
end

________________________________________________________________________________________________

Por ejemplo, para los datos {(1,0),(2,3),(3,4),(4,-6),(5,2),(6,4),(7,0),(8,4),(9,3)}, se escribe en el Command Window:

>>X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
>>[m,b]=spline_lineal(X)

Y el programa entrega los resultados:

m = 3  1 -10  8  2  -4  4  -1

b =  0  3  4  -6  2  4 0  4