RA-Sat | Dijital Eğitim Seti - I

Güneş'in Yolculuğu

1. Güneş'in Hareketleri

Tarih boyunca insanlar içerisinde yaşadıkları Dünya'yı anlamaya çalıştıkları gibi her gece ve gündüz başlarının üstünde aksatmadan hareket eden gök cisimlerini de anlamaya çalıştılar. Milattan önceki yıllarda kimileri onları Tanrı gibi görüp inanmış, kimileri ise göğü kaplayan çarşafın içindeki bazı deliklerden ibaret olduklarını düşünmüşler. Kimi zaman salgınların kimi zaman savaşların kimi zamansa güzel olayların habercisi olmuş bu ışıldayan cisimler. Milattan sonra ise bunların Dünya'nın etrafında dönen cisimler olduğu yönündeki inanç güç kazanmış. Zaman zaman bu modele karşı çıkıp Güneş'i merkeze koymaya çalışanlar çıksa da toplumun genel kabulünden dolayı seslerini çok fazla duyuramamışlar. Hatta bazıları bu düşüncelerinden ötürü canlarından bile olmuş! Peki bu insanlar hangi sebeplerden ötürü herkesin kabul ettiği Dünya merkezli evrene karşı çıkmışlardı? Güneş'te ve diğer cisimlerde onların görüpte diğerlerinin görmediği şey neydi?

Haydi Tartışalım! --> Güneş Merkezli Sistem vs. Dünya Merkezli Sistem

Yıllar önce yaşamış dünüşürlerle aynı adımları atıp günlük yaşantınızdan örneklerle Dünya Merkezli Sistem'in hatalarını göstermek için ne yapmanız gerektiğini arkadaşlarınızla tartışın. Bulduğunuz deliller Güneş Merkezli Sistem'in varlığını kanıtlamak için yeterli mi? Arkadaşlarınızla gruplara ayrılıp bu konuda bir münazara düzenleyebilirsiniz.

Güneş Sistemi

Milatan önceki yıllarda gökyüzüne duyulan merak ve onu anlamlandırma çabası karşısında farklı medeniyetlerden farklı düşünürler ortaya çıksa da kendileri ya da düşüncülerine dair çoğu bilgi günümüze ulaşmayı başaramamıştır. Bu düşünürler ve ortaya koydukları düşünceleri inceleyerek günümüz evren modelini anlayacağımız yolculuğa fazla uzaklaşmadan, Anadolu'dan başlayalım.

Bilgi sevgisi (Yun. Philosophia) ya da bildiğimiz adıyla felsefenin ve hatta bilimin filizlendiği, Anadolu topraklarında hüküm süren İyonya medeniyeti gök bilimi için de ilk düşüncelerin doğduğu yer olmuştur. İyonyalı Thales MÖ 585'te bir Güneş tutulmasını öngörebilse de bunun şanslı bir tahmin olup olmadığını anlayabilmemizi sağlayacak herhangi bir yazı bırakmamıştır arkasında. Gerek dönemi gerekse ilerleyen yıllarda yazılan farklı kaynaklar bize Thales'in başarılı bir şekilde tutulmayı tahmin ettiğini göstermektedir.

Thales

Thales'in böyle bir tahmini nasıl yaptığı bilinmese de döneminde Dünya'nın gökte asılı durduğu ya da bir yerlerden desteklenerek havada kaldığı yönündeki düşünce kabul görüyordu. Bilindiği kadarıyla bu düşünceye ilk kez karşı çıkan ve astronominin de kurucusu olduğu da kabul edilen Anaksimandros'tu (MÖ 610-546). Thales'in öğrencisi ya da arkadaşı olduğu düşünülen Anaksimandros, Dünya'yı evrenin merkezine hareketsiz biçimde yerleştirmiş ve evrenin bir silindir şeklinde olduğunu ileri sürmüştür. Silindirin alt yüzeyinde sabit şekilde duran Dünya'dan uzaklaştıkça sırasıyla yıldızlar Ay ve Güneş çembersel hareket yapıyordu. Kulağa pek mantıklı gelmiyor değil mi? Buna rağmen Anaksimandros ereni mitolojik olaylarla değil düşünceleriyle açıklamaya çalışmasıyla adını günümüze getirebilmiş ve başka fikirlerin oluşmasına da kapı açmıştır.

Dünya merkezli evren modeli

