Escolar Documentos
Profissional Documentos
Cultura Documentos
Departamento de Matemtica
Laboratorio de Computacin para las Aplicaciones de la Matemtica en Ingeniera
Interpolacin Diferenciable
Semana del Martes 9 al Lunes 15 de Mayo de 2017
8 de mayo de 2017
1
Departamento de Matemticas U.T.F.S.M Anlisis Numrico Mat-270
ndice
4. Curvas de Bzier 12
5. Una forma de control sobre interpolacin, segundo semestre 2015 13
6. Una forma del control sobre interpolacin, primer semestre 2016. 15
7. Una forma del control sobre interpolacin, primer semestre 2016. 16
function H = hermitte(pt1,d1,pt2,d2)
pts=[pt1;pt1;pt2;pt2];
dd=zeros(4,4);
dd(:,1)=pts(:,2);
for j=2:length(dd)
for i=1:(length(dd)-1)
if (i==1) && ( j==2)
dd(i,j)=d1;
elseif (i==3) && ( j==2)
dd(i,j)=d2;
elseif i<=4
dd(i,j)=(dd(i+1,j-1)-dd(i,j-1))/(pt2(1)-pt1(1));
end
end
end
syms x
H=dd(1,1)+dd(1,2)*(x-pt1(1))+dd(1,3)*(x-pt1(1))^2+dd(1,4)*(x-pt1(1))^2*(x-pt2(1));
Ejemplo.
figure(1)
plot(x1,y1,'r',x2,y2,'g')
title('canales sin curva de conexin')
grid on
Se denan puntos de inters, y se utiliza el comando creado, jarse como se usa
pt1=[1 6];
d1=0;
pt2=[4 3];
d2=0;
H = hermitte(pt1,d1,pt2,d2);
x=1:0.1:4;
Se graca la curva conexin
figure(3)
plot(x,eval(H))
title('curva conexion')
Se graca el conjunto completo
figure(4)
hold on
plot(x1,y1,'r',x2,y2,'g')
plot(x,eval(H))
title('canales con curva de conexin')
grid on
hold off
Ejemplo.
clear
x1=0:2;
x2=5:7;
y1=x1;
y2=7-x2;
Se gracan las funciones sin curva conexin
figure(1)
plot(x1,y1,'b',x2,y2,'b')
Se denan puntos de inters, y se utiliza el comando creado, jarse como se usa
pt1=[2 2];
d1=1;
pt2=[5 2];
d2=-1;
H = hermitte(pt1,d1,pt2,d2)
Se grca la curva conexin
figure(2)
ezplot(H,2,5)
x=2:0.1:5;
Se grca el conjunto completo
figure(3)
plot(x1,y1,'b',x2,y2,'b',x,eval(H),'r')
Ejercicio
i xi yi yi0
0 1 2 1
1 2 1 -1
Sugerencia:
Emplear la frmula en diferencias divididas del polinomio de Hermite. En este caso:
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, 0,75].
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:
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:
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:
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 + d(1,3)*(x1 - 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 + d(3,3)*(x2 - 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);
plot([x1 x2],[p1 p2]); grid on;
title('Primeros dos tramos de la interpolacin'); xlabel('x'); ylabel('y');
Veriquemos las condiciones en [x1 , x2 ]
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.*(x1-z(2,1));
[p1 z(1,2)]
x1 = z(2,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.*(x1 - z(2,1));
[p1 z(2,2)]
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 denida 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.
3. Spline
m en el intervalo ] , ["si :
Denicin.
Cmo utilizar las condiciones para determinar frmulas para los coecientes ?.
GRADOS DE LIBERTAD.
Dos son los grados de libertad los cuales deben ser denidos por el usuario. Los coecientes que se
deben determinar son 4 por cada subintervalo, en total: t = 4 n . Sin embargo al contar el nmero de
condiciones se tienen: a) n+1 condiciones de interpolacin dadas en (1); b) n-1 condiciones para la
continuidad de s(x); c) n-1 condiciones para la continuidad de la derivada
(1) (x) ; d) n-1 condiciones
para la continuidad de la derivada s2 (x). Sumandolas todas se obtiene un total de datos igual a : 4
n - 2.
Se dice que las restricciones dan 2 grados de libertad para la eleccin de los coecientes en (2),
en el sentido que hay dos condiciones menos que incgnitas. Estos dos grados de libertad son una
ventaja para el usuario puesto que quedan a su arbitrio el imponerlas. Son tres los casos usuales,
examinaremos en esta oportunidad aquel caso que determina lo que se llama "la spline natural".
format long
syms x
f=sin(x/(x^2+1));
ezplot(f,0,8)
x=-4:0.4:2;
x=exp(x);
y=eval(f);
ptos=zeros(length(x),2);
ptos=[x' y'];
plot(x,y,'o')
Se calculan la lista de los hi
n=length(ptos)-1;
for i=1:n
h(i)=x(i+1)-x(i);
end
Se calcula la matriz del sistema lineal (3.0.7).
Para calcular la matriz generamos primero una matriz nula y all modicamos los elementos diago-
nales y codiagonales:
A=zeros(n-1,n-1);
A(1,1)=(h(1)+h(2))/3;
A(1,2)=h(2)/6;
for i=2:(n-2)
A(i,i-1)=h(i)/6;
A(i,i)=(h(i)+h(i+1))/3;
A(i,i+1)=h(i+1)/6;
end
A(n-1,n-2)=h(n-1)/6;
A(n-1,n-1)=(h(n)+h(n-1))/3;
Se calcula el segundo miembro formulado en (3.0.7):
for i=2:(length(y)-1)
b(i-1)=((y(i+1)-y(i))/h(i))-((y(i)-y(i-1))/(h(i-1)));
end
Se resuelve el sistema lineal, esto es se obtienen los Mi :
mm=linsolve(A,b');
mm=linsolve(A,b');
mm=[[0];mm;[0]]; %se agregan los valores nulos al inicio y al final
w=diff(f,2)
w=eval(w)'
w=w(2:length(w));
w=w(1:(length(w)-1));
w
Ahora se genera la spline, tramo a tramo, de acuerdo a la frmula (3.0.5) para xi x xi+1 :
Ahora Cada tramo de la funcin se guardara en forma discreta en las matrices zz y pp
zz=zeros(n-1,11);
pp=zeros(n-1,11);
for i=1:(n-1)
syms z
t1=vpa(((x(i+1)-z)^3*mm(i)+(z-x(i))^3*mm(i+1))/(6*h(i)));
t2=vpa(((x(i+1)-z)*y(i)+(z-x(i))*y(i+1))/h(i));
t3=vpa(((x(i+1)-z)*mm(i)+(z-x(i))*mm(i+1))*(h(i)/6));
p=expand(t1+t2-t3);
z=x(i):((x(i+1)-x(i))/10):x(i+1);
zz(i,:)=z;
pp(i,:)=eval(p);
clear z
end
Al nal graquemos la spline junto con la tabla de puntos que permiti generarla y la funcin.
figure(5)
for i=1:length(zz)
hold on
plot(zz(i,:),pp(i,:))
hold off
end
figure(6)
hold on
for i=1:length(zz)
plot(zz(i,:),pp(i,:))
end
plot(x,y,'o')
hold off
Ejercicio.
Intente construir una spline usando una muestra de la curva del contraejemplo de Runge visto en
sesiones anteriores.
clear
X=[1 1.5 2.5 3.2 3.8 4.1 4.5 5.2 5.5 6 6.4 6.8 7.2 8 8.5 9 9.3 10 10.3 11 12 13 14 15 16 16.5 17
Y=[12.9 14.5 15 15.2 15 14.5 14.2 14.3 14 13.5 12.9 11.5 10 9.8 8.5 7 4.3 2.8 2.2 2 1.6 1.5 1.5
figure(1);
plot(X,Y,'-')
title('Bahia de Valparaiso')
Ahora veamos como por medio de la interpolacin cbica de Spline logramos el polinomio que
demarca la baha de Valparaiso.
XX=1:0.7:45;
YY=ppval(spline(X,Y),XX);
figure(2);
plot(X,Y,'k',XX,YY,'b.')
title('Bahia de Valparaiso modelada por Spline')
Fantstico, hemos logrado obtener un polinomio que nos permite trazar la baha de Valparaso,
ahora Cmo obtenemos la longitud de la bahia?, sugerencia: Una aproximacin sera calcular la
longitud de la polinomial lineal que interpola la tabla.
Ejercicio.
4. Curvas de Bzier
Denicin.
Una Curva de Bzier que pasa por los puntos P1 y P2 de acuerdo a los puntos referenciales R y S
parametrizada por t[0, 1] es:
clear P1 P2 R S
r = @(P1,P2,R,S,t)(1 - t)^3*P1 + 3*t*(1 - t)^2*R + 3*t^2*(1 - t)*S + t^3*P2
Algunas propiedades:
1. En t = 0 pasa por el punto P1, en t = 1 pasa por el punto P2, esto es, una curva de Bzier es
un interpolante.
syms P1 P2 R S t
rr=@(t)(1 - t)^3*P1 + 3*t*(1 - t)^2*R + 3*t^2*(1 - t)*S + t^3*P2
rr(0)
rr(1)
diff(rr,t)
Dr=@(t)3*P2*t^2 - 3*S*t^2 - 3*P1*(t - 1)^2 + 3*R*(t - 1)^2 + 3*R*t*(2*t - 2) - 6*S*t*(t - 1)
Dr(0)
Dr(1)
3. y en r = 1/2 su derivada es un vector paralelo al vector que une los puntos medios de P 1R y
P 2S .
clear P1 P2 R S V
P1 = [0, 0]; P2 = [1, 0]; S = [-1, 1]; R = [3, 1]; V = P2 - S;
r2=(1 - t)^3*P1 + 3*t*(1 - t)^2*R + 3*t^2*(1 - t)*S + t^3*P2
ezplot(r2(1),r2(2),[0,1])
Cree la siguiente funcin:
function [x y]=bezier(a,b,u,v)
%a,b,u,v introducir como pares ordenados ejemplo a(xo,yo).... a=[xo yo]
%la funcion pasa por los puntos a y b
%la funcion en a es tangente al vector u y en b tangente al vector v
syms t;
xo=a(1);yo=a(2);x1=b(1);y1=b(2);ao=u(1);bo=u(2);a1=v(1);b1=v(2);
cte1=vpa(2*(xo-x1)+(ao+a1));
cte2=vpa(3*(x1-xo)-(a1+2*ao));
cte3=vpa(2*(yo-y1)+(bo+b1));
cte4=vpa(3*(y1-yo)-(b1+2*bo));
x=cte1*t^3+cte2*t^2+ao*t+xo;
y=cte3*t^3+cte4*t^2+bo*t+yo;
% disp(x)
% disp(y)
t=a(1):0.01:b(1);
x=eval(x);
y=eval(y);
plot(x,y)
end
Ejemplo:
a=[0 0]
b=[1 0]
u=[0 1]
v=[0 -1]
[x y]=bezier(a,b,u,v)
Tiempo: 60 minutos.
Puntaje: Sealado en cada pregunta.
Objetivo: Interpolacin Lagrange y Aplicacin, Interpolacin de Hermite, Curvas de Bzier
Considere la integral que dene el trabajo de una fuerza F a lo largo de la curva desde t=a hasta
t= b:
R
W = [F dr, [t, a, b]]. Se denotar g = F dr, en que F est evaluada en los puntos de la curva y se
da una tabla mas abajo.
PREGUNTA: Calcular la interpolante cbica de g entre t=0.3 y t=0.36 . Responda por el valor de
este interpolante en t= 0.33
DATOS { t , F(r(t)) }
datos=[0, 1, 0, 1; 0.02 0.9996 0.01 0.9994; 0.04 0.998403 0.02 0.997601;
0.06 0.996413 0.0299998 0.994607; 0.08, 0.993641, 0.0399992, 0.990422;
0.1, 0.990099, 0.0499975, 0.985053; 0.12, 0.985804, 0.0599939, 0.97851;
0.14, 0.980777, 0.0699868, 0.970802; 0.16, 0.975039, 0.0799744, 0.961941;
0.18, 0.968617, 0.0899543, 0.95194; 0.2, 0.961538, 0.0999231, 0.940813;
0.22, 0.953834, 0.109877, 0.928575; 0.24, 0.945537, 0.119812, 0.915241;
0.26, 0.93668, 0.129722, 0.900827; 0.28, 0.9273, 0.139602, 0.885347;
0.3, 0.917431, 0.149445, 0.868817; 0.32, 0.907112, 0.159243, 0.851252;
0.34, 0.896379, 0.168988, 0.832666; 0.36, 0.885269, 0.178672, 0.813074;
0.38, 0.87382, 0.188285, 0.792489; 0.4, 0.862069, 0.197817, 0.770922;
0.42, 0.850051, 0.207259, 0.748386; 0.44, 0.837802, 0.216599, 0.724893;
0.46, 0.825355, 0.225827, 0.700452; 0.48, 0.812744, 0.234932, 0.675074;
0.5, 0.8, 0.243902, 0.64877; 0.52, 0.787154, 0.252727, 0.621552;
0.54, 0.774234, 0.261396, 0.593429; 0.56, 0.761267, 0.269897, 0.564417;
0.58, 0.748279, 0.27822, 0.534528; 0.6, 0.735294, 0.286356, 0.50378;
0.62, 0.722335, 0.294294, 0.472193; 0.64, 0.709421, 0.302026, 0.439791;
0.66, 0.696573, 0.309543, 0.406602; 0.68, 0.683807, 0.316838, 0.372661;
0.7, 0.671141, 0.323903, 0.338007; 0.72, 0.658588, 0.330732, 0.302689;
0.74, 0.646162, 0.33732, 0.266763; 0.76, 0.633874, 0.343662, 0.230294;
0.78, 0.621736, 0.349754, 0.193359; 0.8, 0.609756, 0.355594, 0.156047;
0.82, 0.597943, 0.361179, 0.118458; 0.84, 0.586304, 0.366508, 0.080707;
0.86, 0.574845, 0.371579, 0.0429241; 0.88, 0.563571, 0.376395, 0.00525484;
0.9, 0.552486, 0.380955, -0.0321386; 0.92, 0.541594, 0.385261, -0.0690768;
0.94, 0.530898, 0.389315, -0.105363; 0.96, 0.5204, 0.39312, -0.140782;
0.98, 0.5101, 0.396681, -0.175102; 1., 0.5, 0.4, -0.208073];
Problema 2. (25 puntos)
Integre el interpolante cbico por secciones entre t= 0.3 y t = 0.42 utilizando todos los datos que
se dan en ese intervalo.
Considere la curva plana denida paramtricamente: Bezier = (1t)3 p+3t(1t)2 r+3t2 (1t)s+t3 q
con p = [1, 1]; q = [3, 1]; s = [4, 5]; r = [6, 5]; Graque Bezier entre t = 0 y t = 1
PREGUNTA:
Calcule la norma del vector Bezier ' (0.5)
Respuestas
Tiempo: 30 minutos.
Puntaje: Sealado en cada pregunta.
Objetivo: Interpolacin Lagrange
Considere la tabla de datos [(x,y)] que numeraremos desde 1 hasta 9 para referirnos a ella.
2016.
Tiempo: 80 minutos.
Puntaje: Sealado en cada pregunta.
Objetivo: Aplicar interpolacin
Usando la tabla dada mas abajo, interpolar cuadrticamente los datos 8 , 9 y 10 del valor cuota o
accin en el fondo C y responder por el valor en t = 9.71429 de ese interpolante
Respuesta:
Valor= 1.08861
Tabla:
Notacin:
La primera fecha t = 1 corresponde al 1 Abril de 2008, la segunda al 15 Abril de 2008, la tercera
al 1 Mayo de 2008, as sucesivamente. El valor cuota o accin en el fondo A es fA [U.F.] y as
sucesivamente fB, fC, fD, fE todos en [U.F.].
{ t = Fecha , fA , fB , fC , fD , fE }
fondos= [1,1.19362,1.01576,1.09936,0.843537,1.04624;
2,1.22375,1.03618,1.11685,0.852977,1.0501;
3,1.25109,1.05282,1.12814,0.85573,1.04712;
4,1.26906,1.06049,1.12567,0.849354,1.02811;
5,1.29091,1.07626,1.14389,0.859895,1.03383;
6,1.25511,1.05374,1.12928,0.854138,1.03384;
7,1.24146,1.04495,1.12371,0.852342,1.03032;
8,1.17368,0.999773,1.09043,0.840155,1.03215;
9,1.18618,1.00918,1.09959,0.844164,1.03174;
10,1.13906,0.980275,1.08013,0.836926,1.03077;
11,1.12112,0.968877,1.07344,0.834094,1.0327;
12,1.05089,0.923863,1.04159,0.817747,1.02485;
13,0.986409,0.883943,1.01548,0.805701,1.0196;
14,0.878206,0.812829,0.965631,0.78314,1.01057;
15,0.767683,0.746891,0.92046,0.762943,1.00164];
Problema 2. (25 puntos)
Respuesta:
D.D.de orden 2 = -0.01431
Primero determine el t = Subscript[t, 0] correspondiente al valor mas alto que muestra la tabla para
fC. Enseguida, descendiendo ubique el intervalo de t donde se ubicara el valor fC =1.0. Considere
los dos t donde fC >1.0 y el t donde fC <1.0 Usando el interpolado cuadrtico p con estos tres t
consecutivos, calcule el valor aproximado t = Subscript[t, 1] para el cual p = 1.0. Responda por la
diferencia Subscript[t, 1]- Subscript[t, 0] ( En ese lapso se perdi mas de 12 % de valor).
Respuesta:
t1= 13.3658
t1-t0 = 8.36578
A veces es inmanejable si no se tiene software apropiado algunas integrales. Sin embargo con inter-
polacin de Hermite se logra con breves clculos una alternativa que da muy buenos resultados.
Considere una funcin f (x), x [a, b] que se expresa mediante una serie. Considere g(t) = la integral
de f(x) respecto de x [a, t], donde t [a, b] . Suponga a = 6 ; b = 7. Los datos: f (a) = 0,357642;
f (b) = 0,157798; g(b) = 0,269065. El polinomio de interpolacin de Hermite es cas igual a g. Res-
ponder por el valor de g en el punto medio.
Respuesta
Valor en el punto medio 0.159513