Partnerzy

Astro-Miejsca


URANIA

astroturystyka

100 lat IAU

IAU

Comet

Centrum Nauki Kepler

Planetarium Wenus

ERC

Centrum Nauk Przyrodniczych

Orion,serwis,astronomii,PTA

POLSA

Astronomia Nova

Astronarium

forum astronomiczne

IPCN

Portal AstroNet

Puls Kosmosu

Forum Meteorytowe

kosmosnautaNET

kosmosnautaNET

Nauka w Polsce

astropolis

astromaniak

PTMA

PTR

heweliusz

heweliusz

ESA

Astronomers Without Borders

Hubble ESA

Space.com

Space Place

Instructables

Tu pełno nauki

Konkursy

Olimpiady Astronomiczne
Olimpiada Astronomiczna przebiega w trzech etapach.
Zadania zawodów I stopnia są rozwiązywane w warunkach pracy domowej. Zadania zawodów II i III stopnia mają charakter pracy samodzielnej. Zawody finałowe odbywają się w Planetarium Śląskim. Tematyka olimpiady wiąże ze sobą astronomię, fizykę i astronomiczne aspekty geografii. Olimpiady Astronomiczne


Urania Postępy Astronomii - konkurs dla szkół


astrolabium

Organizatorem konkursu astronomicznego jest Fundacja dla Uniwersytetu Jagiellońskiego a patronat nad akcją sprawuje Obserwatorium Astronomiczne im. Mikołaja Kopernika będące instytutem Wydziału Fizyki, Astronomii i Informatyki Stosowanej Uniwersytetu Jagiellońskiego w Krakowie.
Zobacz szczegóły »

astrolabium

konkurs, astronomiczny

AstroSklepy

Serwis Astro - 30 lat AstroDoświadczenia!

Astro Schopy
 Firma ScopeDome

Planeta Oczu

Astrocentrum

Python i Księżyc

Biblioteka Pythona PyEphem zawiera gotowe funkcję do wykonania obliczeń astronomicznych dla różnych ciał niebieskich z wyjątkiem Ziemi, tzn. nie będziemy mogli wywołać jakiejś funkcji programu by nam obliczyła jakieś dane (np. tranzyt, czy wschód) dla planety Ziemia.

Na początek kod programu:
# -*- coding : ISO-1250 -*-
#wyznaczanie faz Księżyca
# IMPORTOWANIE
import ephem as ep

# czas 
ts = ep.Date("2016/8/25 00:00:00")
#Fazy Księzyca
d0 = ep.previous_new_moon(ts) #nowy - młody Księżyc - nów
d1 = ep.previous_first_quarter_moon(ts) #pierwsza kwadra
d2 = ep.previous_full_moon(ts) #pełnia
d3 = ep.next_last_quarter_moon(ts)# ostatnia kwadra

print('%28s %22s %14s' % ('Faza Księżyca','Data','JD'))
fmt = '%38s %18s %f'
print(fmt % ("Ostatnia nowy Księżyc: ",d0,ep.julian_date(d0)))
print(fmt % ("Ostatnia pierwsza kwadra Księżyca: ",d1,ep.julian_date(d1)))
print(fmt % ("Ostatnia pełnia Księżyca: ",d2,ep.julian_date(d2)))
print(fmt % ("Ostatnia kwadra Księżyca: ",d3,ep.julian_date(d3)))

Po szczegóły programowania w Pythonie odsyłam do samouczków jakie prezentowaliśmy we wcześniejszych artykułach. My zajmiemy się tu jedynie czystym kodowaniem z wykorzystaniem PyEphem.

Dla uproszczenia wskazaliśmy datę względem której program wylicza nam najbliższe fazy Księżyca. Tu jest to: 2016/8/25 00:00:00. Ale oczywiście możemy zmodyfikować go tak, by pobierał kolejne miesiące lunarne, lub prościej kolejne fazy pełni, nowiu, pierwszej czy ostatniej kwadry. Musimy tylko zdefiniować odpowiednią pętlę. Na razie zostawiamy to do zrobienia czytelnikowi.

