Interpolacionejercicios
Interpolacionejercicios
Interpolacionejercicios
Sabiendo que dicha población se ajusta a una función cuadrática, calcular la población que
tenía la ciudad en 1985. Sol.: 23
Resolución Matlab
clear
clc
disp(' PROGRAMA PARA CALCULAR EL NUMERO DE HABITANTES
SEGUN EL AÑO.');
disp('PRIMERO DEBE INGRESAR UNA MATRIZ DE 3 AÑOS CONSECUTIVOS');
syms x
xn=input('INGRESE LOS AÑOS: ')
yn=input('INGRESE LA POBLACION: ')
p=0;
n=length(xn);
for i=1:n
L=1;
for j=1:n
if j~=i
L=L*(x-xn(j))/(xn(i)-xn(j));
end
end
p=p+L*yn(i);% forma de lagrange
end
disp('ECUACIÓN: ');
p=simplify(p);
pretty(p);%muestra el polinomio en pantalla
x2=input('INGRESE EL AÑO QUE DESEA CONOCER LA POBLACION: ');
Resultado= x2^2 - 3957*x2 + 3914443
subplot(2,1,1)
plot(xn,yn,'*--');%dibuja los puntos a
hold on
subplot (2,1,2);
ezplot (p,[xn(1),1985])
4. Encontrar el polinomio de segundo grado que pasa por los puntos: (0, 9), (3, 10) y (2, 9).
clear
clc
disp(' PROGRAMA PARA ENCONTRAR EL POLINOMIO DE SEGUNDO
GRADO');
disp('INGRESE LOS VALORES DE LOS PUNTOS DADOS');
syms x
xn=input('INGRESE LSO VALORES DE X EN MATRIZ[]: ')
yn=input('INGRESE LOS VALORES DE Y EN MATRIZ[]: ')
subplot(2,1,1)
plot(xn,yn,'*--');%dibuja los puntos a
hold on
p=0;
n=length(xn);
for i=1:n
L=1;
for j=1:n
if j~=i
L=L*(x-xn(j))/(xn(i)-xn(j));
end
end
p=p+L*yn(i);% forma de lagrange
end
p=simplify(p)
pretty(p);%muestra el polinomio en pantalla
subplot (2,1,2);
ezplot (p,[xn(1),xn(n)])
clear
clc
disp('INGRESE LOS VALORES DE LA FUNCIÓN ');
syms x
xn=input('INGRESE LSO VALORES DE X EN MATRIZ[]: ')
yn=input('INGRESE LOS VALORES DE F(X) EN MATRIZ[]: ')
p=0;
n=length(xn);
for i=1:n
L=1;
for j=1:n
if j~=i
L=L*(x-xn(j))/(xn(i)-xn(j));
end
end
p=p+L*yn(i);% forma de lagrange
end
p=simplify(p);
disp('ECUACIÓN: ');
pretty(p);%muestra el polinomio en pantalla
disp('A)QUE VALOR CORRESPONDE A X CUANDO?');
x2=input('INGRESE EL VALOR DE X PARA EVALUAR: ');
Resultado= x2^2 -4
disp('B)QUE ERROR DARA EN X=2?');
x3=2;
F(2)=x3^2 -4 ;
Error=x3^2 -4 +1
subplot(2,1,1)
plot(xn,yn,'*--');%dibuja los puntos a
hold on
subplot (2,1,2);
ezplot (p,[xn(1),xn(n)])
8. Dada la tabla
Calcula el valor de y para x =0,5 y x = 2: (a) mediante la interpolación lineal. Sol.: 1,5 ; 3 (b)
mediante la interpolación cuadrática. Sol.: -17/12; -11/3
clc
clear
fprintf('8. Dado los valores en x:[0, 1, 4] y y:[1 -3 5]');
fprintf('calcular el valor de y para x=0.5 y x=2');
fprintf('Interpolación lineal:');
x=[0 1 4];
y=[1 -3 5];
a=[0 1 4];
b=[1 -3 5];
xx=[0 0.5 1 2 4];
ee=[0 0.5 1 2 4];
yy=interp1(x,y,xx,'linear');
disp([xx' yy'])
syms x
hold on;
grid on;
subplot(2,1,1)
plot(xx,yy,'*--');
r=interp1(a,b,ee,'squart');
disp([ee' r'])
hold on;
grid on;
subplot(2,1,2);
plot(ee,r,'*--');
º
¿Hubiese sido buena la predicción para 1990 de la función de interpolación cuadrática
correspondiente a los otros tres años?. Sol.:5246,25
Mediante esta función: Calcular en qué año la población mundial será de 6500 millones.
¿Piensas que has hecho una predicción correcta? Sol.: 2005
clc
clear
fprintf('10. Dado los valores en x:[0, 1, 4] y y:[1 -3 5]');
fprintf('calcular el valor de y para x=0.5 y x=2');
fprintf('Interpolación lineal:');
x=[1965 1975 1985];
y=[3.340 4.08 4.85];
xx=[1965 1975 1985 1990 2005];
m=[3.340 4.08 4.85 5.246 6.5];
yy=interp1(x,y,xx,'squart');
r=interp1(y,x,m,'squart');
disp([xx' yy' r'])
syms x
hold on;
grid on;
plot(xx,yy,'*--');
12. El número de calorías por español y día, en el período 1962-1987, siguió esta tendencia:
Año 1962 1970 1980 1987
Miles de calorías 2,76 2,87 3,32 3,49
a) Hallar la previsión para 1990 a partir de la función lineal de los dos últimos años. Sol.:3,56
b) Efectuar la misma previsión con el polinomio de interpolación de 2º grado a partir de los
datos de 1970 a 1987. Sol.:3,77
%DIBUJAR
clc, clear
x=[1980 1987];
y=[3.32 3.49];
n=length(x);
p=polyfit(x,y,n-1);
z=@(xx) polyval(p,xx);
fprintf('NUMERO DE CALORIA EN 1990, %3.2f\n',polyval(p,1990))
r=[1970 1987];
u=[2.87 3.49];
A=vander(x);
s=A\u';
z=@(rr) polyval(s,rr);
fprintf('NUMERO DE CALORIA EN 1990, %3.2f\n',polyval(s,1990))
14. Asumamos que el número de pulsaciones por minuto de las personas es función de su
altura (en metros), de acuerdo con los siguientes datos:
Altura 0,6 0,8 1 1,2 1,4 1,6 1,8
Pulsaciones 124 107 95 86 80 74 69
Dibujar los valores dados. ¿Una interpolación lineal para 0,9 metros de altura sería adecuada?
Realizar esta estimación gráfica y analíticamente. Sol.:101
clc, clear
x=[0.6 0.8 1 1.2 1.4 1.6 1.8];
y=[124 107 95 86 80 74 69];
n=length(x);
p=polyfit(x,y,n-1);
z=@(xx) polyval(p,xx);
fprintf('PILSACIONES EN 0,9 DE ALTURA, %3.2f\n',polyval(p,0.9))
hold on
plot(x,y,'bo','markersize',3,'markerfacecolor','b')
fplot(z,[0.6,1.8])
xlabel('x')
ylabel('y')
grid on
title('interpolacion');
hold off