Vous êtes sur la page 1sur 13

ESCUELA POLITÉCNICA DEL EJÉRCITO

INGENIERÍA CIVIL

”MÉTODOS NUMÉRICOS”

José Israel Gualavisı́ Dı́az

Nivel IV - competencias

Noviembre-2010

1
Índice
1. Interpolación de Lagrange 3
1.1. Determine en los siguientes casos el polinomio interpolador de Lagrange para
aproximar la funcion f (x) = x3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Modificar el codigo dado para que realice el gràfico de los nodos (puntos) y el
polinomio interpolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3. Cree su propio codigo para el mètodo de Lagrange . . . . . . . . . . . . . . . . . 5
1.4. En el cuadro, se muestran temperaturas que fueron medidas cada hora, durante
un lapso total de 5 horas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Interpolación de Newton 7
2.1. En base a las funciones y datos que se muestran en el cuadro, realizar. . . . . . . 7
2.2. Considere M + 1 puntos (xo , yo ),.....,(xM , yM ) . . . . . . . . . . . . . . . . . . . . 10
2.3. En el código dado en la sección anterior, la matriz D se emplea para alamacenar
la tabla de diferencias divididas: . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2
INTERPOLACIÓN

1. Interpolación de Lagrange

1.1. Determine en los siguientes casos el polinomio interpolador de Lagrange


para aproximar la funcion f (x) = x3 .

Figura 1: f (x) = x3

La resolución de este problema se lo realizó mediante un prógrama creado en Matlab.

function [C,L] = Lagrange(x,y)

w=length(x);
n=w-1;
L=zeros(w,w);

for k=1:n+1
V=1;

for j=1:n+1;
if k~=j

3
V=conv(V,poly(x(j)))/(x(k)-x(j));
end
end
L(k,:)=V;
end

C=y;

C=C.*L;

1. El polinomio Cuadrático P2 (x) Para los nodos x0 = −1, x1 = 0 y x2 = 1.

Los resultados obtenidos con el programa son:

Punto xk f (xk )
1 −1 −1
2 0 0
3 1 1

 
0,5000 −0,5000 0
L = −1,0000 0 1,0000
0,5000 0,5000 0

C= 0 1 0

2. El polinomio Cúbico P3 (x) Para los nodos x0 = −1, x1 = 0, x2 = 1 y x3 = 2

Los resultados obtenidos con el programa son:

Punto xk f (xk )
1 −1 −1
2 0 0
3 1 1
4 2 8

 
−0,1667 0,5000 −0,3333 0
 0,5000 −1,0000 −0,5000 1,0000
L=
−0,5000 0,5000

1,0000 0 
0,16670 −0,1667 0

C= 1 0 0 0

4
1.2. Modificar el codigo dado para que realice el gràfico de los nodos (puntos)
y el polinomio interpolador

Para que el programa anterior grafique los nodos y el Polinomio intepolador es necesisario
añadir este código luego de todo el código anterior:

x1=min(x):0.001:max(x);
y1=polyval(C,x1);
clf
grid on
hold on
plot(x,y,’o’)
plot(x1,y1,’red’)
title(’Polinomio Interpolador’)

1.3. Cree su propio codigo para el mètodo de Lagrange

function poli = lagmio(x,y)

poli=0;
syms w;
n=length(x);

for i=1:n
L=1;
for j=1:n
if(i~=j)
L=L*(w-x(j))/(x(i)-x(j));
end
end

poli=poli+L*y(i);
poli=simplify(poli);
end
ezplot(poli);
hold on;
plot (x,y,’*’);
hold on;
grid;

1.4. En el cuadro, se muestran temperaturas que fueron medidas cada hora,


durante un lapso total de 5 horas

Cuadro de temperaturas:

5
H T
13 18
14 18
15 17
16 16
17 15
18 14

1. Construir el polinomio interpolador de Lagrange correspondiente a los datos del cuadro.

Empleando el programa anterior tenemos como resultado:

x4 − 69 ∗ x3 + 1796 ∗ x2 − 2094 ∗ x + 93120


(x − 11) ∗
120

2. Estimar la temperatura media durante el periodo de 5 horas dado.

La temperatura media cuando el tiempo es de 5 horas, se obtiene evaluando el polinomio


en x=5

El resultado de evaluar el polinomio en x=5 es -1260

3. Dibuje los datos del cuadro y el polinomio interpolador encontrado, en el mismo grafico.
Discuta el erro que puede aparecer al usar dicho polinomio para estimar la temperatura
media.

