C...here NORMALISES by average and makes average = 0
YAVER = 0.0d0
DO 4 I=1,NUM
4 YAVER = YAVER + Y(I)
YAVER = YAVER / dble(NUM)
DO 5 I=1,NUM
5 Y(I) = Y(I)/YAVER - 1.0
...
45 FR=0.0d0
FI=0.0d0
DO 50 I=1,NUM
A=TWOPI*F*T(I)
a=dmod(a,twopi)
C=DCOS(A)
S=DSIN(A)
FR=FR+X(I)*C
50 FI=FI+X(I)*S
FR=FR/dble(NUM)
FI=FI/dble(NUM)
FF=FR*FR+FI*FI
c amplitude spectra in file outfile
AMPLIT = 2.0d0*DSQRT(FF)
avpw=0.0d0
2010 do 50 i=1,500000
read (9,*,end=300,err=3000)x,y
np=np+1
avpw=avpw+y*y
50 continue
300 avpw=avpw/np
avamp=dsqrt(avpw)
c set y equal to 1 before loop for sine (normalize to 1)
y(i)=1.0d0
freq=pit2/period
do 2002 i=1,ndata
read(1,*)time(i),dummy
ft=freq*(time(i)-tmax)+pi2
z=dmod(ft,pit2)
y(i)=y(i)+amp*dsin(z)
2002 continue
Atente que a definição usada acima é Fp[(df1-df2),df2], e não F(df1,df2), como usado em geral, onde df1 significa número de graus de liberdade da medida 1, N-k1, sendo N o número de observações e k1 o número de parâmetros do ajuste 1. Pringle usa Fp(1,n-3), ou seja df1-df2=1, a diferença no número de graus de liberdade quando passamos de reta para parábola. A calculadora citada usa a forma geral:
Página do CALTECH para cálculo de periodogramas por Lomb-Scargle DFT, Box Fitting Least Squares e Phase Dispersion Minimization. Se o arquivo de dados for comma-separated-values (.csv), é necessário colocar um header, tipo
![]()