Platon (MÖ 428-348) ve Aristoteles (MÖ 384-322) gibi ünlü düşünürler de Dünya merkezli evreni savunurken İyonya'nın son bilim insanlarından biri olan Aristarkhos (MÖ 310-230), Pisagor'un (MÖ 580-490) ilerisi sürdüğü Dünya merkezli olmayan evreni savunuyordu. Pisagor ve onu takip eden düşünürler merkeze büyük bir ateş koymakla yetinmemiş, Dünya'yı, Güneş'i, Ay'ı ve o dönemde bilinen diğer gezegenlere ek olarak "Karşı Dünya"nın da onun etrafında döndüğünü kabul etmişler. Güneş ve Ay tutulmasının sebebini de neredeyse doğru bir şekilde açıklamışlardı. Aristarkhos ise bu noktada devreye giriyor ve günümüze kalan tek hesabında Ay tutulması sırasında Ay'ın üzerine düşen gölge ile yaptığı geometrik işlemlerin sonucunda Güneş'in Dünya'dan çok büyük olduğunu fark ediyor. Bu sebeple belkide büyük boyutlu olan Güneş'i merkeze koyup Dünya'yı da diğer gezegenlerle birlikte onun etrafında dönüyor kabul etmenin daha gerçekçi olduğunu düşünmüştür. Böylece Güneş merkezli evreni öne süren ilk bilim insanı olmuştur. Düşüncelerinde daha da ileri giden Aristarkhos, yıldızların uzak güneşler olduğuna da inanmıştır. Tabi bu modelin de en büyük hatalarındandan birisi Güneş ve yıldızları sabit kabul edip Dünya ile diğer gök cisimlerini onun etrafında döndürmesiydi.

Ptolemaios Batlamyus

Milattan sonraki çağlarda ise Ptolemaios (MS 100-170) ya da bizim bildiğimiz ismiyle Batlamyus karşımıza çıkan ilk isimlerden oluyor. Batlamyus gökyüzü gözlemleriyle gök cisimlerinin, özelliklede gezegenlerin hareketlerini anlamaya çalışmış, Güneş ve Ay tutulmalarını belirli kurallar çerçevesinde incelemeye çalışmıştır. Uzun yıllar kabul görecek ve hatta bilimin gerçek anlamda başlamasını çok sonralara erteleyecek olan evren modeli ile Dünya'yı küresel bir evrenin merkezine koymuş ve Güneş dahil tüm gök cisimlerinin bizim etrafımızda döndüğünü kabul etmiştir. Gezegenler ve Güneş'in etrafımızda dairesel hareket yaptığı ve sait yıldızlardan sonra evrenin bittiğini de düşünmekteydi. Görüldüğü gibi Dünya merkezli evren o dönemde bile popülerliğini yitirmemişti. Aslında insanların bu düşünceyi kolaylıkla kabul etmelerinin sebebi ayaklarını bastıkları yerin hareketsiz oluşuydu. Eğer ayaklarının altındaki zemin dönmüyorsa o zaman kendileri sabit, gökyüzünde dönüp duran cisimler hareketli olmalıydı.

Batlamyus'un evren modeli dönemin kilise anlayışıyla da katı bir şekilde korunduğu için uzun yıllar bu modele karşı çıkan ciddi bir ses çıkmadı. İslam Medeniyeti'nin parlak yıllarında ise İbn-i Heysem (965-1038), Uluğ Bey (1394-1449) ve Ali Kuşçu (1403-1474) gibi astronomlar ortaya çıkarak hem düşünceleri hem de gözlemleriyle astronomiye önemli katkılar yapmıştır. Uluğ Bey, Batlamyus'un teorilerine karşı çıksa da onları tamamen hatalı değil eksik olarak yorumlamıştır. Dünya'yı ve gezegenleri küresel kabul ederek gezegenlerin hareketlerini dairesel yörüngelerle değil eliptik yörüngelerle açıklamaya çalışmıştır. Ardından çalışmalarını devralan Ali Kuşçu Dünya'nın küreselliğine inanmaya devam ederek gök cisimleri ile yeryüzünün arasındaki uzaklıklarla ilgili çalışmalar yürütmüştür.

Nicolaus Copernicus

