Ödev 7:

Teslim Tarihi: 25 Aralık 2019, Çarşamba 13:30

exoplanet.eu keşfedilen tüm ötegezegenlerin parametrelerine ulaşabileceğiniz eşsiz bir katalog sunar. Bu katalogu sorgulamak üzere çok sayıda seçenekle donatılmş bir de arama motoru bulunmaktadır. Bu odevde WASP gezegen araştırmasında keşfedilen tüm gezegenlerin kütle ($M$), yarıçap ($R$), yörünge dönemi ($P$), yörünge yarıbüyük eksen uzunluğu ($a$), yörünge dışmerkezliliği ($e$) ve geçiş derinliği ($\delta$) değerlerini içeren bir veri dosyası (ornekveri_WASP.dat) üzerinde çalışacaksınız.

  1. ornekveri_WASP.dat dosyasını okumak üzere açınız.
In [1]:
dosya = open("ornekveri_WASP.dat","r")
  1. Her bir gezegenin yarı-büyük eksen uzunluğunu tutacağınız boş bir $a$ listesi, yörünge dönemini tutacağınız boş bir $P$ ve kütlesini tutacağınız boş bir $Mg$ listesi oluşturunuz.
In [2]:
a = []
P = []
Mg = []
  1. Başlık satırı olan ilk satırı atladıktan sonra dosyanın her bir satırını tek tek okuyup, $satir$ isimli bir listeye alınız. Bu listeyi $split$ metoduyla ayırınız ve oluşacak listenin 2. elemanını float'a dönüştürüp Jüpiter kütlesiyle ($M_{jup} = 1.898 x 10^{27}$ kg) çarparak kilograma çevirdikten sonra $Mg$, 3. elemanını float'a dönüştürüp 365.25'e bölerek Dünya yılına çevirdikten sonra $P$ ve 4. elemanını float'a dönüştürdükten sonra $a$ listesine ekleyiniz.
In [3]:
dosya.readline()
Mjup = 1.898e27
for satir in dosya:
    kelimeler = satir.split()
    Mg.append(float(kelimeler[1])*Mjup)
    P.append(float(kelimeler[3])/365.25)
    a.append(float(kelimeler[4]))
  1. $a$, $P$ ve $Mg$ listelerini $numpy$ dizilerine dönüştürünüz.
In [4]:
import numpy as np
a = np.array(a)
P = np.array(P)
Mg = np.array(Mg)
  1. Newton yasalarından hareketle aşağıdaki şekilde ifade edilen Kepler'in 3. yasasını kullanarak her bir sistemin barınak yıldızının kütlelerini (Güneş biriminde) hesaplayınız ve My isimli bir $numpy$ dizisinde toplayınız. (Veri dosyasında yarı büyük eksen uzunluğu Astronomi Birimi (AB), yörünge dönemi Dünya günü ve gezegen kütlesi Jüpiter kütlesi birimlerinde verilmiştir. $M_{jup} = 1.898x10^{27}$ kg, $M_{\odot} = 1.99x10^{30}$ kg, $G = 6.67x10^{-11}m^3 kg^{−1} s^{−2}$ ve 1 AB = $1.496x10^{11}$ m alınız.)
$$a^3 = \frac{G (M_{*} + M_{g})}{4 \pi^2} P^2 $$$$M_{*} = \frac{a^3 (4 \pi^2)}{G P^2} - M_{g} $$

In [5]:
Mjup = 1.898e27 # kg
Msun = 1.99e30 # kg
G = 6.67e-11 # m^4 kg^-1 s^-2
AB = 1.496e11 # m
Ps = P*365.25*86400 # s
My = ((a*AB)**3*4*np.pi**2) / (G*Ps**2) - Mg
My /= Msun
Mg /= Msun

6.$matplotlib$ paketinin uygun fonksiyonlarını kullanarak x ekseninde Güneş biriminde yıldız ve gezegenin kütleleri toplamıyla yıl biriminde yörünge döneminin karesinin çarpımı ($(M_y + M_g) P^2$), y ekseninde AB biriminde yörünge yarı-büyük eksen uzunluğunun küpü ($a^3$) olacak şekilde bir grafik çiziniz. Veri noktalarını göstermek üzere kırmızı içi dolu daireler kullanınız. Bu grafiğe $numpy.polyfit$ ve $numpy.poly1d$ fonksiyonlarını kullanarak bir doğru uyumlayınız. Bu doğruyu grafiğinizin üzerine çizdirmek için $[0, 1600]$ kapalı aralığında 1000 noktadan oluşan bir x dizisi oluşturunuz ve doğru denkleminin katsayılarında bu x dizisini yerine koyunuz. Oluşacak olan y dizisini grafiğinizin üzerine kesiksiz mavi bir doğru ile çizdiriniz. Doğru denkleminizin katsayılarını ekrana yazdırınız. Grafiğinize "Kepler 3. Yasa", eksenlerine ise uygun birer başlık veriniz.

In [6]:
from matplotlib import pyplot as plt
%matplotlib inline
plt.plot((My+Mg)*P**2,a**3,'ro')
plt.xlabel("(My+Mg)*P^2 [(Mgunes yil)^2]")
plt.ylabel("a^3 [AB]^3")
plt.title("Kepler 3. Yasa")
dogru_katsayilar = np.polyfit(My*P**2,a**3,1)
dogru = np.poly1d(dogru_katsayilar)
x = np.linspace(0,1.1e-3,1000)
y = dogru(x)
plt.plot(x,y,'b-')
plt.show()
dogru_denklemi = str(dogru_katsayilar[0]) + " x " + str(dogru_katsayilar[1]) 
print(dogru_denklemi)
1.0011322859547063 x -1.3376643444404569e-08