Do wyznaczenia fazy Księżyca posłużyła nam funkcja previous_full_moon() i jej pochodne czyli previous_new_moon(), previous_first_quarter_moon(), next_last_quarter_moon(). Oprócz daty fazy Księżyca wyznaczamy w naszym programie jej datę Juliańską. Do tego celu potrzebujemy tylko wywołania funkcji julian_date(). Przypomnijmy jak wyglądało liczenie JD:

#-------------------------------------------------------------------------------
# Name:        data julianska alg. z WikiPedii
# Purpose:     python 3.x
#
# Author:      astronom
#
# Created:     17-10-2014
# Copyright:   (c) astronom 2014
# Licence:     Jacek Patka Sekcja Astronomiczna
#               Gwiezdne Wrota w Zaganiu
#-------------------------------------------------------------------------------
# -*- coding: UTF-8 -*-
# Dane do obliczeń
R=2004 #rok
M=1 #miesiąc
D=1 # dzień
# obliczenia
X = int((M + 9) / 12)
A = 4716 + R + X
Y = int(275 * M / 9)
V = int(7 * A / 4)
B = 1729279.5 + 367 * R + Y - V + D
Q = int((A + 83) / 100)
C = Q
W = int(3 * (C + 1) / 4)
E = W
JD = B + 38 - E
# wyświetlanie wyniku
print ('JD:',JD)


Oto nasz kod liczący dla kolejnych 20 miesięcy synodycznych kolejne fazy Księżyca. Dodaliśmy w niej pętlę for ... in range () jej parametrem jest wartość zak podająca ile razy ma być wykonana pętla.
# -*- coding : ISO-1250 -*-
#wyznaczanie faz Księżyca
# IMPORTOWANIE
import ephem as ep

# czas 
ts = ep.Date("2016/8/25 00:00:00")
# zakres obliczeń - na ile miesięcy synodycznych
# mają być zrobione obliczenia
zak = 20
#Fazy Księzyca
d0 = ep.previous_new_moon(ts) #nowy - młody Księzyc
d1 = ep.previous_first_quarter_moon(ts) #pierwsza kwadra
d2 = ep.previous_full_moon(ts) #pełnia
d3 = ep.next_last_quarter_moon(ts)# ostatnia kwadra

print('%18s %22s %14s' % ('Faza Księżyca','Data','JD'))
fmt = '%28s %18s %f'
print(fmt % ("Ostatni nów: ",d0,ep.julian_date(d0)))
for i in range (zak):
    print(fmt % ("Kolejny nów: ",ep.next_new_moon(d0),ep.julian_date(d0)))
    d0 = ep.next_new_moon(d0)
print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
print(fmt % ("Ostatnia I kwadra: ",d1,ep.julian_date(d1)))
for i in range (zak):
    print(fmt % ("Kolejna I kwadra: ",ep.next_new_moon(d1),ep.julian_date(d1)))
    d1 = ep.next_new_moon(d1)
print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
print(fmt % ("Ostatnia pełnia: ",d2,ep.julian_date(d2)))
for i in range (zak):
    print(fmt % ("Kolejna pełnia: ",ep.next_new_moon(d2),ep.julian_date(d2)))
    d0 = ep.next_new_moon(d2)
print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
print(fmt % ("Ostatnia kwadra: ",d3,ep.julian_date(d3)))
for i in range (zak):
    print(fmt % ("Kolejna ost. kwadra: ",ep.next_new_moon(d3),ep.julian_date(d3)))
    d0 = ep.next_new_moon(d3)


Za pomocą biblioteki PyEphem można dużo więcej.



Przeczytaj więcej:

Brak komentarzy. Może czas dodać swój?

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się , żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
31,504,967 unikalne wizyty