Rönasans'la birlikte Avrupa'da astronomiye dair düşünceler daha büyük bir hızla gelişmeye başlamıştır. Kabaca 1400-1700 yılları arasında astronomi büyük bedeller ödeyerek çok önemli noktalara gelmiştir. Nikolas Kopernik (1473-1543) astronomide yeni bir dönem başlatarak 17 yüzyıl geriye giderek Aristarkhos'un tanımladığı Güneş merkezli bir evrenin varlığını kabul etti. Onlarca yıl süren çalışmalarıyla yazdığı kitap maalesef ölümünden sorna basılabildiği için düşüncesinin nelere sebep olduğunu göremedi fakat Dünya'nın hareket edip etmediği ve Güneş'in durumu hakkındaki tartışmaları yeniden ateşledi. Kopernik'in Güneş merkezli sistemi özellikle hareket denklemlerinin tanımlanması bakımından daha sade bir yol tanıdığı için harketleri açıklamada diğer modellerden daha üstündü. Kopernik Güneş Sistemi'nin doğru modelini çizen ilk astronom olmakla birlikte gezegenlerin açısal hızlarını, periyotlarını ve Güneş'e olan uzaklıklarını da hesaplayabilmiştir. Teorisiyle gezegenlerin hareketlerini basitçe hesaplayıp hareketlerini kötü sayılmayacak bir şekilde öngörebilse de Dünya'nın dönüşüne dair bir kanıt sunamadığı için hemen kabul görmemiştir.

Giordano Bruno'nun öldürüldüğü meydana yapılan heykeli

Kopernik'in ardından hızlı bir yükseliş dönemini getiren Tycho Brahe (1546-1601), Johannes Kepler (1571-1630), Galileo Galilei (1564-1642) ve Isaac Newton (1643-1707) olmuştur. Özellikle aynı dönemde yaşamış Tycho, Kepler ve Galilei'nin çalışmalarının heyecan verici hikayesini burada tüm detaylarıyla tartışamayacağız fakat merak edenler Carl Sagan'ın Kozmos kitabının 2. ve 3. bölümünde bu hikayeyi detaylı bir şekilde bulabilir. Tycho Dünya merkezli evren yerine Güneş ve Dünya'nın birbiri etrafında döndüğü, diğer gezegenlerinde onların etrafında döndüğü karışık bir modeli kabul etmişti. Oluşturduğu model gerçek olmasa da yaptığı gözlemlerde çok başarılıydı. Özellikle gezegenlerin gözlemiyle ilgili detaylı kayıtlar takip eden yıllarda yapılacak çalışmaların en büyük veri kaynağı olmuştu. Kepler ve Galilei ise Düşünceleri yaşadıkları dönem için çok tehlikeliydi. Giordano Bruno (1548-1600), sırf Kopernik'in tezini savunan düşüncesi yüzünden Engizisyon mahkemesinde yargılanmış ve sapkın ilan edilerek Roma'da yakılarak idam edilmişti. Kepler ve Tycho ecelleriyle ölse de Galileo da Engizisyon'da yargılanmaktan kaçamamıştı. Bruno'nun kaderini paylaşmaya yaklaşan Galilei ilk seferinde düşüncelerini reddetmiş, fakat devam eden yıllarda tekrar çalışmaya başlayarak ömrünün sonuna kadar ev hapsine mahkum edilmişti.

Tycho Brahe ile Johannes Kepler

Tycho ile dönem dönem ciddi tartışmalar yaşasa da dönneminin en zengin gözlem ekipmanlarına sahip olduğu söylenebilecek olan Tycho'nun asistanı olarak aylarca çalışması Kepler için bulunmaz bir fırsat olmuştu. Kepler, ondan kalanları da miras olarak almış ve çalışmalarını sürdürmüştü. Geçmiş gözlemlerden de bilindiği üzere gezegenlerin gökyüzündeki hareketleri bakımından en belirgin farklılık Mars'ta yaşanıyordu. Tycho'nun da Keppler'in dikkatini Mars'ın hareketine yönlendirmesiyle teorilerini Mars üzerinde test etmeye çalıştı. Mars'ın hareketini dairesel yörünge üzerinden açıklamaya çalışsa da ulaştığı sonuçlar Tycho'nun gözlemleriyle uyuşmuyordu. Bu yüzden istemeyerekte olsa eliptik yörünge kabulüyle hesaplamalar yapmaya başladı. Böylece birinci yasasını, yörüngeler kanunu, ortaya atarak gezegenlerin Güneş'in çevresinde elips biçiminde bir yörünge ile hareket ettiğini göstermiştir. Böylece Mars dışında kalan diğer gezegenlerin ise daha az eliptik yörüngelerde olduğu da ortaya çıkmıştır. Gözlemlere dayalı yaptığı hesaplarla ikinci yasasını da, alanlar kanunu, ortaya çıkartarak gezegenlerin eşit zaman dilimlerinde eşit alanlar taradığını söylemiştir. Aradan geçen birkaç yıl sonra Kepler üçüncü yasasını, periyotlar kanunu, da ortaya atmış ve gezegenlerin Güneş etrafındaki hareketinin periyodu ile Güneş'e olan uzaklıkları arasında matematiksel bir ilişki kurmuştur. Bu ilişki gezegenin yörüngesinin ortalama yarıçapının küpünün, bir periyodunun karesine olan oranının tüm gezegenler için sabit gelmesiydi. Böylece kısa sürede eliptik yörüngedeki gezegen Güneş'e yakınken daha hızlı giderek daha çok yol katettiğini, Güneş'e uzakken daha yavaş döndüğü için daha az yol aldığını fark etti. Yol bakımından oluşan bu farklılıkta gezegenin Güneş'e olan mesafesi göz önüne alındığında taranılan alanın eşit olmasyla sonuçlanıyordu.

