trabajo
DESCRIPTION
dsajidjadsTRANSCRIPT
Algoritmo para calcular el polinomio interpolador de newton
Universidad de Tarapac Departamento de Matemtica
Introduccin
En la actualidad existen algunos comportamientos que solo pueden ser expresados en forma numrica, ya que no se cuenta con una funcin analtica que los caracterice. Por esta causa se desarrollaron mtodos capaces de construir una interpretacin aproximada del comportamiento del sistema.
Existen diversos mtodos para encontrar un polinomio interpolador, a saber: mtodo de Newton, Lagrange, Segmentario, etc., la diferencia entre uno y otro estriban solamente en la complejidad del mtodo y su error de aproximacin.
En este informe se desarrollar un algoritmo capaz de formar un polinomio interpolador por el mtodo de Newton.
Algoritmo propuesto para calcular el polinomio interpolador de newton El algoritmo anterior calcula una tabla (matriz) con las diferencias divididas, utilizando la ecuacin.
En el siguiente paso se calcula los coeficientes del polinomio interpolador de newton, pero para calcular estos coeficientes se utiliza solo los elementos de la diagonal de la tabla de diferencias divididas. Es decir se calcula un polinomio interpolador de newton, con la siguiente forma.
Para hacer un uso ms eficiente de la memoria de un computador y utilizar un vector en vez de una matriz para almacenar la diagonal de las diferencias divididas se utiliza la siguiente modificacin.
El Proceso realizado por la modificacin del algoritmo se aprecia en la tabla, estos son los valores va tomando el vector A, en el transcurso del programa .1era Fase1er Ciclo2do Ciclo.....nth Ciclo
y0
y1
y2
y3
...............
yn
.......
1era Fase: Los valores del vector Y, son asignados al vector A
1er Ciclo: Los valores del vector A, son modificados desde el punto 1 hasta n, los valores se obtienen utilizando la formula de diferencias divididas.
2do Ciclo: Los valores de A son modificados, desde el punto 2 hasta n, utilizando la formula de diferencias divididas.
nth Ciclo: Este ultimo ciclo calcula el valor de la ultima diferencia dividida
En trmino de procesos realizado, el algoritmo modificado es igual al original. La diferencia estriba en que el nuevo algoritmo guarda los datos necesarios en un vector de orden n y no una matriz. Para que el algoritmo funcione correctamente se deben hacer algunos cambios, ya que esta escrito para que la primera ubicacin de un vector sea cero, siendo que en matlab la primera ubicacin es 1. Finalmente se obtiene.
Utilizando el Algoritmo modificado, calcular el Polinomio Interpolador de Newton para los siguientes datosHora131415161718
Temperatura [C]181817161514
Para este caso:
X= [13 14 15 16 17 18]Y= [18 18 17 16 15 14]
Utilizando el programa se obtiene
A= [18
0 -0.50.16667-0.0416670.0083333]
Este vector contiene la diagonal de las diferencias divididas
C= [0.0083333-0.6666721.292-339.332697.7-8536]
y en modo exacto
C= [1/120-2/3511/24-1018/326977/10-8536]
Esto implica que el polinomio de Newton para los valores dados es:
Grafica del polinomio interpolador
El algoritmo desarrollado permite obtener un polinomio de Newton de grado (n-1) con n datos. El proceso realizado por el algoritmo no permite evaluar el error de interpolacin, para poder evaluar el error de interpolacin se propone realizar la siguiente modificacin
function [C,D]=newpoly(X,Y)
%- X es un vector con la lista de las abscisas
%- Y es un vector con la lista de las ordenadas
% Resultados
%- C es un vector que contiene los coeficientes
% del polinomio interpolador, en potencias
% decrecientes de X
%- D es la tabla de diferencias divididas.
n=length(X);
D=zeros(n,n);
D(:,1)=Y;
for j=2:n
For k=j:n
D(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1));
end
end
%clculo del vector que contiene los coeficientes
%del polinomio interpolador de Newton, escrito
%de forma habitual, en potencias decrecientes de x
C=D(n,n)
for k=(n-1):-1:1
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+D(k,k);
end
for k=0:n
A(k)=Y(k);
end
for j=1:n
for k=n:-1:j
A(k)=(A(k)-A(k-1))/(X(k)-X(k-j))
end
end
n=length(X);
for k=1:n
A(k)=Y(k);
end
for j=2:n
for k=n:-1:j
A(k)=(A(k)-A(k-1))/(X(k)-X(k-j+1));
end
end
C=A(n)
for k=(n-1):-1:1
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+A(k);
end
n=length(X);
for k=1:n
A(k)=Y(k);
end
for j=2:n
for k=n:-1:j
A(k)=(A(k)-A(k-1))/(X(k)-X(k-j+1));
end
end
C=A(n)
for k=(n-2):-1:1
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+A(k);
end
E=A(n);
for i=n-1:-1:1
E=conv(poly(X(i)),E); % E es el vector para evaluar el
end% error de interpolacin
5/5
_1214856987.unknown
_1214929153.unknown
_1214929172.unknown
_1214929186.unknown
_1214929164.unknown
_1214857043.unknown
_1214860224.unknown
_1214845518.unknown
_1214845539.unknown
_1214846397.unknown
_1214845532.unknown
_1214845502.unknown