Figura 2: f (x) = x3

6
2. Interpolación de Newton

2.1. En base a las funciones y datos que se muestran en el cuadro, realizar.

1. Calcular la tabla de diferencias divididas para las funciones y datos.


2. Escribir los polinomios interpoladoresde Newton P1 , P2 , P3 y P4 .
3. Calcular los valores de los polinomios hallados, en el apartado anterior, para los valores de
x dados.
4. Compare los valores obtenidos con los valores exactos.

1
Para f (x) = x 2

x=4,5;7,5

k xk f (xk )
0 4 0
1 5 0,75
2 6 2,25
3 7 3,00
4 8 2,25

2
Para f (x) = 3 ∗ sin( π∗x
6 )

x=1,5;3,5

k xk f (xk )
0 0 2
1 1 2,23
2 2 2,44
3 3 2,64
4 4 2,82

Para la resolución de este ejercicio hemos desarrollado el siguiente código en Matlab:

—–¿CÓDIGO DEL MÉTODO DE INTERPOLACION DE NEWTON ¡——-

7
function [C,D]=newtonpoly(x,y)

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

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

Tabla de diferencias divididas obtenida a partir del programa:

1
P araf (x) = x 2
 
2 0 0 0 0
2,23 0,23 0 0 0 
 
D = 2,44 0,21 −0,01
 0 0 

2,64 0,2 0,005 0,0017 0 
2,82 0,18 −0,01 −0,0018 −0,0008

 π ∗ x 2
P araf (x) = 3 ∗ sin( )
6

 
0 0 0 0 0
0,75 0,75 0 0 0 
 
D = 2,25
 1,5 0,375 0 0 
3,00 0,75 −0,375 −0,25 0 
2,25 −0,75 −0,75 −0,125 0,0312

Polinomios Interpoladores

1
Para f (x) = x 2

8
P1 (x) = 0,23x + 1,77
P2 (x) = −0,1x2 + 0,26x + 1,75
P3 (x) = 0,017x3 − 0,112x2 + 0,447x + 1,648
P4 (x) = −0,008x4 + 0,025x3 − 0,14x2 + 0,487x + 1,6288

2
Para f (x) = 3 ∗ sin( π∗x
6 )

P1 (x) = 0,75x − 0, 75
P2 (x) = 0,375x2 − 0,375x
P3 (x) = −0,25x3 + 1,875x2 − 3,125x + 1,5
P4 (x) = 0,0312x4 − 0,562x3 + 2,967x2 − 4,68x + 2,2

Valores de P(x) para los valores de x dados

1
Para f (x) = x 2

P (x) 4,5 7,5 f (4, 5) = x1 /2 f (7, 5) = x1 /2


1 2,9357 3,495 2,12132 2,7386
2 2,625 3,1375 2,12132 2,7386
3 2,7175 3,495 2,12132 2,7386
4 2,805 5,42 2,12132 2,7386

2
Para f (x) = 3 ∗ sin( π∗x
6 )

2 2
P (x) 1,5 3,5 f (1, 5) = 3 ∗ sin( π∗x
6 ) f (3, 5) = 3 ∗ sin( π∗x
6 )
1 0,375 1,5775 5,636 ∗ 10 −4 3,068 ∗ 10−3
2 0,2815 3,28125 5,636 ∗ 10−4 3,068 ∗ 10−3
3 0,1875 2,8125 5,636 ∗ 10−4 3,068 ∗ 10−3
4 0,1528 2,78325 5,636 ∗ 10−4 3,068 ∗ 10−3

1
Para f (x) = x 2

P (x) Error en 4.5 Error en 7.5


4 0,383 0,356
3 0,237 0,1456
2 0,280 1,144
1 0,322 0,979

9
2
Para f (x) = 3 ∗ sin( π∗x
6 )

P (x) Error en 1.5 Error en 3.5


1 0,8945 0,4379
2 0,8123 0,1722
3 0,875 0,0048
4 0,898 0,0056

2.2. Considere M + 1 puntos (xo , yo ),.....,(xM , yM )

1. Pruebe que si las (N + 1)-ésimas diferencias son divididas son cero, entonces
las siguientes hasta la M -ésimas también son cero.

Resloviendo el siguiente ejemplo se tiene:

x f (x)
−2 −18
−1 −5
0 −2
2 −2
3 −7
6 142

−18 0
 
0 0 0 0
 −5 13 0 0 0 0
 
 −2 3 −5 0 0 0
D=
 −2 0 −1 1 0 0

 
 7 9 3 1 0 0
