Hito 02B
Hito 02B
use Interpolation
use dislin
implicit none
integer,parameter::N=6,M=500
real::C_s(0:N),xp(0:M),x(0:N),I_N(0:M),f(0:N),P_N(0:M),f_int(0:M,0:N),T(0:M,0:N),di
f1(0:M),dif(0:M),dif2(0:M),a(0:M),Gam(0:N),C_d(0:N),S_D(0:M),f_m(0:M)
real::val,pi,dx,dxr
integer::i,j,k
pi=acos(-1d0)
val=0
dxr=2./M
a=1d0
xp=[(-1d0+dxr*j,j=0,M)]
x=[((cos(((2*i+1)*pi)/(2*(N+1)))),i=0,N)]
f_m=[(sin(pi*xp(i)),i=0,M)]
C_s=0
!Funcion en x
do i=0,N
f(i)=sin(pi*x(i))
enddo
!val=0d0
!Gam=0d0
!do k=0,N
! do j=0,M
! if (j==0) then
! Gam(k)=((1./(1-0.99999999**2)**0.5)*(cos(k*acos(-
0.99999999)))**2)*dxr
! val=Gam(k)
! elseif (j==M) then
! Gam(k)=val+((1./(1-
0.99999999**2)**0.5)*(cos(k*acos(0.99999999)))**2)*dxr
! else
! Gam(k)=val+((1./(1-xp(j)**2)**0.5)*(cos(k*acos(xp(j))))**2)*dxr
! val=Gam(k)
! endif
! enddo
! write(*,*)k,Gam(k)
!enddo
Gam=pi/2
Gam(0)=pi
do k=0,N
do j=0,M
if (j==0) then
f_int(j,k)=0d0
elseif (j==M) then
f_int(j,k)=0d0
else
f_int(j,k)=(1./(1-xp(j)**2)**0.5)*sin(pi*xp(j))*cos(k*acos(xp(j))) !
*(1./(1-xp(j)**2)**0.5)
endif
enddo
enddo
!COEFICIENTES
!Integracion para la obtencion de los coeficientes
do k=0,N
do j=0,M
if (j==M) then
C_s(k)=C_s(k)+f_int(j,k)*dxr
else
C_s(k)=C_s(k)+0.5*(f_int(j,k)+f_int(j+1,k))*dxr
endif
enddo
enddo
!Funciones Base
do k=0,N
do j=0,M
T(j,k)=cos(k*acos(xp(j)))
enddo
enddo
!Serie truncada
P_N=0d0
do k=0,N
P_N(:)=P_N(:)+(1./Gam(k))*C_s(k)*T(:,k)
enddo
!Serie discreta
S_D=0d0
do k=0,N
S_D(:)=S_D(:)+C_d(k)*T(:,k)
enddo
read(*,*)
dif1(0:M)=f_m(:)-I_N(:)
dif2(:)=S_D(:)-I_N(:)
dif(:)=f_m(:)-P_N(:)
call scrmod("reverse")
call qplcrv(xp,T(:,1),M+1,"First")
Call qplcrv(xp,T(:,2),M+1,"Next")
!Call qplcrv(xp,T(:,3),M+1,"Next")
Call qplcrv(xp,T(:,4),M+1,"Next")
!Call qplcrv(xp,T(:,5),M+1,"Next")
Call qplcrv(xp,T(:,6),M+1,"Last")
call qplot(xp,P_N,M+1)
call qplot(xp,I_N,M+1)
call qplot(xp,S_D,M+1)
call qplot(xp,dif,M+1)
call qplot(xp,dif1,M+1)
call qplot(xp,dif2,M+1)
End Program