martes, 10 de noviembre de 2009

Interpolación Numérica

Primeramente algo de musica que gusten para darle un ameno vistazo a este blog



Haggard "Eppur Si Muove"

Anathema "Closer"

OPETH "Hopes Leaves"


En el presente Blog, se pretende tener una distintiva ayuda para jovenes (como yo XD) que crean conveniente un tutorial o una guia practica y sencilla en Analisis Numerico, nos centraremos primeramente en el tema de Interpolación, utilizando un par de métodos faciles y sencillos para la resolucón de problemas de este tipo

SEAN TODOS BIENVENIDOS!



Descargas

"Documento PDF de interpolación"

Para comenzar, resaltaremos que

Interpolacion viene de Inter que en latin es entre y de polaris que denota la equidistancia de puntos o de polos es decir entre puntos o entres lo que denotamos como polos



OK!! eso significa que interpolación vendra a ser en el subcampo matemático del análisis numérico, la construcción de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos.
En ingeniería y algunas ciencias es frecuente disponer de un cierto número de puntos obtenidos por muestreo o a partir de un experimento y pretender construir una función que los ajuste.

Otro problema estrechamente ligado con el de la interpolación es la aproximación de una función complicada por una más simple. Si tenemos una función cuyo cálculo resulta costoso, podemos partir de un cierto número de sus valores e interpolar dichos datos construyendo una función más simple. En general, por supuesto, no obtendremos los mismos valores evaluando la función obtenida que si evaluásemos la función original, si bien dependiendo de las características del problema y del método de interpolación usado la ganancia en eficiencia puede compensar el error cometido.

En todo caso, se trata de, a partir de n parejas de puntos (xk,yk), obtener una función f que verifique



a la que se denomina función interpolante de dichos puntos. A los puntos xk se les llama nodos. Algunas formas de interpolación que se utilizan con frecuencia son la interpolación lineal, la interpolación polinómica (de la cual la anterior es un caso particular), la interpolación por medio de spline o la interpolación polinómica de Hermite .........

Podemos enunciar muchas utilidades a este analisis matemático que nombraremos mas adelante para que TU tambien lo apliques sea que estudies o no el tema,

NO ESTA DEMAS APRENDER UN POCO ^^


Comenzaremos por...

el MÉTODO !!!!



Casi siempre, dentro de la rama de las matemáticas, la parte logica radica en estas herramientas o métodos y han sido la pesadilla de muchos en periodos de colegio XD...

POR ELLO!!!

Procurare explicar las formulas según el método que apliquemos, a la vez adjuntare un pequeño Tutorial para aplicar las formulas mensionadas en el programa desarrollador de aplicaciones matemáticas MATHLAB (Version 6 algo pasada pero con grandes ventajas, liviana y ademas muy sencilla)




creo yo tb será util para la version 7 que dejo aca para su descarga si no lo tienen ^^



MATHLAB 7 descarga

Método de Lagrange

En análisis numérico, el polinomio de Lagrange, llamado así en honor a Joseph-Louis de Lagrange, es el polinomio que interpola un conjunto de puntos dado en la forma de Lagrange. Fue descubierto por Edward Waring en 1779 y redescubierto más tarde por Leonhard Euler en 1783.

Dado que existe un único polinomio interpolador para un determinado conjunto de puntos, resulta algo confuso llamar a este polinomio el polinomio interpolador de Lagrange. Un nombre más conciso es interpolación polinómica en la forma de Lagrange.




El polinomio de interpolación de Lagrange se plantea como sigue:



Donde los polinomios se llaman los polinomios de Lagrange, correspondientes a la tabla de datos.



tenemos como formula para su aplicacion




Este método nos facilita una solución que llevada a Mathlab se toman en cuenta ciertas consideraciones para su programación

primero tomemos en cuenta una breve introduccion a esta aplicacion en el mathlab


Una vez ingresado al programa , nos vamos directamente a la creación de un M-file


Podemos nombrar muchisimas utilidades en esta version de matlab, la programación sigue un amplio parametro de caracteres para su sintaxis, lo que nos permitirá desarrollar el respectivo programa con sus respectivas condiciones, colocamos a continuación, como muestra la imagen, el código

function p = lagrange(x,y,x0)
n = length(x);
L = zeros (n,1);
fprintf('k x y L/n')
for t = 1:length(x0)
for k = 1:n;

prod1 = 1;
prod2 = 1;
for i =1 :n
if i ~=k

prod1 = prod1*(x0(t)-x(i));
prod2 = prod2*(x(k)-x(i));
end
end
L(k)=prod1/prod2;
end
p(t)=0;
for k = 1:n
p(t)=p(t)+L(k)*y(k);
fprintf('%5d%10.6f%10.6f%10.6f\n',k,x(k),y(k),L(k))
end
end

El código nos muestra las respectivas condiciones y la formula para el desarrollo del método de Lagrange

a continuación un ejemplo para su desarrollo que será comparado con la funcion interp1 que es una función dada por defecto en matlab

Y = Sen(x+1) ; X = entre 0 y 15 (en matlab podemos darle un rango de 0 a 15 sea de 1 en 1 o de 0.5 en 0.5 de equidistancia con la siguiente instruccion (X = 0:0.5:15)




A continuación, probamos nuestor programa colocando nuestra función creada de la siguiente forma; "Lagrange(x,y,(valor que queremos hallar) 2.5(ejemplo)"



El resultado para 2.5 en una función de sen(x+1) es -0.3508



MÉTODO DE INTERPOLACIÓN POR NEWTON





- El polinomio de interpolación de Newton se define de la siguiente manera:





Para calcular los coeficientes b0,b1,...,bn , es conveniente construir una tabla de diferencias divididas como la siguiente :



Al igual que en el método de Lagrange, la aplicacion del método de interpolación por Newton puede ser llevada muy facilmente en el programa Mathlab




function p=internewton(x,y,x0)
for t = 1:length(x0)
n = length(x);
f = zeros (n,n);

for i = 1:n
f(i,1)=y(i);
end;
for j = 2 :n
k = j-1;
for i = 1 : n+1-j
f (i,j) = (f(i+1,k)-f(i,k))./(x(i+j-1)-x(i));
end;
end
prod = 1;
suma =0;
for j = 1:n
suma = suma+f(i,j).*prod;
prod = prod.*(x0-x(j));
end;

%tabla

fprintf('\n x f(j\n');
fprintf('==========')
for j = 1:n;
fprintf('==========')
end
fprintf('\n');
for i = 1:n
fprintf('%10.6f',x(i));
for j = 1 :n+1-i
fprintf('%10.6f',f(i,j));
end
fprintf('\n')
end
p = suma;
end



Ponemos a prueba el código del programa en la función anterior "Sen(x+1) para 2.5"




Como podemos observar el restulado, es el mismo -0.3508

Las aplicaciones que podemos realizar en Matlab son casi ilimitadas