142 45 9 1 0 0

con este ejemplo queda demostrado que si las (N + 1)-ésimas diferencias son
divididas son cero, entonces las siguientes hasta la M -ésimas también son cero.

2. Pruebe que si las (N + 1)-ésimas diferencias son divididas son cero, entonces
existe un polinomio PN (x) de grado N tal que:

PN (x) = yk P arak = 0, 1, 2, ......., M

Evaluando en los polinomios resultantes se tiene:

—-¿P3 (x) = x3 − 11x2 + 39x − 47

Para K = 1 =¿PN (x) = -18 =¿yk

Para K = 2 =¿PN (x) = -5 =¿yk

10
Para K = 3 =¿PN (x) = -2 =¿yk

—-¿P2 (x) = −5x2 + 28x + 41

Para K = 1 =¿PN (x) = -18 =¿yk

Para K = 2 =¿PN (x) = -5 =¿yk

—-¿P1 (x) = −13x − 5

Para K = 1 =¿PN (x) = -18 =¿yk

con esto se puede concluir que existe un polinomio PN (x) de grado N tal que:

PN (x) = yk P arak = 0, 1, 2, ......., M

2.3. En el código dado en la sección anterior, la matriz D se emplea para


alamacenar la tabla de diferencias divididas:

1. Compruebe que la siguiente modificacion del código dado, es una forma equiv-
alente de calcular el polinomio interpolador de Newton.

for k=0:N
A(k) = y(k);
end

fori=1:N
for k=N:-1:j
A(k) = (A(k)-A(k-1))/(x(k)-x(k-j));
end
end

El código proporcionado posee errores en el programa, ya que las dimensiones


de la matriz que se dan en este código son incompatibles para realizar las
operaciones necesarias para la resolución del método. ası́ como también hace
referencia a columnas inexistentes como es el caso de la columna 0 (cero)

11
El código corregido de la interpolación de Newton es el siguiente

for k=1:N
A(k,1) = y(k);
end
for i = 1:N-1
for j=N:-1:i+1
y(j) = (y(j) - y(j-1)) / (x(j) - x(j-i));
end

2. Repita el primer ejericio e indique las diferencias.

Polinomios Interpoladores

1
Para f (x) = x 2

P1 (x) = 0,23x + 1,77


P2 (x) = −0,1x2 + 0,26x + 1,75
P3 (x) = 0,017x3 − 0,112x2 + 0,447x + 1,648
P4 (x) = −0,008x4 + 0,025x3 − 0,14x2 + 0,487x + 1,6288

2
Para f (x) = 3 ∗ sin( π∗x
6 )

P1 (x) = 0,75x − 0, 75
P2 (x) = 0,375x2 − 0,375x
P3 (x) = −0,25x3 + 1,875x2 − 3,125x + 1,5
P4 (x) = 0,0312x4 − 0,562x3 + 2,967x2 − 4,68x + 2,2

Valores de P(x) para los valores de x dados

1
Para f (x) = x 2

P (x) 4,5 7,5 f (4, 5) = x1 /2 f (7, 5) = x1 /2


1 2,9357 3,495 2,12132 2,7386
2 2,625 3,1375 2,12132 2,7386
3 2,7175 3,495 2,12132 2,7386
4 2,805 5,42 2,12132 2,7386

12
2
Para f (x) = 3 ∗ sin( π∗x
6 )

2 2
P (x) 1,5 3,5 f (1, 5) = 3 ∗ sin( π∗x
6 ) f (3, 5) = 3 ∗ sin( π∗x
6 )
1 0,375 1,5775 5,636 ∗ 10 −4 3,068 ∗ 10−3
2 0,2815 3,28125 5,636 ∗ 10−4 3,068 ∗ 10−3
3 0,1875 2,8125 5,636 ∗ 10−4 3,068 ∗ 10−3
4 0,1528 2,78325 5,636 ∗ 10−4 3,068 ∗ 10−3

1
Para f (x) = x 2

P (x) Error en 4.5 Error en 7.5


4 0,383 0,356
3 0,237 0,1456
2 0,280 1,144
1 0,322 0,979

2
Para f (x) = 3 ∗ sin( π∗x
6 )

P (x) Error en 1.5 Error en 3.5


1 0,8945 0,4379
2 0,8123 0,1722
3 0,875 0,0048
4 0,898 0,0056

La diferencia con el anterior programa es que no crea el polinomio de diferen-


cias divididas de forma explı́cita, sino que opera directamente creando un vector
equivalente a toda la matriz de diferencias divididas.

13