You are on page 1of 19

Universidad Tcnica Federico Santa Mara

Departamento de Matemtica
Laboratorio de Computacin para las Aplicaciones de la Matemtica en
Ingeniera

LABORATORIO DE ANLISIS NUMRICO - MAT270


Quinta Sesin versin MATLAB
Aproximacin de Lagrange, Newton y Hermite cbica.
Semana del Lunes 18 al Viernes 22 de Noviembre de 2013

Coordinador Acadmico del Laboratorio: Profesor Wilmer Bazn (wilmer.bazan@usm.cl)


Ayudante Coordinador y de Software
: Gonzalo Cornejo (gonzalo.cornejog@gmail.com)
Sitio Web
: http://lab.mat.utfsm.cl
Horario de Atencin de alumnos
: A travs de Internet a los ayudantes coordinadores.
JFN/WBD

5.1 INTERPOLACIN LAGRANGE


El siguiente comando implementa interpolacin de Lagrange.
NOTA: Esta funcin no viene incluida con MATLAB, fue descargada del sitio www.mathworks.com
function y=lagrange(x,pointx,pointy)
n=size(pointx,2);
L=ones(n,size(x,2));
if (size(pointx,2)~=size(pointy,2))
y=NaN;
else
for i=1:n
for j=1:n
if (i~=j)
L(i,:)=L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j));
end
end
end
y=0;
for i=1:n
y=y+pointy(i)*L(i,:);
end
end
Cree esta funcin:

cd d:
for conta=1:2
func='function y=lagrange(x,pointx,pointy)\n%\n%LAGRANGE
approx a point-defined
function
using
the
Lagrange
polynomial
interpolation\n%\n%
LAGRANGE(X,POINTX,POINTY)
approx
the
function
definited
by
the
points:\n%
P1=(POINTX(1),POINTY(1)), P2=(POINTX(2),POINTY(2)), ..., PN(POINTX(N),POINTY(N))\n%
and calculate it in each elements of X\n%\n%
If POINTX and POINTY have
different number of elements the function will return the NaN value\n%\n%
function
wrote
by:
Calzino\n%
7-oct-2001\n
%\nn=size(pointx,2);\nL=ones(n,size(x,2));\nif
(size(pointx,2)~=size(pointy,2))\n
y=NaN;\nelse\n
for i=1:n\n
for j=1:n\n
if (i~=j)\n
L(i,:)=L(i,:).*(x-pointx(j))/(pointx(i)-pointx(j));\n
end\n
end\n
end\n
y=0;\n
for i=1:n\n
y=y+pointy(i)*L(i,:);\n
end\nend\n';
a='lagrange.m';
if (~exist(a,'file')),
fid=fopen(a,'w');
func = strrep(func,'%','%%');
fprintf(fid,func);
fclose(fid);
disp('La funcion ha sido creada')
end

end

help lagrange

Generemos una lista ms o menos grande para despus interpolarla con el comando. La lista ser una
muestra de la funcin de Bessel J3(5x) en el intervalo [0, ] .
a = 0;
b = pi;
n = 20;
h = (b-a)/n;
x = a:h:b;
y = besselj(3,5*x);
xx = a:0.01:b;
yy = besselj(3,5*xx);
figure(1);
subplot(2,1,1), plot(x,y,'ro'); grid on;
subplot(2,1,2), plot(xx,yy,'b'); grid on;

Utilicemos el comando descrito para construir un polinomio de interpolacin.Verifiquemos de paso que


efectivamente interpola la tabla:
xi = a:0.01:b;
yi = lagrange(xi,x,y);
clf;
figure(1);
subplot(2,1,1), plot(xi,yi,'b'); grid on;
title('Grfico del Polinomio'); xlabel('x'); ylabel('y');
subplot(2,1,2), plot(xi,yi,'b',x,y,'ro'); grid on;
title('Grfico del Polinomio + Tabla de datos'); xlabel('x'); ylabel('y');

Para ello consideremos las siguientes lneas de cdigo:


clf
figure(1);
plot(xi,yi,'b'); axis([pi/2-0.001 pi/2+0.001 -0.2881 -0.2877]);

Tomemos un subdiferencial de la curva


Bastante bien. Cmo lo hacen?
Si se quisiera programa la frmula de clases habra que generar productos de factores del tipo:
x xj

xi x j

en que i j .

Para ello consideremos la siguiente funcin:


function r=g_lag(z,q1,q2,q3)
if q2==q3,
r = 1;
else
r = (z - q1)/(q2 - q3);
end
for conta=1:2
func='function r=g_lag(z,q1,q2,q3)\n\nif q2==q3,\n r = 1;\nelse\n r = (z - q1)/(q2 q3);\nend\n';
a='g_lag.m';
if (~exist(a,'file')),
fid=fopen(a,'w');
func = strrep(func,'%','%%');
fprintf(fid,func);
fclose(fid);
disp('La funcion ha sido creada')
end
end

Generemos la "Base de Lagrange" de polinomios relativa a la tabla:


function y=lagrange2(x,d)
n = length(d);
for i=1:n,
for j=1:n,
aux1(j) = g_lag(x,d(j),d(i),d(j));
end
y(i)=prod(aux1);
end
for conta=1:2
func='function [y,aux1]=lagrange2(x,d)\n\nn = length(d);\nfor i=1:n,\n for j=1:n,\n
aux1(j) = g_lag(x,d(j),d(i),d(j));\n
end\n
y(i)=prod(aux1);\nend\n';
a='lagrange2.m';
if (~exist(a,'file')),
fid=fopen(a,'w');
func = strrep(func,'%','%%');
fprintf(fid,func);
fclose(fid);
disp('La funcion ha sido creada')
end
end

for i=1:n+1,
[base(i,:),aux1]=lagrange2(x(i),x);
end
disp('Listo')

Ahora se multiplica cada elemento de la base de Lagrange por la correspondiente ordenada:


t=2.4;
lag=y.*lagrange2(t,x);
lag'

Ahora construimos una funcin que evalua la tabla en x= t y despus suma estos valores.
function [res lag]=ww(t,x,y)
for i=1:length(t),
lag = y.*lagrange2(t(i),x);
res(i)=sum(lag);
end
for conta=1:2
func='function
res=ww(t,x,y)\n\nfor
i=1:length(t),\n
y.*lagrange2(t(i),x);\n
res(i)=sum(lag);\nend\n';
a='ww.m';
if (~exist(a,'file')),
fid=fopen(a,'w');
func = strrep(func,'%','%%');
fprintf(fid,func);
fclose(fid);
disp('La funcion ha sido creada')
end
end

Comprobemos si efectivamente la funcin ww(t,x,y) interpola la tabla;


t=0:0.01:pi;
yt=ww(t,x,y);
clf;
figure(1);
plot(t,yt,x,y,'ro');
grid on;

Uno estara tentado a generar primero el polinomio, darle su forma usual y despues evaluarlo.

lag

Lo graficamos:
lambda(1,1)=y(1);
x1=x;
y1=y;
temp=double(vpa(y,3));
x=double(vpa(x,3));
for j=1:length(x)-1
for i=1:length(x)-j
temp(i)=(temp(i+1)-temp(i))/(x(i+j)-x(i));
end
lambda(j+1,1)=temp(1);
end
syms t
phi=1;
temp=0;
for j=1:length(lambda)
temp=phi*lambda(j,1)+temp;
phi=phi*(t-x(j));
end
pol=simplify(temp);
clf
figure(1)
hold on
ezplot(pol,[min(x) max(x)])
plot(x1,y1,'ro');