Kepler son yasasını da ortaya koyduktan tam sekiz gün sonra Otuz Yıl Savaşları başlar. Kendisini destekleyen hükümdarı tahttan indirilince elindikileri ve hatta ailesini de kaybetmişti. Düşünceleri yüzünden afaroz edilen Kepler uzun süre annesinin cadılık yüzünden idam edilmekten kurtarmaya çalıştı. 1608'de ilk bilim kurgu kitabı sayılabilecek olan Somnium (Lat. düş) kitabını kaleme aldı. Bu kitapta otobiyografi gibi Kepler'in hakkında bize fikirler verse de Ay'a gitmeye çalışan bir çocuğun cadı annesinin yaptığı bir ruh seansıyla bu isteğini gerçekleştirmesini anlatır. Zaten bu kitap delil gösterilerek annesi cadı olarak suçlanmıştır. Annesini idamdan kurtarsa da sürgünle cezalandırılmasına engel olamadı. Fakat yaptığı mücadele ile dükün böyle zayıf kanıtlarla insanların büyücülükle yargılanmasını engelleyen kararlar almasını sağlamıştır.

Galileo Galilei

Teorik bir astronom ve ilk bilim kurgu yazarı olan Kepler'den uzunca bahsettik. Peki bu esnada Galilei ne yapmaktaydı? Galilei ve Kepler aynı dönemde yaşadığı için zaman zaman mektuplaşarak çalışmaları hakkında konuşurlardı. Galilei Güneş merkezli sistemi savunmaya başladığında bu tabiki dönemin mutlak otoritesi olan kilisenin tepkisini çekmişti. Güneş'i evrenin merkezine koymasından vazgeçmesi için defalarca uyarılan Galilei, çıkartıldığı Engizisyon mahkemesince ömür boyu ev hapsine mahkum edildi. Geliştirdiği güçlü teleskoplarla birlikte gözlemsel astronomi için attığı önemli adımlarla Jüpiter'in dört büyük uydusu olan Io, Europa, Ganymede ve Callisto'yu keşfetti. Bu keşif başlı başına dünya merkezli modeli çürütür nitelikteydi.

Isaac Newton

Cisimlerin birbiri etrafında neden ve nasıl hareket ettiği sorusu muhtemelen tüm bu insanların da kafasını kurcalayan bir soruydu. Kepler yaptığı çalışmalarda kütle çekimsel kanunu hissetse de gezegenlerin Güneş etrafında dönmesini manyetik bir güce bağlamıştı. Bu pek doğru bir tahmin olmamıştı ama henüz kütle çekim kanunun bilinmediğini de unutmamak gerekir. Kütle çekimin keşfi ve bu hareketlerle ilişkilendirilmesi ise ondan yıllar sonra Isaac Newton ile gerçek olabilmişti. Kafasına düşen elmayla mı aydınlandı yoksa zaten düşündüğü bir konumuydu bilinmez ama Newton kütle çekimini keşfederek formülize eden ilk isim olmuştur. Kendi adıyla anılmaya devam eden yansıtmalı (Newtonian) teleskopların da mucidi olan Newton, makro ölçekte geçerliliğini koruyan ve hala daha kullandığımız hareket yasalarını da ortaya atmıştır.

