Procedimiento:
In [1]:
import numpy as np
import matplotlib
import pylab as plt
import scipy.misc as pim
from scipy import stats
% matplotlib inline
font = {'weight' : 'bold',
'size' : 12}
matplotlib.rc('font', **font)
In [2]:
x,y = np.loadtxt('TSI2.txt', usecols=[0,1], dtype='float', unpack='True',delimiter=None)
plt.figure(figsize=(16,8))
plt.plot(x,y,marker='.',color='blue',linewidth=1,markersize=6)
plt.title('Radiation cycles of the Sun', fontsize=24)
plt.xlabel('years', fontsize=18)
plt.ylabel('Radiation [w/m²]', fontsize=18)
plt.grid()
In [3]:
dy = 1
fty = np.fft.fftshift(np.fft.fft(np.fft.fftshift(y)))*dy
v = np.arange(-1/(2*dy),1/(2*dy),1/(dy*x.size))
ti = 0
tf =0.5
plt.figure(figsize=(16,8))
plt.plot(v,abs(fty)**(1/4),marker='.',color='blue',linewidth=1,markersize=6)
plt.plot((0, 0.5), (2, 2), 'r-')
plt.title('FT Radiation cycles of the Sun', fontsize=24)
plt.xlabel('Freq.', fontsize=18)
plt.ylabel('Amp', fontsize=18)
plt.xlim(ti,tf)
plt.grid()
De la grafica de amplitudes, conforme la frecuencia se aleja del cero, se observa un maximo aproximadamente en $f\approx0.09$, el cual siguiendo la formula $$T=\frac{1}{f}$$ Se obtiene un periodo de $T\approx 11.11 [years]$ el cual es concordante con el ciclo de actividad solar medido por medio de las manchas solares, el cual tiene una duracion de aproximadamente 11 años.
In [4]:
yinv=y[::-1] #Invertir el orden de los datos del arreglo
yinv=yinv[1:] #Eliminar primer elemento del nuevo arreglo
yinv=yinv[:-1] #Eliminar ultimo elemento del nuevo arreglo
yf=[]
k=0
while k<50: #Ciclo while para meter en un arreglo los valores de la señal, la inversa de la señal en el tiempo el numero que deseemos repertila
for i in range(0,len(y)):
yf.append(y[i])#Señal
#print len(data3)
for i in range(0,len(yinv)):#Señal invertida en el tiempo
yf.append(yinv[i])
k+=1
dy = 1
t1 = np.arange(0,len(yf),dy)
fty2 = np.fft.fftshift(np.fft.fft(np.fft.fftshift(yf)))*dy
v = np.arange(-1/(2*dy),1/(2*dy),1/(dy*t1.size))
ti = 0
tf =0.1
plt.figure(figsize=(16,8))
plt.plot(v,abs(fty2)**(1/4),marker='.',color='blue',linewidth=1,markersize=6)
plt.plot((0, 0.1), (5.5, 5.5), 'r-')
plt.title('More Resolution FT Radiation cycles of the Sun', fontsize=24)
plt.xlabel('Freq.', fontsize=18)
plt.ylabel('Amp', fontsize=18)
plt.xlim(ti,tf)
plt.grid()
Al mejorar la resolución, se hayan nuevos valores cercanos al pico de $f \approx0.09$, asumiendo que los valores más cercanos al 0 generan picos de ruido, se decide tomar el pico en $f \approx 0.0120$ el cual, aplicando la ecuacion anterior, arroja un valor de $T \approx 83.33$. Este preiodo se halla dentro del ciclo de Gleissberg, el cual tiene un periodo de $T = 85 \pm 15$ el cual tuvo su ultimo máximo, aproximadamente en 1960 (más o menos visible en la primera grafica)
en la gráfica de los datos, es fácil evidenciar un ciclo de actividad de 11 años, al realizar la transformada de Fourier, este ciclo es el más fácil de evidenciar por encima del ruido, sin embargo al aumentar la resolución en este espacio, se pueden detectar nuevos ciclos, como es el caso del ciclo de Gleissberg el cual no es detectable a simple vista en el estudio de los datos originales más sin embargo, describen el comportamiento real del Sol. Por lo tanto, el Análisis de Fourier, permite hallar patrones o comportamientos en la información que resultan casi invisibles bajo un estudio tradicional de los datos.