0% found this document useful (0 votes)
25 views3 pages

Hito 02B

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views3 pages

Hito 02B

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

Program PPrincipal

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

!Definicion de la funci�n a integrar

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

!Coeficientes Serie discreta


do k=0,N
val=0d0
do i=0,N
val=val+(pi/(N+1))*sin(pi*x(i))*cos(k*acos(x(i)))
enddo
C_d(k)=val/Gam(k)
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

!Interpolante de Lagrange para los ceros de chevycheb


do i=0,M
I_N(i)=Interpolated_value(x,f,xp(i),N)
dif(i)=P_N(i)-I_N(i)
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

You might also like