2. Python Çalışması

Python'ın kurulumu Dijital Eğitim Seti-2'de anlatılmıştır. Kurulumu yaptıktan sonra Spyder üzerinden bu çalışmayı gerçekleştirebilirsiniz.

2.a- Kütüphanelerin çağrılması

Hesaplamaların sağlıklı bir şekilde yapılması için Python'ın bazı kütüphanelerinden yardım almamız gerekiyor. Kütüphaneler farklı amaçlar için yazılmış, genel geçer veya sıkça kullanılan komutların bir araya getirildiği ve çeşitli kısaltmalarla kullanılan yardımcı fonksiyonlardır. Bu çalışmada matematiksel işlemlerimiz için numpy, tarihsel işlemler için datetime ve grafik çizimleri için matplotlib.pyplot komutlarına ihtiyaç duyulmaktadır. import komutuyla çağırdığımız kütüphaneler kod içerisinde yazım kolaylığı sağlamak adına as komutuyla belirlediğimiz kısaltmayla çağırabilmektedir. Örneğin ilk satırda pi sayısını çağırmak için numpy.pi yazmak yerine np.pi yazmak yeterli olur. Tüm kısaltmaları kendi istediğinize göre düzeltebilirsiniz fakat kod boyunca hep aynı kısaltmayı kullanmak zorunda olduğunuzu unutmayın.

In [1]:
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt

2.b- İşlemler için gereken sabitlerin tanıtılması

İlk olarak ihtiyaç duyduğumuz açısal değişimlerinde kullanmak üzere radyan ve derece adlı iki değeri tanımlayalım. numpy kütüphanesi trigonometrik işlemlerde radyan birimiyle çalıştığı için np.cos() ve np.sin() gibi işlemlerimizde parantez içine radyan biriminde sayılar yazmalıyız.

In [2]:
# Sabit Değerler#
radyan=np.pi/180 #Derece birimini radyana çevirmek için kullanılır
derece=180/np.pi #Radyan birimini dereceye çevirmek için kullanılır

Güneş'in hareketini inceleyeceğimiz bölgeyi seçmek için istediğiniz enlem ve boylam değerini derece cinsinden yazabilirsiniz. Bulunduğunuz konumun koordinatlarını girerek hesaplayacağınız saatlerin doğruluğu gözlemlerinizle ya da takvimle kontrol edebilirsiniz.

In [3]:
enlem=41.085; #Gözlemcinin enlem bilgisi derce cinsinden yazılır. Kuzey için +, Güney için - kullanılır
boylam=39.3832; #Gözlemcinin boylam bilgisi derece cinsinden yazılır. Doğu için +, Batı için - kullanılır

Hesaplamalarınızın başlangıç tarihini belirleyin. İşlem süresini kısaltmak için hesaplarımızı dakika hassasiyetinde yapacağız. O yüzden saniyeyi 0 olarak girebilirsiniz. Kodu başarılı bir şekilde çalıştırdıktan sonra işlemleri saniyeye hassasiyetine indirmeyi deneyebilirsiniz. Bu değişiklik sonuçlarınızı çok fazla değiştirmeyecek fakat işlem sürenizi arttıracağı için biraz sabredip bolca beklemeniz gerekecek. Burada gireceğiniz saat evrensel saattir (Universal Time - UT) ve 0 derece boylama göre hesaplanır. Türkiye'nin yerel saati UT+3'tür. Yani 0 derece boylamında bulunan Greenwhich'te saat 12 iken Türkiye'de 15'tir. Zamanın yerel saate göre güncellenmesi ilerleyen aşamalarda yapılacağı için buraya saat bilgisi mutlaka UT0 şeklinde girilmeli.

In [4]:
#Hesapların başlangıç tarihi
yıl=2020
ay=6
gün=18
saat=0 #Saat bilgisi UTC cinsinden yazılır. Türkiye için yerel saatten 3 saat çıkartılır
dakika=0
saniye=0
utc=3

Hesapları yapacağımız yani başlangıç zamanımızdan yapacağımız ilerletmenin toplam gün sayısını ve Güneş'in hareketini hangi günler arasında görmek istediğimizi burada belirleyeceğiz. Günlük, haftalık ya da aylık grafikler almak içinse istediğiniz aralığın değerini 1, diğerlerini 0 yapmalısınız.

