Mostrando entradas con la etiqueta Interpolación lineal. Mostrar todas las entradas
Mostrando entradas con la etiqueta Interpolación lineal. Mostrar todas las entradas

viernes, 13 de noviembre de 2015

Código en MATLAB para implementar el método de interpolación lineal.

Para implementar el método en MATLAB, se debe crear un script que contenga el siguiente código, este será el programa principal, en el cual se deben vaciar los valores de interés, este es el unico programa que se debe correr. El programa contiene los datos del problema que resolvimos en nuestra entrada "Métodos numéricos, ejemplo del método de aproximación lineal".

%Cienciaparacualquiera.blogspot.com
x=[1,4,5,7,9]
y=[2,4,6,7,10]
plot (x,y,'*r')
x0=0:0.1:10
P0=Metododeaproximacion(x,y,x0)
hold on
plot (x0,P0)
grid on
xlabel('x')
ylabel('y')

title('Plot using linear Interpolation method')

En un nuevo script, se debe vaciar el siguiente código, el cual contiene el método numérico, este programa no debe ser corrido, pero debes asegurarte de guardarlo en la misma carpeta que el script anterior.

function P0=Metododeaproximacion(x,y,x0)
s1=0;
s2=0;
s3=0;
p1=0;
p2=0;
p3=0;

for i=1:length(x)
    s1=(s1+(x(i))^2);
     s2=s2+(x(i));
     s3=s3+(x(i)*y(i));
end
s1=s1
s2=s2
s3=s3

for i=1:length(x)
    p1=p1+x(i);
    p2=(length(x));
    p3=p3+(y(i));
end
p1=p1;
p2=p2;
p3=p3;
a=(((p2*s3)-(p3*s2))/((p2*s1)-(s2*p1))) %"a" es el valor de la pendiente (a = slope value)
b=(((p1*s3)-(s1*p3))/((p1*s2)-(s1*p2)))
P0=((a.*x0)+(b))

PI=@(x0)(((a.*x0)+(b)))

Nota: El codigo aquí mostrado solo representa un esqueleto, si necesitas añadirle más funciones, eres libre de hacerlo.

Si quieres aprender más sobre el método, revisa la siguiente entrada
http://cienciaparacualquiera.blogspot.mx/2015/11/metodos-numericos-el-metodo-de.html




Métodos numéricos, ejemplo del método de interpolación lineal.


El problema consiste en encontrar la mejor recta que aproxime a un conjunto de puntos. A continuación se explicará el método y se realizará un ejemplo para mejorar la comprensión del tema.

Primeramente, debemos recordar la ecuación que describe la distancia entre 2 puntos en un plano.


 El método de aproximación hace uso de una variación de la ecuación anterior.

Para poder definir la ecuación de la recta que mejor aproxima a los puntos, debemos conocer los valores de las variables "m" y "b", que serán sustituidos en la siguiente ecuación (la ecuación general de una linea recta). 

Nota: Ambas ecuaciones son iguales, en el ejemplo que se desarrolla más adelante se utilizará la variable "a" en lugar de "m", debes tener muy claro que ambas variables representan la pendiente de la recta, lo único que se hace es cambiar el nombre de la variable. 



Para encontrar los valores desconocidos de "a" y "b", haremos uso de derivadas parciales, esto con el objetivo de obtener un sistema de 2 ecuaciones con 2 incógnitas, de otra manera sería imposible obtener el valor de dos variables desconocidas con una sola ecuación. El sistema se obtiene de la siguiente manera. 


Acomodando los términos, el sistema de ecuaciones queda de la siguiente manera. 


Nota: Te podrías estar preguntando ¿Que le pasó a ese número 2 que estaba en el sistema anterior? 
Observa que, si se despeja cada ecuación, el dos sería enviado al otro lado para dividir al cero, quedando 0/2, recuerda que el resultado de dividir cero entre cualquier otro número es siempre igual a cero. 

Despejando el anterior sistema de ecuaciones, es posible encontrar los valores de a y b. Seguramente hasta ahora no queda lo suficientemente claro el procedimiento, así que la mejor manera de hacer este procedimiento más fácil de entender, es a través de un ejemplo. 

Ejemplo

Propondremos los siguientes cinco puntos, para los cuales deberemos obtener la recta que mejor los describa, a continuación se muestran los puntos y una gráfica de los mismos. (Si quieres implementar el método en MATLAB, visita la siguiente entrada
http://scienceprocedures.blogspot.mx/2015/11/metodos-numericos-el-metodo-de.html)

X= [1,4,5,7,9]
Y=[2,4,6,7,10]




A partir de ahora, separaremos cada una de las ecuaciones anteriores para que la solución del problema sea más sencilla y didáctica. Comenzaremos con la primera ecuación, separandola en partes más pequeñas.

Al sustituir los valores de "x" y "y" para cada "s", las ecuaciones quedan como se muestra a continuación.

A continuación repetiremos el proceso anterior con la segunda ecuación.


Al sustituir los valores de "x" y "y" para cada "s", las ecuaciones quedan como se muestra a continuación.



Ahora, volveremos a escribir las ecuaciones 1 y 2 en los términos de "s" y "z" que acabamos de obtener.


Al sustituir cada valor, se obtiene el siguiente sistema de ecuaciones.

Ahora es posible encontrar los valores de "a" y "b" para completar la ecuación de la recta que mejor se acerca a nuestros puntos. A continuación se resolverá el sistema de ecuaciones 

Con la información recién obtenida, obtenemos que la ecuación que describe la recta que mejor se acerca a los puntos propuestos es:
Nota que el valor de 0.9837 corresponde a la pendiente de la recta.

A continuación se muestra la gráfica de nuestros puntos propuestos junto con la gráfica de la recta encontrada,

X= [1,4,5,7,9]
Y=[2,4,6,7,10]
y=0.9837x+0.6848
Si quieres implementar el método en MATLAB, visita la siguiente entrada
http://cienciaparacualquiera.blogspot.mx/2015/11/metodos-numericos-el-metodo-de.html