Sei sulla pagina 1di 13

%----------------------------------------

% Curso 2012-2013. Segundo cuatrimestre


% Prctica 1: Problema 2 de la Leccin 4.
%----------------------------------------

%-------------
% Apartado (1)
%-------------
x=0:0.01:8;
y=besselj(2,x);
plot(x,y,'r')
h=1e-5;
der2=(besselj(2,2+h)-besselj(2,2))/h;
der8=(besselj(2,8-h)-besselj(2,8))/(-h);
disp('Aproximacin de la derivada de la funcin de Bessel en x=2');
disp(der2);
disp('Aproximacin de la derivada de la funcin de Bessel en x=8');
disp(der8);

%%%%% SOLUCIN %%%%%


AproximacindeladerivadadelafuncindeBesselenx=2
0.2239

AproximacindeladerivadadelafuncindeBesselenx=8
0.2629

%-------------
% Apartado (2)
%-------------

% Spline sujeto (con una mala eleccin de las derivadas en los nodos
extremos)

%----Construimos la funcin de Bessel que queremos interpolar a


trozos:
x=2:8;%intervalo donde construimos nuestra funcin
valint=besselj(2,x);%funcin de Bessel

xx=2:0.001:8;%puntos donde vamos a evaluar


%%%ahora construimos el spline sujeto, en cuyo caso aadimos las dos
%%%condiciones adicionales y evaluamos el polinomio en los puntos de
xx para
%%%representarlo.

%----Grficas de la funcin de Bessel y del spline sujeto


figure(1)
ys=spline(x,[0.0009 valint 0.5588],xx);
plot(xx,besselj(2,xx),'k',x,valint,'or',xx,ys,'b--');
xlabel('x');ylabel('y');
legend('J2(x)','nodos de interpolacin','spline sujeto "malo"');

%%%%% SOLUCIN %%%%%

%-------------
% Apartado (3)
%-------------

xx=2:0.001:8;%puntos donde vamos a evaluar, para cuando vayamos a


representar
y=besselj(2,xx);

nodos=2:8;%nodos del enunciado


valint=besselj(2,nodos);%funcin de Bessel

%----Spline del apartado 2:


ysm=spline(nodos,[0.0009 valint 0.5588],xx);

%----Spline sujeto mejorado:


%(con una buena eleccin de las derivadas % en los nodos extremos),
%considerando der2 y der8 del apartado 1:
ysb=spline(nodos,[der2 valint der8],xx);

% Grficas de la funcin de Bessel y del spline sujeto mejorado


figure(2)
plot(xx,y,'b',nodos,valint,'og',xx,ysb,'r');
xlabel('x');ylabel('y');
legend('J2(x)','nodos de interpolacin','spline sujeto mejorado');

%----Spline not-a-knot

ynk=spline(nodos,valint,xx);
% Grficas de la funcin de Bessel y del spline not-a-knot
figure(3)
plot(xx,y,'b',nodos,valint,'og',xx,ynk,'r');
xlabel('x');ylabel('y');
legend('J2(x)','nodos de interpolacin','spline not-a-knot');

% Errores de los splines sujeto mejorado y not-a-knot


errorssm=max(abs(y-ysm));
errorssb=max(abs(y-ysb));
errorsnk=max(abs(y-ynk));
disp(' ');
disp('Error del spline sujeto malo');
errorssm
disp('Error del spline sujeto mejorado');
errorssb
disp('Error del spline not-a-knot');
%disp(max(abs(besselj(2,xs)-ysk)));
errorsnk

%%%%% SOLUCIN %%%%%


%-------------
% Apartado (4)
%-------------
%----Polinomio interpolador

nodos=2:8;%nodos del enunciado


valint=besselj(2,nodos);%funcin de Bessel

xx=2:0.001:8;%puntos donde vamos a evaluar, para cuando vayamos a


representar
y=besselj(2,xx);

ynewt=polintnewton(nodos,valint,xx);%pol. de Newton para la funcin de


Bessel
disp(' ');
disp('Error del polinomio interpolador');
errorpnewt=max(abs(y-ynewt))

% Grficas de la funcin de Bessel y del polinomio interpolador