In [5]:
#Hesaplamanın ve grafiklerin çizileceği günlerin belirlenmesi
ilerlet=10 #Hesaplamanın yapılacağı gün sayısı
gün1, gün2=0,10 #Grafikler gün1-gün2 aralığında çizdirilecektir
#Grafiklerin günlük, haftalık ya da aylık çizimler için belirlenmesi
#NOT: İlerlettiğiniz gün sayısı seçiminiz için yetersizse sadece başlangıç anının grafiğini alırsınız
gunluk=1
haftalık=0
aylık=0
In [6]:
t=dt.datetime(yıl, ay, gün, saat, dakika, saniye)
dtt1=dt.timedelta(days=ilerlet)
dtt4=dt.timedelta(seconds=0)

Takip eden 4 bölümde "def" adı altında bazı fonksiyonlar tanımlanacaktır. Bu "def" fonksiyonları yalnızca çağırıldığı zaman aktif hale gelir ve tek kullanımlıklıdırlar. Yani her çalıştırdığında ilk kez çalıştırılmış gibi kendisine parantez içinde verilen değerler ile işlemler yapılır, "return" kelimesinden sonra yazılı değerler ile sonuçlarını dışarı aktarır.

2.c- Jülyen Gün'ün ve Yerel Yıldız Zamanı'nın hesaplanması

Jülyen Günü, 1 Haziran M.Ö. 4713 yılı öğlen 12:00 başlangıç tarihinden günümüze geçen toplam gün sayısıdır. Mevcut tarihin basit bazı işlemlere tabi tutulmasıyla kolaylıkla hesaplanabilir. Yıldız zamanı, Dünya'nın uzak sabit yıldızlara göre hareketidir. Bu hareket Dünya'nın kendi etrafındaki dönüşü sonucunda sabit yıldızın tekrar aynı noktaya gelene kadar geçen süreyi ifade eder. Bir günü 24 saat olarak tanımlıyor olsak bile sabit yıldızın aynı noktaya gelmesine denk olan bu süre aslında 23 saat 56 dakikadır ve 360 derecelik bir dönüşe karşılık gelir. 24 saat ise 360.986 derecedir ve bir Güneş günü olarak tanımlanır. Yerel Yıldız Zamanı ise yerel meridyenin Koç Takımyıldızı'nı geçmesinden beri ölçülen zamandır.

In [7]:
def tarih_hesaplayıcı(tarih, i, boylam):
    ileri=dt.timedelta(minutes=i)
    tarih_yeni=t+ileri
    
    yıl=tarih_yeni.year
    ay=tarih_yeni.month
    gün=tarih_yeni.day
    saat=tarih_yeni.hour
    dakika=tarih_yeni.minute
    saniye=tarih_yeni.second

    ut=saat+dakika/60+saniye/3600
       
    jül=367*yıl-int(7*(yıl+int((ay+9)/12))/4)+int(275*ay/9)+gün+1721013.5

    jülyengünü=jül+ut/24

    T0=(jül-2451545)/36525
    lstG0=(100.4606184+36000.7704*T0+0.000387933*T0**2-2.583*10**-8*T0**3)%360
    lstG=(lstG0+360.98564724*ut/24)%360
    lst=(lstG+boylam)%360    
    
    return jülyengünü, lst, tarih_yeni

2.d- Güneş'in yüksekliğinin hesaplanması

Güneş'in yönü hesaplanırken Dünya'nın merkezine göre hesap yapılır. Fakat bu hesap yerel ölçüde bir anlam ifade etmemektedir ve koordinat dönüşümüyle gözlemci merkezli koordinat sistemine çevrilmesi gerekmektedir. Bu dönüşüm tamamen üç boyutlu geometrik hesaplamalarla birlikte yapılmakta olup daha detaylı bir inceleme gerektirmektedir. Koordinat dönüşümünün ardından yine geometrinin temel kurallarıyla Güneş'in gözlemciye göre yükseklik açısı kolaylıkla hesaplanabilir.

