Mediante los trazadores cubicos sujetos vamos a aproximar la parte
superior del perro que se muestra en la siguiente figura . En ella tambien aparece la curva a aproximar en una cuadricula a partir de la cual se construyeron los datos del listado que sigue a la citada figura
Ejecución de un Snoopy en MATLAB.
x1=[1 2 5 6 7 8 10 13 17 ];
y1=[3 3.7 3.9 4.2 5.7 6.6 7.1 6.7 4.5]; %(x1,y1) puntos de la Curva 1
rr1=length(x1);
[CoefP1,P1]=g_sujeto(x1,y1,1,-(2/3)); %P1 polinomio fragmentario de C.1
x2=[17 20.5 22 23 24 25 27 27.7];
y2=[4.5 7.45 6.9 6.1 5.6 5.8 5.4 4.1]; %(x2,y2) puntos de C.2
rr2=length(x2);
[CoefP2,P2]=g_sujeto(x2,y2,2,-4); %P2 polinomio fragmentario de C.2
x3=[27.7 28 29 30];
y3=[4.1 4.3 4.1 3]; %(x3,y3) puntos de C.3
[CoefP3,P3]=g_sujeto(x3,y3,(1/3),-(3/2)); %P3 polinomio fragmentario de C.3
x=[x1(1:(rr1-1)), x2(1:(rr2-1)), x3]; %nodos
y=[y1(1:(rr1-1)), y2(1:(rr2-1)), y3];
Coef=[CoefP1; CoefP2; CoefP3];
P=mkpp(x,Coef); %Polinomio fragmentario total
xp=1:(1/20):30; %discretizacion de [1,30]
yp=ppval(P,xp); %(xp,yp) puntos del trazador
clf
plot(xp,yp)
axis equal
observese como en la de¯nicion del polinomio fragmentario de la segunda curva ponemos el mandato
[CoefP2,P2]=g_sujeto(x2,y2,2,-4)
en lugar de [CoefP2,P2]=g_sujeto(x2,y2,3,-4) y es que creemos que se ajusta mejor al
dibujo una pendiente inicial de magnitud 2 que no de 3.
Ejecutamos ahora las ordenes
Q=polyfit(x,y,length(x)-1);
yp_lag=polyval(Q,xp);
figure(2),
plot(xp,yp_lag)
con el fin de observar las diferencias de realizar una interpolacion fragmentaria y una interpolacion total.
No hay comentarios:
Publicar un comentario