Professional Documents
Culture Documents
Actividades:
1. A continuacin una funcin que calcula un vector C con los coeficientes del
polinomio de interpolacin de Lagrange y una matriz L cuyas filas son los
coeficientes de cada uno de los polinomios de Lagrange. La entrada son los nodos
(x, y). Escriba un comentario sobre lo que realiza cada lnea.
Entrada:
Parejas de datos (x, y)
Punto x0 donde se desea interpolar.
Salida
Una figura donde se muestren los puntos (x, y) y las grficas de cada uno de los
polinomios de Lagrange.
El valor encontrado de y0 para x0.
Una figura donde se muestren los puntos (x, y), una grfica del polinomio
interpolador y el punto (x0, y0) con asterisco.
Sugerencia: use la funcin polyval de Matlab para evaluar un polinomio dado sus
coeficientes.
Jorge Carlos Alberto Franco Ibaez
SOLUCIN
1.
function [L, C] = f_lagrange_interp(x, y)
% L = matriz que contiene los coeficientes de los polinomios de Lagrange en sus filas
2.
Cdigo
% Pareja de datos
x = [1, 2, 3];
y = [1.3, 2.3, 6.7];
%Punto de interpolacion
x0 = 2.1;
%Funcin dada
[L, C] = f_lagrange_interp(x,y);
%Grafica
figure
% Calculo de y0
y0 = C(1)*x0^2+C(2)*x0+C(3)
% se ubica(x0, y0) en la grficapara referencia.
plot (x0, y0, 'r*')
%legendas de las lineas dibujadas.
legend([l(1);l(2);l(3);l(4)],['Grfica de interpolacin 1';'Grfica de interpolacin 1';'Grfica de
interpolacin 1';'Grfica de interpolacin 1']);
title ('Interpolacin Polinomial de LaGrange')
-5
-10
-15
1 1.5 2 2.5 3
Jorge Carlos Alberto Franco Ibaez
3.
%pareja de datos
x = [1.00 1.02 1.04]
y = [1.0000 0.9888 0.9784]
%aproximaciones
x0 = 1.01;
x1 = 1.03;
%funcion de lagrange
[L, C] = f_lagrange_interp(x,y);
%calculo ocn los valores obtenidos
y0 = C(1)*x0^2+C(2)*x0+C(3)
y1 = C(1)*x1^2+C(2)*x1+C(3)
Resultados
Para
x= 1.0000 1.0200 1.0400
y= 1.0000 0.9888 0.9784
Se tiene:
y0 = 0.9943
y1 = 0.9835
5.
%pareja de datos
x = [0 0.5];
y = exp(-x);
%exp2
x0 = 0.25;
%funcion
[L, C] = f_lagrange_interp(x,y);
y0 = C(1)*x0+C(2)
a = [0.5 1.0];
b = exp(-a);
%exp2
c = 0.75;
[Y, Z] = f_lagrange_interp(a,b);
y1 = Z(1)*c+Z(2)
h = [0 0.5 1.0];
i = exp(-h);
j = 0.25;
k = 0.75;
[M, N] = f_lagrange_interp(h,i);
y2 = N(1)*x0^2+N(2)*x0+N(3)
y3 = N(1)*c^2+N(2)*c+N(3)
linerror1 = abs(exp(-x0)-y0)
linerror2 = abs(exp(-c)-y1)
q1 = abs(exp(-x0)-y2)
q2 = abs(exp(-c)-y3)
Jorge Carlos Alberto Franco Ibaez
Resultado
y0 = 0.80327
y1 = 0.48721
y2 = 0.78391
y3 = 0.46785
linerror1 = 0.024465
linerror2 = 0.014838
q1 = 0.0051123
q2 = 0.0045138
7.
x = [0 45 90];
y = sind(x);
z = [-22.5 25 67.5 112.5];
[L, C] = f_lagrange_interp(x,y);
w = C(1)*z.^2+C(2)*z+C(3)
eq1 = abs(sind(z(1))-(w(1)))
eq2 = abs(sind(z(2))-(w(2)))
eq3 = abs(sind(z(3))-(w(3)))
eq4 = abs(sind(z(4))-(w(4)))
Resultados
m = -0.50888 0.44397 0.90533 0.99112
eq1= 0.12620
eq2= 0.021356
eq3 = 0.018549
eq4= 0.067237
11.
x = [0 1 2 3];
y = [1 0.765198 0.223891 -0.260052];
z = [0.5 1.5 2.5];
[L, C] = f_lagrange_interp(x,y);
m = C(1)*z.^3+C(2)*z.^2+C(3)*z+C(4)
n = [0.938470 0.511828 -0.048384];
eq1= abs(n(1)-m(1))
eq2= abs(n(2)-m(2))
eq3= abs(n(3)-m(3))
figure
plot(x,y)
l = zeros(1,4)
l(1) = plot (x,L(1,1)*x.^3+L(2,1)*x.^2+L(3,1)*x+L(4,1),'r')
hold on
l(2) = plot (x,L(1,2)*x.^3+L(2,2)*x.^2+L(3,2)*x+L(4,2),'g')
hold on
l(3) = plot (x,L(1,3)*x.^3+L(2,3)*x.^2+L(3,3)*x+L(4,3),'y')
Jorge Carlos Alberto Franco Ibaez
hold on
l(4) = plot (x,L(1,4)*x.^3+L(2,4)*x.^2+L(3,4)*x+L(4,4),'black')
pause
legend([l(1);l(2);l(3);l(4)],['linea 1';'linea 2';'linea 3';'linea 4']);
Resultado
m = 0.943654 0.510116 -0.047993
eq1= 0.0051839
eq2= 0.0017122
eq3= 3.9119e-04
30
20
10
-10
-20
-30
0 0.5 1 1.5 2 2.5 3