La combinacin de coeficientes con aritmtica simple provoca un error enorme. Si esto se hiciera
con precisin infinita dara exacto.
Ejercicio.
Ejercicio.
La distribucin de Temperaturas de una plancha de cemento, en funcin del tiempo , est
representada por los pares ordenados {t, T},mostrados a continuacin:
datos={{1800.,117.361},{3600.,120.198},{5400.,123.975},{7200.,127.532},{9000,130.649},
{10800.,133.341},{12600.,135.673},{14400.,137.708},{16200.,139.498},{18000.,141.086},
{19800.,142.506},{21600.,143.785},{23400.,144.943},{25200.,145.999},{27000.,146.966},
{28800.,147.856},{30600.,148.678},{32400.,149.441}}
Donde t es el tiempo medido en segundos [s], y
T es la Temperatura medida en [C] .
Encuentre el polinomio de Lagrange que interpola la tabla anterior.

5.2 CONTRAEJEMPLO DE RUNGE PARA LA INTERPOLACIN


DE LAGRANGE
NOTA HISTORICA: El apellido RUNGE esta asociado con el mtodo clsico para obtener
aproximaciones de soluciones de Ecuaciones Diferenciales Ordinarias, nos referimos al mtodo conocido
con el nombre de RUNGE-KUTTA.
La seccin anterior pusimos a prueba y funcion muy bien la interpolacin de Lagrange para la funcin
de Bessel a ( 5 x ) en el intervalo [0, ] .
Se us el siguiente comando para obtener un polinomio que interpola una tabla.
help lagrange

Generamos una lista mas o menos grande para despues interpolarla con elcomando. Pero esta vez la lista
1
ser una muestra de la funcin de Runge y =
en el intervalo [-1,1]. Veamos lo que ocurre.
1 + 25 x 2
clear
a = -1;
b = 1;
n = 20;
h = (b - a)/n;
x=[a:h:b];
y=1./(1+25*x.^2);
runge = inline('1/(1+25*x^2)');
clf;
figure(1);
subplot(2,1,1), plot(x,y,'ro'); grid on;
title('Grfico de la Tabla'); xlabel('x'); ylabel('y');
subplot(2,1,2), fplot(runge,[-1 1]); grid on;
title('Grfico de la Funcin Runge'); xlabel('x'); ylabel('y');

Utilicemos el comando descrito para construir un polinomio de interpolacin.


xx = a:0.01:b;
yy = lagrange(xx,x,y);
clf;
figure(1);
plot(xx,yy,x,y,'.r'); axis([-1 1 -3 4]); grid on;
title('Grfico de la Funcin Runge'); xlabel('x'); ylabel('y');

Vemos que aparecen grandes oscilaciones (inestabilidades numricas) en los extremos del intervalo.

La alternativa la encontramos en el texto de Jacques Rappaz y Marco Picasso "Introduction l'analyse


numrique" (Presses Polytechniques et Universitaires romandes). A continuacin vemos qu pasa al utilizar
la alternativa propuesta, los puntos de la tabla espaciados, en los cuales se interpola, se llaman puntos de
Chebyschev.
j=0:n;
Xcheby = a + (b - a)/2*(1 + cos((2*j + 1)*pi./(2*(n + 1))));
Ycheby=1./(1+25*Xcheby.^2);
clf;
figure(1);
subplot(2,1,1), plot(Xcheby,Ycheby,'ko'); grid on;
title('Grfico de la Tabla en los puntos dados por Chebyschev');
ylabel('y');
subplot(2,1,2), fplot(runge,[-1 1]); grid on;
title('Grfico de la Funcin Runge'); xlabel('x'); ylabel('y');

xlabel('x');

Utilicemos el comando descrito para construir un polinomio de interpolacin.


XXcheby = a:0.01:b;
YYcheby = lagrange(XXcheby,Xcheby,Ycheby);
clf;
figure(1);
plot(XXcheby,YYcheby,Xcheby,Ycheby,'ro'); grid on;
title('Grfico de la Funcin Interpolada'); xlabel('x'); ylabel('y');

Conclusin:
Se termina la oscilacin en los extremos, los autores de ese texto indican que el
error tiende a cero cuando el nmero de puntos tiende al infinito. Qu paso?, lo ver en
los contenidos del curso ms adelante.
Ejercicio.
El fenmeno puede observarlo para una gran variedad de curvas del mismo tipo
y que se dan en la prctica.
Por ejemplo tome una curva:

x2

1
0.15

Para cuntos ceros de Chebyshev se logra ver una curva interpolante


aceptable ?

5.3 POLINOMIO DE INTERPOLACIN EN DIFERENCIAS


DIVIDIDAS DE NEWTON
Esta es otra forma de obtener un polinio de interpolacin. La ventaja es que solo manipula tablas.
Calculemos las diferencias de primer orden de una tabla dada.
Primero generamos una tabla, en este caso de los cuadrados de los numeros de 1 hasta n .

clear
n = 15;
i = 1:n;
z=[0.5*i' sin(0.5*i')]
figure(1);
plot(z(:,1), z(:,2),'bo'); grid on;
title('Grfica de la tabla'); xlabel('x'); ylabel('y');

Ahora se define una funcin que da las diferencias dividadas de primer orden.
Esto es lo que en teora se denota como f [ x i , x i ] .
Evaluemos en i=1, j=2:
d=inline('(z(i,2)-z(j,2))/(z(i,1)-z(j,1))','i','j','z')
temp=d(1,2,z)
p1=inline('z(1,2)+temp*(x-z(1,1))','x','z','temp')

En particular p1 ( x ) = f [ x 0 ] + f [ x 0 , x1 ]( x x 0 ) corresponde al polinomio lineal que interpola los dos


primeros puntos de la tabla.
Comprobemos que la recta pasa por los dos puntos:
a = z(1,1);
b = z(2,1);
[a p1(a,z,temp) ]

temp=d(1,2,z)
[b p1(b,z,temp)]

Interpolemos en el siguiente tramo y mostremos el trazado


temp=d(2,3,z);
p2=inline('z(2,2)+temp*(x-z(2,1))','x','z','temp')
[b p2(b,z,temp)]

[z(3,1) p2(z(3,1),z,temp)]

Tracemos:
dib1 = [z(1,1) p1(z(1,1),z,d(1,2,z));z(2,1) p1(z(2,1),z,d(1,2,z))];
dib2 = [z(2,1) p2(z(2,1),z,d(2,3,z)); z(3,1) p2(z(3,1),z,d(2,3,z))];
figure(1);
subplot(2,1,1), plot(dib1(:,1), dib1(:,2)); grid on;
title('Grfica de p2(x)'); xlabel('x'); ylabel('p2(x)');

subplot(2,1,2), plot(dib2(:,1), dib2(:,2)); grid on;


title('Grfica de p2(x)'); xlabel('x'); ylabel('p2(x)');

Los dos Juntos:


clf;
figure(1);
plot(dib1(:,1), dib1(:,2),dib2(:,1),dib2(:,2)); grid on;
title('Grfica de p1(x) y p2(x)'); xlabel('x'); ylabel('p1(x), p2(x)');

Las siguientes lneas de cdigo calculan la interpolante polinomial correspondientes a la tabla formada de
las interpolantes lineales en intervalos sucesivos.
Para esto, se calcula la recta que interpola cada sub intervalo y en base a esta se calculan los puntos
intermedios en los puntos xi ,xi + h,xi + 2h, , xi +1 .
Calculemos la interpolante polinomial lineal correspondiente a la tabla y luego grafiqumoslo.
h=0.01;
for i=1:length(z)-1,
xj=z(i,1):h:z(i+1,1);
for j=0:length(xj)-1,
yi((length(xj)-1)*(i-1)+j+1)=z(i,2)+d(i,i+1,z)*(xj(j+1)-z(i,1));
end
end
disp('Listo')

xi = z(1,1):h:z(length(z),1);
figure(1);
plot(xi,yi,z(:,1),z(:,2),'r.'); grid on;
title('Tabla Interpolada y puntos de la tabla');
xlabel('x'); ylabel('y');

Ahora se define recursivamente las diferencias divididas de orden superior.