In [8]:
# İlk olarak Güneş'in yönü hesaplanmalıdır.
def güneş_yüksekliği(jülyengünü, lst, enlem):
    n=jülyengünü-2451545    
    M=(357.529+0.98560023*n)%360
    
    L=(280.459+0.98564736*n)%360
    
    lamda=(L+1.915*np.sin(M*radyan)+0.02*np.sin(2*M*radyan))
    
    epsilon=23.439-3.56*10**-7*n
    
    ux=np.cos(lamda*radyan)
    uy=np.sin(lamda*radyan)*np.cos(epsilon*radyan)
    uz=np.sin(lamda*radyan)*np.sin(epsilon*radyan)
    
    #Güneş'in Dünya'nın merkezine göre yön vektörü.
    u=np.array([ux, uy, uz]) 
    
    #Yön vektörünü gözlemciye göre hesaplamak için koordinat dönüşümü yapmak gerekir.
    QXx1=[-np.sin(lst*radyan), np.cos(lst*radyan), 0]
    QXx2=[-np.sin(enlem*radyan)*np.cos(lst*radyan), -np.sin(enlem*radyan)*np.sin(lst*radyan), np.cos(enlem*radyan)]
    QXx3=[np.cos(enlem*radyan)*np.cos(lst*radyan), np.cos(enlem*radyan)*np.sin(lst*radyan), np.sin(enlem*radyan)]
    
    QXx=np.array([QXx1, QXx2, QXx3])
    
    #Güneş'in gözlemciye göre yön vektörü.
    u_topo=np.dot(QXx,u/np.linalg.norm(u))
    
    #Güneş'in yükseklik açısı
    elev_rad=np.arcsin(u_topo[2])
    elev_deg=elev_rad*derece
    
    return elev_deg

2.e- Azami ve asgari yüksekliğinin hesaplanması

Hesaplanan tüm yükseklik ve tarih bilgileri Python üzerinde liste adı verilen depolama şekliyle depolandığı için bu listelerin tek tek incelenmesi gerekmektedir. Bu inceleme tamamen mantıksal işlemlerle gerçekleşir. Aşağıda doğru halini görebileceğiniz bu mantıksal algoritmayı kağıt üstünde kurgulayabilir misiniz?

In [9]:
#Azami yükseklik hesabı için
def azami_yükseklik(elev, tarih):
    k=0
    max_date=[0 for y in range(ilerlet)]
    maxell=[0 for y in range(ilerlet)]
    i_old=0
    for i in range(len(elev)):
        if elev[i]>elev[i_old]:
            maxell[k]=elev[i]
            max_date[k]=tarih[i]
        elif maxell[k]!=0 and elev[i]-maxell[k]<0:
            k=k+1
        i_old=i   
        if k==ilerlet:
            break
    
    return maxell, max_date

#Asgari yükseklik hesabı için
def asgari_yükseklik(elev, tarih):
    k=0
    i_old=0
    min_date=[0 for y in range(ilerlet)]
    minell=[0 for y in range(ilerlet)]
    for i in range(len(elev)):
        if elev[i]<elev[i_old]:
            minell[k]=elev[i]
            min_date[k]=tarih[i]
        elif minell[k]!=0 and elev[i]-minell[k]>0:
            k=k+1
        i_old=i   
        if k==ilerlet:
            break
    
    return minell, min_date

2.f- Güneş'in doğuş ve batış anlarının hesaplanması

Bir önceki bölümde kullanılan algoritmanın benzer hali burada da geçerlidir. Fakat burada "doğuş" ve "batış" kavramlarını iyi tanımlamak gerekir. Günlük hayatta kullandığımız "doğuş" ve "batış" zamanları Güneş'in gözlemciye göre -0.8 dereceye ulaştığı andır. Bunun dışında günlük tan başlangıç ya da bitişi -6 dereceyle, deniz tanı başlangıç ya da bitişi -12 dereceyle, gökbilim tanı başlangıç zamanı ise -18 derece ile tanımlanır. Tüm bu farklı zamanları https://www.heavens-above.com/sun.aspx adresinden detaylı olarak inceleyebilirsiniz. Yukarıda yapılan hesapların kolay ve anlaşılır olması için bazı karmaşık hesaplar ihmal edilmiştir. Bu yüzden hesaplar sonucunda bulacağınız saat ile takviminizde yazan saat arasında bir kaç dakikalık farklılıklar olabilir.

In [10]:
def gün_doğumu_batımı (elev, tarih):
    b=0; d=0
    doğuş_date=[0 for y in range(ilerlet)]
    batış_date=[0 for y in range(ilerlet)]
    for i in range(len(elev)):
        if abs(elev[i]+0.8)<0.1:
            if elev[i]-elev[i-1]<0: 
                batış_date[b]=tarih[i]  
                if abs(elev[i+1]+0.8)>0.1:
                    b=b+1
            else:
                doğuş_date[d]=tarih[i]
                if abs(elev[i+1]+0.8)>0.1:
                    d=d+1
        if b==ilerlet and d==ilerlet:
            break
    
    return doğuş_date, batış_date

