0% encontró este documento útil (0 votos)
52 vistas11 páginas

Lab 2

El documento describe tres métodos para interpolar polinomios a partir de datos: 1) Método de la matriz de Vandermonde para hallar los coeficientes de un polinomio de grado 6. 2) Método de Lagrange para hallar un polinomio de grado 6. 3) Método de diferencias divididas de Newton para hallar un polinomio de grado 6 y calcular el error de interpolación.

Cargado por

Jhonathan C L
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
52 vistas11 páginas

Lab 2

El documento describe tres métodos para interpolar polinomios a partir de datos: 1) Método de la matriz de Vandermonde para hallar los coeficientes de un polinomio de grado 6. 2) Método de Lagrange para hallar un polinomio de grado 6. 3) Método de diferencias divididas de Newton para hallar un polinomio de grado 6 y calcular el error de interpolación.

Cargado por

Jhonathan C L
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

2.

Interpolación de Polinomios-Coeficientes Indeterminados- Método de lagrange y método de


Newton
a) Implemente un algoritmo en Matlab que permita interpolar el polinomio P(x) de grado 6 que
satisface los datos de la siguiente tabla:

Para ello calcule los coeficientes indeterminados de Px=a0+a1.x+a2.x2+…+a6.x6 , utilizando la


multiplicación por la inversa de la matriz de Vandermonde.
Implemente un algoritmo en Matlab que permita visualizar la gráfica del polinomio P(x) en color
azul en el intervalo [-1,7] añadiendo a la gráfica los puntos (x,P(x)) en color rojo de la tabla de
datos. Los ejes y la grilla pueden ir de color negro.

Hallando la matriz de vandermonde con la función vander() en Matlab


Luego hallamos la inversa de la matriz de vandermonde y definimos una matriz C

Para hallar los coeficientes de P(x) debemos multiplicar la matriz B*C

a 6=0.2667 a5 =−4.6667 a4=30.6667 a3=−93.3333 a2=129.0667 a1=−63.0000 a0=0 Px=0.2667 x 6−4.6667


Hacemos un algoritmo en Matlab para ver la gráfica y los puntos.
b) Implemente un algoritmo en Matlab que permita interpolar el polinomio P(x) degrado 6 que
(−1 ) x
P ( x) =
satisface 7   para x = 0,1, 2, …,6 por el Método de Lagrange. Calcule cada polinomio
()x
Li(x). Calculé el polinomio P(x) Evalué el valor de P (7) usando el Matlab. Calcule de forma
teórica el valor de P (7) y compare con el valor hallado usando el Matlab, verifique si los resultados
coinciden.
Solución:
Polinomio interpolante:

7 x6 −133 x 5 +980 x 4 −3521 x 3 +6321 x 2−5094 x +1260


1260
De forma manual:

Comparando los valores vemos que en ambos sale igual valor.


c) Implemente un algoritmo en Matlab que permita interpolar el polinomio P(x) de grado 6 que
satisface los datos de la siguiente tabla:

Para ello calcule las diferencias divididas Fx0,Fx0,x1,…, F[x0,x1,…,x6] y calcule los coeficientes del
polinomio P(x).
Calcule de forma teórica el valor de P(15) y compare con el valor hallado en el inciso anterior,
verifique si los resultados coinciden. De no ser así, explique a que se debe el error.
Solución:
Polinomio interpolado:
21+13∗( x−8 ) + 4∗( x−8 ) .∗( x−9 ) +0.83333∗ ( x −8 ) .∗( x−9 ) .∗( x−10 ) +0.125∗( x−8 ) .∗ ( x −9 ) .∗( x−10 ) .∗( x−1
Simplificando:

P( x )=0.0013889 x6 −0.0708337 x 5+1.5763905 x 4 −18.9790915 x 3 +129.9209906 x2−475.4427008 x+726.984

P ( 15 )=609
La diferencia son unos pocos decimales.
3. ESTIMACIÓN DEL ERROR LOCAL Y DEL ERROR GLOBAL

a) Sea fx=x∙senx, usando Matlab interpole un polinomio Px de modo tal que Px=fx para x=0 , 0.2 ,
0.4 , 0.6 , 0.8 , 1. Usando la fórmula del error, haga una estimación o cota del error de P0.5 y
compare con el error real obtenido: f0.5-P0.5.