Esto en teora esto se denota: f [ x 0 , , x1 ] .
Se calcular diferencias de este tipo porque son las que se utilizan en interpolacin.
PRIMERO: Colocaremos las diferencias en la tabla vista en teora.
Pongamos la tabla de datos:
for i=1:n,
A(2*i-1,1)=z(i,1);
A(2*i-1,2)=z(i,2);
end

Pongamos las diferencias divididas de primer orden:


for i=1:n-1,
A(2*i,3)=d(i,i+1,z);
A(2*i,3)=d(i,i+1,z);
end
A

Ahora calculemos todas las diferencias divididas de orden superior.Las diferencias de primer orden:
for i=1:n-1,
di(i,1)=d(i,i+1,z);
end
di(:,1)

Las diferencias de segundo orden


for i=1:n-2,
di(i,2)=di(i+1,1) - di(i,1)/(z(i+2,1) - z(i,1));
end
di(:,2)

Las diferencias de tercer orden


for i=1:n-3,
di(i,3)=(di(i+1,2) - di(i,2))/(z(i+3,1) - z(i,1));
end
di(:,3)

Las diferencias de orden superior


for j=4:n,
for i=1:n-j,
di(i,j)=(di(i+1,j-1) - di(i,j - 1))/(z(i+j,1) - z(i,1));
end
end
disp('Listo')

for j=1:n-1,
for i=1:n-j,
A(2*i+j-1,j+2)=di(i,j);
end
end
disp('Listo')

De acuerdo con la frmula que se ve en teora, las diferencias en la diagonal superior permiten calcular
los polinomios de interpolacin de orden a lo ms n 1
f=di(1,:)'

Comprobemos que se logra la tabla.


Calculemos la lista completa de los trminos del polinomio de orden n 1
n=length(f);
t(1:2) = [z(1,2) f(1)*(z(10,1)-z(1,1))];
for i=2:n,
for k=1:i,
aux(k)=(z(10,1) - z(k,1));
end
t(i+1) = f(i)*prod(aux);
end
sum(t)
z(10,2)
clear t aux

Veamos cuantos nos da para x = 1.7


t(1:2) = [z(1,2) f(1)*(1.7-z(1,1))];
for i=2:n,
for k=1:i,
aux(k)=(1.7 - z(k,1));
end
t(i+1) = f(i)*prod(aux);
end
sum(t)
sin(1.7)
clear t aux

Excelente resultado.Veamos qu pasa para x = 4.7


n=length(f);
t(1:2) = [z(1,2) f(1)*(4.7-z(1,1))];
for i=2:n,
for k=1:i,
aux(k)=(4.7 - z(k,1));
end
t(i+1) = f(i)*prod(aux);
end
sum(t)

sin(4.7)
clear t aux

Excelente resultado
Grafico del polinomio de interpolacin y superposicin sobre el grfico.
x=0:0.1:7.5;
n=length(x);
m=length(f);
for i=1:n,
t(1:2)=[z(1,2) f(1)*(x(i)-z(1,1))];
for j=2:m,
for k=1:j,
aux(k)=(x(i)-z(k,1));
end
t(j+1)=f(j)*prod(aux);
end
clear aux
y1(i)=sum(t);
clear t aux;
end
disp('Listo')

figure(1);
plot(x,y1,z(:,1),z(:,2),'ro'); grid on;
title('Grafico polinomio de interpolacin y puntos de la tabla');
xlabel('x'); ylabel('y');

Ejercicio
En lugar de la funcin sin(x) observe el mismo fenmeno con otras funciones: cos(x), exp(x), sqrt(x),
Bessel, etc. Puede tomar ms puntos y mirar.
Ejercicio
Intente integrar la funcin integrando la polinomial lineal por tramos y despues la polinomial cuadrtica
por tramos. Observe que estas polinomiales no son diferenciables en la unin de los tramos.

5.4 INTERPOLACIN DE HERMITE CBICA


Ejercicio
Calcule el polinomio de interpolacin de Hermite cbico que interpola la tabla:

i xi y i y i'
0 1 2 1
1 2 1 -1
Sugerencia:
Emplear la frmula en diferencias divididas del polinomio de Hermite. En este caso:
p ( x ) = 2 + 1 ( x x 0 ) + f [ x 0 , x 0 , x1 ]( x x 0 ) + f [ x0 , x 0 , x1 , x1 ]( x x 0 ) ( x x1 )
2

Polinomial Diferenicable
Con una interpolante cbica por tramos podemos generar unapolinomial cbica que interpola la tabla y
que sea diferenciable.
Primero generamos una tabla, en este caso de los valores de seno y su derivada entre [0.5,7.5]
clear
n = 15;
i = 1:n;
z = [0.5*i' sin(0.5*i')];
dz = [0.5*i' cos(0.5*i')];
clf;
figure(1);
plot(z(:,1), z(:,2),'o'); grid on;
title('Grfica de la tabla'); xlabel('x'); ylabel('y');

Para calcular la polinomial de Hermite cbica necesitamos calcular las diferencias de primer orden entre
abcisas consecutivas y alternarlos con los valores de la derivada para lograr:

{ f ' [ x1 ], f [ x1 , x2 ], f ' [ x 2 ], f [ x 2 , x3 ], f ' [ x3 ], , f [ , x n ], f ' [ x n ]}

Calculemos la tabla de diferencias para interpolar mediante Hermite:


lar=length(dz);
d(1,1)=dz(1,2);
for i=1:lar-1,
d(2*i,1)=(z(i+1,2) - z(i,2))/(z(i+1,1) - z(i,1));
d(2*i+1,1)=dz(i+1,2);
end
d

En seguida se calculan las diferencias de orden dos:

{ f [ x1 ,x1 ,x 2 ], f [ x1 , x 2 , x 2 ], f [ x 2 ,x 2 ,x3 ], f [ x 2 ,x3 ,x3 ], , f [ ,x n ,x n ]}

usando para

ello la tabla

anterior.
lar = length(d);
for i=1:lar-1,
aux(i)=d(i+1,1)-d(i,1);
end
k=0;
for i=1:n-1,
div=z(i+1,1) - z(i,1);
k = k + 1;
d(2*i-1,2)=aux(k)/div;
k = k + 1;
d(2*i,2)=aux(k)/div;
end
d(:,2)

Ahora se calculan las siguientes diferencias de orden 3:

{ f [ x1 ,x1 ,x1 ,x 2 ], f [ x 2 ,x 2 ,x3 ,x3 ], f [ x3 ,x3 ,x 4 ,x 4 ], , f [ , ,x n ,x n ]}

k=0;
for i=1:length(z)-1,
k = k + 1;
d(i,3)=(d(2*i,2) - d(2*i-1,2))/(z(k+1,1) - z(k,1));
end
d(:,3 )

Ahora se forma la polinomial. Mostremos los dos primeros tramos en forma explcita:
x1 = z(1,1):0.01:z(2,1);
p1 = z(1,2) + d(1,1)*(x1 - z(1,1)) + d(1,2)*(x1 - z(1,1)).^2 +
z(1,1)).^2.*(x1 - z(2,1));
x2 = z(2,1):0.01:z(3,1);
p2 = z(2,2) + d(3,1)*(x2 - z(2,1)) + d(3,2)*(x2 - z(2,1)).^2 +
z(2,1)).^2.*(x2 - z(3,1));
clf;
figure(1);
subplot(1,2,1), plot(x1,p1); grid on;
title('Primer tramo de la interpolacin'); xlabel('x'); ylabel('y');
subplot(1,2,2), plot(x2,p2); grid on;
title('Segundo tramo de la interpolacin'); xlabel('x'); ylabel('y');

Los dos tramos juntos:


clf;
figure(1);