2.g- Kodun çalıştırılması

Asıl işlemler bu bölümde gerçekleşmektedir. Burada Güneş'in yükseklik hesabı belirlenen süre boyunca tek tek hesaplanır ve tarih bilgisiyle birlikte kaydedilir.

In [11]:
elev=[]; tarih=[]
for i in range(int(dtt1.days*1440+dtt4.seconds)):
    jülyengünü,lst,tarih_yeni=tarih_hesaplayıcı(tarih,i,boylam)
    elev_deg=güneş_yüksekliği(jülyengünü, lst, enlem)
    elev.append(elev_deg)
    tarih.append(tarih_yeni+dt.timedelta(hours=utc))
  
maxell, max_date=azami_yükseklik(elev,tarih)    
minell, min_date=asgari_yükseklik(elev,tarih) 
doğuş, batış=gün_doğumu_batımı(elev,tarih)

2.h- Sonuçların görselleştirilmesi

In [12]:
if gunluk==1:
    
    plt.figure()
    plt.subplot(1,2,1)
    plt.plot(max_date[gün1:gün2],maxell[gün1:gün2])  
    plt.xticks(rotation=90)
    plt.title('Güneş\'in Günlük Tepe Noktaları')
    plt.ylabel('Yükseklik - Derece')
    plt.xlabel('Zaman - Saat')   
    plt.grid()
    
    plt.subplot(1,2,2)
    plt.plot(tarih[gün1*1440:gün2*1440],elev[gün1*1440:gün2*1440])   
    plt.xticks(rotation=90)
    plt.title('Güneş\'in Günlük Hareketi')
    plt.ylabel('Yükseklik - Derece')
    plt.xlabel('Tarih')
    plt.grid()
    print('Güneş\'in en yüksek noktada olduğu tarihler ve yükseklik açıları')
    for baskı in max_date[gün1:gün2]:
        print(baskı,round(maxell[max_date.index(baskı)],1))
    print('\nBu tarihler takviminizle uyuşuyor mu?')
    
elif haftalık==1:
    plt.figure()
    print('Güneş\'in en yüksek noktada olduğu tarihler ve yükseklik açıları')
    for j in np.linspace(0,ilerlet//7,ilerlet//7+1)*7:
        plt.plot(max_date[int(j)],maxell[int(j)],'o')
        plt.xticks(rotation=90)
        plt.title('Güneş\'in Tepe Noktaları')
        plt.ylabel('Yükseklik - Derece')
        plt.xlabel('Tarih')   
        plt.grid()
        plt.show()
        print(max_date[int(j)],maxell[int(j)])
    print('\nBu tarihler takviminizle uyuşuyor mu?')
    
elif aylık==1:  
    plt.figure()
    for j in np.linspace(0,ilerlet//30,ilerlet//30+1)*30:
        plt.plot(max_date[int(j)],maxell[int(j)],'o')
        plt.xticks(rotation=90)
        plt.title('Güneş\'in Tepe Noktaları')
        plt.ylabel('Yükseklik - Derece')
        plt.xlabel('Tarih')   
        plt.grid()
        plt.show()
else:
    print('Günlük, haftalık ya da aylık grafik seçimini hatalı yaptınız. Lütfen grafiğini görmek istediğiniz aralığı 1, diğerlerini 0 yaparak tekrar deneyiniz')
Güneş'in en yüksek noktada olduğu tarihler ve yükseklik açıları
2020-06-18 12:24:00 72.3
2020-06-19 12:24:00 72.3
2020-06-20 12:24:00 72.4
2020-06-21 12:24:00 72.4
2020-06-22 12:25:00 72.3
2020-06-23 12:25:00 72.3
2020-06-24 12:25:00 72.3
2020-06-25 12:25:00 72.3
2020-06-26 12:25:00 72.2
2020-06-27 12:26:00 72.2

Bu tarihler takviminizle uyuşuyor mu?
şimdi kodu günlük ve aylık hesaplamalar için düzenleyip çıkan sonuçları inceleyebilirsiniz.

3. Kaynaklar

Allen Downey, Think Python: How to Think Like a Computer Scientist

Howard D. Curtis, Orbital Mechanics for Engineering Students

https://tr.wikipedia.org/wiki/Anasayfa