Solución:
%interpolacion de newton
%function[yi,p,b] = inter_newton(x,y,xi)
%Inicializacion de variables
x=input('introduzca el vector "xi"= ');
y=input('introduzca el vector "P(xi)"= ');
xi=input('introduzca el valor "xi" a interpolar = ');
n=length(x);
b=zeros(n);
b(:,1)=y(:);

%obtencion de la tabla de diferencias finitas


%disp('Obtanción de la tabla de diferencias finitas ')
for j=2:n
    for i=1:n-j+1
        b(i,j)=(b(i+1,j-1)-b(i,j-1))/(x(i+j-1)-x(i))
    end
end

%calculo del dato interpolado


%dip ('valor de "y" interpolado')
x1=1;
yi=b(1,1);
for j=1 :n-1
    x1=x1.*(xi-x(j));
    yi=yi+b(1,j+1)*x1;
end
disp('Elvalor de "P(0.5)" interpolado es igual a= '), disp(yi);

%Construye el polinomio
p=num2str(b(1,1));
xx=x*-1;
for j=2:n
    signo='';
    if b(1,j)>= 0
        signo= '+';
    end

    x1 ='';
    for i=1:j-1
        signo2='';
        if xx(i)>=0
            signo2='+';
        end
        x1=strcat(x1,'*(x',signo2,num2str(xx(i)),')');
    end
    p=strcat(p,signo,num2str(b(1,j)),x1);
end
disp('El polinomio de interpolación de newton es igual a : ')
P=inline(p)
z=xi*sin(xi);
w=abs(z-yi);
disp('El valor de f(0.5) es igual a: '), disp(z);
disp('El error obtenido es : | f(0.5)-P(0.5)|: '), disp(w);

   
Sea:

E ( x )=|f ( x ) −P n (x)|entonces existe ξ ∈ [ a ,b ] tal que :

|f (5+1 ) ( ξ )|
E ( x )= ( x−x 0 ) ( x−x 1 ) ( x−x 2 ) … ( x−x n )
( n+1 ) !
Tenemos:
x 0=0 ; x 1=0.2 ; x 2=0.4 ; x 3=0.6 , x 4 =0.8 ; x5 =1, por lo tanto n=5
Por lo tanto:

|f (6) ( ξ )|
E ( x )= ( x−x 0 ) ( x−x 1 ) ( x−x 2) ( x−x 3 ) ( x−x 4 ) ( x−x 5 )
(6)!
Entonces:

f (6 )=6 cos x−x sin x , ξ ∈ [ 0,1 ]


Luego:

|f (6 ) ( ξ )|=|6 cos ξ−ξ sin ξ|≤5


Reemplazando obtenemos:

|f (6) ( ξ )|
E ( x )= ( x−0 )( x−0.2 ) ( x−0.4 )( x−0.6 ) ( x−0.8 ) ( x −1 )
(6)!
5
E ( x )≤ ( x )( x−0.2 )( x−0.4 ) ( x −0.6 ) ( x−0.8 ) ( x−1 )
(6 ) !

Para  x=0.5 tenemos:


5
E ( 0.5 ) ≤ ( 0.5 )( 0.3 )( 0 .1 ) (−0.1 )(−0.3 )(−0.5 )=−1.5625 ×10−6
720

⇒|E ( 0.5 )|≤|−1.5625 ×10−6|=1.5625 ×10−6 , cotadel error .

Comparando con el error real obtenido en Matlab se puede apreciar que efectivamente el error real
es menor que la cota o estimación del error hallada.

|f ( 0.5 )−P(0.5)|=1.5512× 10−6 ≤1.5625 ×10−6

También podría gustarte