figure(4)
plot(xx,y,'b',xx,ynewt,'r',nodos,valint,'og');
xlabel('x');ylabel('y');
legend('J2(x)','polinomio interpolador de Newton','nodos de
interpolacin');

ynewt=interpolanewt(nodos,valint,x);

%%%%% SOLUCIN %%%%%

Errordelpolinomiointerpolador

ans=0.0033

%-------------
% Apartado (5)
%-------------

a=2;
b=8;
xx=a:0.001:b;
y=besselj(2,xx);
tabla=[];
h=10^(-5);
dva=(besselj(2,a+h)-besselj(2,a))/h;
dvb=(besselj(2,b+h)-besselj(2,b))/h;
N=12;
for k=1:3
p=(b-a)/N;
x=a:p:b;
valint=besselj(2,x);

% Polinomio interpolador
pnt=polintnewton(x,valint,xx);

% Spline sujeto
spj=spline(x,[dva valint dvb],xx);

% Spline not-a-knot
spk=spline(x,valint,xx);

% Errores del polinomio interpolador y de los splines sujeto y


not-a-knot
errpnt=max(abs(y-pnt));
errspj=max(abs(y-spj));
errspk=max(abs(y-spk));
tabla=[tabla;N errpnt errspj errspk];

% Grficas de la funcin de Bessel, del polinomio interpolador y


de
% los splines sujeto y not-a-knot (se representan los nodos)
figure(k+4);
plot(x,valint,'ko',xx,y,'b',xx,pnt,'r',xx,spj,'g',xx,spk,'m');
xlabel('x');ylabel('y');
title(['N=',num2str(N)]);
legend('nodos','J2(x)','pol interpolador','spline sujeto',...
'spline not-a-knot','Location','SouthWest');
N=2*N;
end
disp(' ');
disp('Errores del polinomio de interpolacin y de los splines
sujeto');
disp('y not-a-knot (intervalo [2,8])');
disp(tabla);

% Representacin grfica de los errores del polinomio interpolador y


% de los splines sujeto y not-a-knot frente al nmero de nodos
figure(9);
loglog(tabla(:,1),tabla(:,2),'bo-',tabla(:,1),tabla(:,3),'ro-',...
tabla(:,1),tabla(:,4),'mo-');
xlabel('N');ylabel('Error');
title('Errores (intervalo [2,8])');
legend('polinomio interpolador','spline sujeto',...
'spline not-a-knot');

%%%%% SOLUCIN %%%%%

Erroresdelpolinomiodeinterpolacinydelossplinessujeto
ynotaknot(intervalo[2,8])
12.00000.00000.00000.0003
24.00000.00000.00000.0000
48.00000.00010.00000.0000

%-------------
% Apartado (6)
%-------------

a=0;
b=8;
xs=a:0.001:b;
f=besselj(2,xs);
tabla=[];
h=10^(-5);
dva=(besselj(2,a+h)-besselj(2,a))/h;
dvb=(besselj(2,b+h)-besselj(2,b))/h;
N=16;
for k=1:3
p=(b-a)/N;
x=a:p:b;
y=besselj(2,x);

% Polinomio interpolador
pnt=polintnewton(x,y,xs);

% Spline sujeto
spj=spline(x,[dva y dvb],xs);

% Spline not-a-knot
spk=spline(x,y,xs);

% Errores del polinomio interpolador y de los splines sujeto y


not-a-knot
errpnt=max(abs(f-pnt));
errspj=max(abs(f-spj));
errspk=max(abs(f-spk));
tabla=[tabla;N errpnt errspj errspk];

% Grficas de la funcin de Bessel, del polinomio interpolador y


de
% los splines sujeto y not-a-knot (se representan los nodos)
figure(k+9)
plot(x,y,'ko',xs,f,'b',xs,pnt,'r',xs,spj,'g',xs,spk,'m')
xlabel('x');ylabel('y');
title(['N=',num2str(N)]);
legend('nodos','J2(x)','pol interpolador','spline sujeto',...
'spline not-a-knot','Location','NorthEast');
N=2*N;
end
disp(' ');
disp('Errores del polinomio de interpolacin y de los splines sujeto')
disp('y not-a-knot (intervalo [0,8])');
disp(tabla);

% Representacin grfica de los errores del polinomio interpolador y


% de los splines sujeto y not-a-knot frente al nmero de nodos
figure(13)
loglog(tabla(:,1),tabla(:,2),'bo-',tabla(:,1),tabla(:,3),'ro-',...
tabla(:,1),tabla(:,4),'mo-');
xlabel('N');ylabel('Error');
title('Errores (intervalo [0,8])');
legend('polinomio interpolador','spline sujeto',...
'spline not-a-knot','Location','NorthWest');
%%%%% SOLUCIN %%%%%

Erroresdelpolinomiodeinterpolacinydelossplinessujeto
ynotaknot(intervalo[0,8])
16.00000.00000.00000.0004
32.00000.00000.00000.0000
64.00002.58270.00000.0000

Potrebbero piacerti anche