%Tutorial en Octave Matlab para Interpolación con Chebyshev paso a paso
disp("Interpolación con Chebyshev");
%Autor: Alexander Arias
%Fecha: 2022-11-24
%
%https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture19__Implementation_of_Elementary_Functions/
%\begin{matrix}
%T_{0}(x)=1\\
%T_{1}(x)=x\\
%T_{2}(x)=2x^{2}-1\\
%T_{3}(x)=4x^{3}-3x\\
%T_{4}(x)=8x^{4}-8x^{2}+1\\
%T_{5}(x)=16x^{5}-20x^{3}+5x\\
%\end{matrix}
disp('Interpolar la función f(x)=1/(1+exp(-5x)')
disp('Intervalo [-1,1]');
disp('Calcular los pesos wi');
disp('w0 Para T0(x)=1')
w(1)= 1/pi*integral(@(x) (1./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
disp('w1 Para T1(x)=x')
w(2)=2/pi*integral(@(x) (x./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
disp('w2 Para T2(x)=2*x.^2-1')
w(3)=2/pi*integral(@(x) ((2*x.^2-1)./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
disp('w3 Para T3(x)=4*x^3-3*x')
w(4)=2/pi*integral(@(x) ((4*x.^3-3*x)./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
disp('w4 Para T4(x)=8*x.^4-8*x.^2+1')
w(5)=2/pi*integral(@(x) ((8*x.^4-8*x.^2+1)./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
disp('w5 Para T5(x)=8*x.^4-8*x.^2+1')
w(6)=2/pi*integral(@(x) ((16*x.^5-20*x.^3+5*x)./((1+exp(-5*x)).*sqrt(1-x.^2))),-1,1)
%T0=@(x)(1)
%T1=@(x)(x)
x=-1:2/100:1;
T0=1;
T1=x;
T2=2*x.*T1-T0;
T3=2*x.*T2-T1;
T4=2*x.*T3-T2;
T5=2*x.*T4-T3;
%Calcula valores de la función
f=w(1)*T0+w(2)*T1+w(3)*T2+w(4)*T3+w(5)*T4+w(6)*T5;
y=1./(1+exp(-5*x));
%Interpolación con 6 puntos que sean nodos chebyshev
function x=nodos_cheb(a,b,n)
%n es el grado del polinomio con n+1 puntos
for k=1:n+1
x(k)=(a+b)/2+(b-a)/2 * cos((2*(n-(k-1))+1)*pi/(2*n+2));
end
end %function
xc=nodos_cheb(-1,1,5);
ya=1./(1+exp(-5*xc));
A=vander(xc);
p=A\ya';
%xg=linspace(xc(1),xc(end));
yp=polyval(p,x);
plot(x,f,'g',x,y,'r',x,yp,'b')
No hay comentarios:
Publicar un comentario