d(1,3)*(x1

d(3,3)*(x2

plot([x1 x2],[p1 p2]); grid on;


title('Primeros dos tramos de la interpolacin'); xlabel('x'); ylabel('y');

Verifiquemos las condiciones en [ x1 , x 2 ]


x1 = z(1,1);
p1=z(1,2)+d(1,1)*(x1-z(1,1))+d(1,2)*(x1-z(1,1)).^2+d(1,3)*(x1-z(1,1)).^2.*(x1z(2,1));
[p1 z(1,2)]

x1 = z(2,1);
p1 = z(1,2) + d(1,1)*(x1
z(1,1)).^2.*(x1 - z(2,1));
[p1 z(2,2)]

z(1,1))

d(1,2)*(x1

z(1,1)).^2

d(1,3)*(x1

Ahora construyamos la polinomial

h=0.1;
j=-1;
k=0;
n=length(z);
for i=1:n-1,
k = k + 1;
j = j + 2;
x=z(i,1):h:z(i+1,1);
m=length(x);
for ind=0:m-1,
yi((m-1)*(i-1)+ind+1)=z(k,2)+d(j,1)*(x(ind+1)-z(k, 1))+d(j,2)*(x(ind+1)-z(k,
1)).^2 + d(k,3)*(x(ind+1) - z(k, 1)).^2.*(x(ind+1) - z(k+1,1));
end
end
xi = z(1,1):h:z(n,1);
figure(1);
plot(xi,yi,z(:,1),z(:,2),'or'); grid on;
title('Grfica del polinomio de interpolacin'); xlabel('x'); ylabel('y');

Lo interesante es el hecho que la polinomial es derivable (notese que est definida por tramos) y que su
derivada es una polinomial que interpola la derivada de la funcin sen(x), que es de donde se sac la
muestra que esta en la tabla dz.
Ejercicio
Adecuando el estudio anterior trate de construir interpolantes para otras funciones
y sus derivadas.
Ejercicio

Trate de construir para una tabla para tres abcisas, tres ordenadas, tres pendientes el
polinomio de interpolacin de grado 5 que interpola la tabla.

6. TRATE USTED MISMO CON UN CONTROL


UNIVERSIDAD TCNICA FEDERICO SANTA MARA
Departamento de Matemtica
Laboratorio de Computacin para las
Aplicaciones de la Matemtica en Ingeniera
LABORATORIO DE ANLISIS NUMRICO - MAT270
CONTROL 3 Mejor Interpolacin
Problema 1. (35 puntos)
Considere la funcin L( x ) = Integral ( r(t) , { t , a , x}] para x en el intervalo [a,b]
en que r(t) = Sqrt[ 1 + 3 t^2].
Obtener el mximo M del valor absoluto de L'''(x) para a = 2, b = 3.
Calcular la mxima estimacin del error de interpolacin del polinomio que
interpola L(x) en los puntos x(0)= 2.05 ; x(1) = 2.5 ; x(2) = 2.95 .
Responda por este mximo.
*Sugerencia: | p(x) - L(x) | < M / 3! (Mximo en [a,b] de | (x-x(0)) (x-x(1)) (x-x(2) ) |)
(Respuesta: 0.0003741)
Problema 2. (30 puntos)
Defina los siguientes puntos en [-1,1] : t[k] = Cos[ (2 k +1) Pi /( 2n) ] , k = 0 , ...., n-1
La biyeccin de [ -1, 1] hasta [ a, b] definida: f ( t ) = (b - a ) ( t - 1) / 2 + b permite
trasladar los puntos al intervalo [ a , b ] mediante z [ k ] = f ( t [ k ] ) , k = 0 , ...., n-1
Para a = 2 , b = 3 , n = 3 responda por valor del producto z(0) z(1) z(2).
(Respuesta: 15.1563)
Problema 3. (35 puntos)
Utilizando comando, construir los polinomios de interpolacin de L(x) en x(0), x(1) , x(2)
y en z(0) , z(1) , z(2). Compararlos en el intervalo [2.3, 2.31].
Verifique que el segundo es mejor que el primero.
De los dos, concretamente responda por el menor error en valor absoluto que se produce
en x = 2.305.
*Dato: L[2.305] = 1.17737.

(Respuesta: 0.00017872)

You might also like