4.2.1 Polinomio de interpolacion con diferencias divididas de newton

POLINOMIO DE INTERPOLACION CON DIFERENCIAS DIVIDIDAS DE NEWTON
En análisis numérico, la interpolación polinómica es una técnica de interpolación de un conjunto de datos o de una función por un polinomio. Es decir, dado cierto número de puntos obtenidos por muestreo o a partir de un experimento se pretende encontrar un polinomio que pase por todos los puntos.
Dada una función f de la cual se conocen sus valores en un número finito de abscisas x0,x1,...,xm, se llama interpolación polinómica al proceso de hallar un polinomio pm(x) de grado menor o igual a m.
Motivación del polinomio interpolador
La interpolación polinómica es un método usado para conocer, de un modo aproximado, los valores que toma cierta función de la cual sólo se conoce su imagen en un número finito de abscisas. A menudo, ni siquiera se conocerá la expresión de la función y sólo se dispondrá de los valores que toma para dichas abscisas.
El objetivo será hallar un polinomio que cumpla lo antes mencionado y que permita hallar aproximaciones de otros valores desconocidos para la función con una precisión deseable fijada. Por ello, para cada polinomio interpolador se dispondrá de una fórmula del error de interpolación que permitirá ajustar la precisión del polinomio.

Cálculo del polinomio interpolador                         
Se dispone de varios métodos generales de interpolación polinómica que permiten aproximar una función por un polinomio de grado m. El primero de estos polinomios es el método de las diferencias divididas de Newton. Otro de los métodos es la interpolación de Lagrange, y por último, la interpolación de Hermite.

CÓDIGO DE POLINOMIO DE INTERPOLACION CON DIFERENCIAS DIVIDIDAS DE NEWTON EN MATLAB
% ingreso de datos.

x=[-1 0 1 2 3];y=[3 0 -1 1 2];

xa=x;ya=y;

%se le dan los valores de xa e ya a las variables x e y que serán utilizadas mas adelante.

% Formacion de las diferencias divididas a través de ciclos “for” e “if”.

d=zeros(length(y));

%zeros(n) genera una matriz de nxn con todos sus valores iguales a cero, en este caso utiliza el largo del arreglo y

d(:,1)=y';

%Se asigna valor de y’ a la columna de la matriz creada anteriormente

for k=2:length(x)

%se hacen dos ciclos, uno dentro de otro, donde van variando los valores de j y k, y va entregando cuales son los valores que se utilizaran en

for j=1:length(x)+1-k


d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j));

end

end

for w=1:length(x)

ds=num2str(abs(d(1,w)));

%los valores numericos de la matriz “ds” en las coordenadas (1,w) se transforman en “string”, cuyos valores no serán modificados después, y serán mostrados al final en “presentación de resultados”


if w>1

%si w es mayor que 1…

if x(w-1)<0

%si la multiplicación de x por (w-1)es menor a cero, se agrega un símbolo “+” al polinomio de resultado.

sg1='+';

else

%en caso contrario, el símbolo matemático es “-“.

sg1='-';


end

end

if d(1,w)<0

sg2='-';

else

sg2='+';


end

if w==1

acum=num2str(d(1,1));

%se crea un contador de nombre “acum” que irá almacenando el polinomio obtenido, y lo mostrará el final del codigo

elseif w==2

polinact=['(x' sg1 num2str(abs(x(w-1))) ')' ];

actual=[ds '*' polinact];


acum=[acum sg2 actual];

else

polinact=[polinact '.*' '(x' sg1 num2str(abs(x(w-1))) ')' ];

actual=[ds '*' polinact];

acum=[acum sg2 actual];

end

end


% Presentacion de resultados

fprintf('los valores de X e Y son');

disp(xa);

disp(ya);

%imprimir en pantalla el polinomio obtenido

fprintf('El polinomio interpolación Newton obtenido es: %s ',acum);

Comentarios

Entradas populares de este blog

4.1.2 Método de mínimos cuadrados

4.1.2.3 Regresión lineal multiple