Kalendarz

<< Grudzień 2019 >>
Po Wt Śr Cz Pi So Ni
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

OstatnieFoto

Partnerzy

Astro-Miejsca


URANIA

100 lat IAU

IAU

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

Astro Schopy
Uniwersał

Planeta Oczu

Astrocentrum

Aktualnie online

> Gości online: 2

> Użytkowników online: 0

> Łącznie użytkowników: 1
> Najnowszy użytkownik: jacek

Odwiedziny gości

Dziś:319
Wczoraj:3,390
W tym tygodniu:14,136
W tym miesiącu:22,224
W tym roku:701,418
Wszystkich:13,733,205

Ankieta

Gdzie jest Nowa Kelpera?

Lew

LMC

Rak

Wężownik

Smok

Rak

Pogoda F

Wszystko o Nas

Logo SA GW, autor Jacek Patka

Forum Astronomiczne PL


BOINC

Classroom

FB

Słoneczny panel

>Dziś jest:

Wschód słońca: 7:57
Zachód słońca: 15:51
>Dzień trwa:
7 Godzin 53 minut
Jest krótszy od najdłuższego dnia o: 10:43
Dane dla:
Żagań
Szerokość: 51°37 N
Długość: 15°19 E
Imieniny obchodzą:
Cecylia, Walerian, Mścigniew, Wolimir, Drogosława

Księżyc


Data: 15-12-2019 06:57:41

faza

Słońce

Na niebie


Mapa Nieba

TheSkyLive

CALSKY

Położenie ISS
The current position of the ISS
tranzyty ISS

Misja KEPLER

ZOONIVERSE odkrywanie planet

EPUP
4106 planet

Astropogoda

Pogoda


sat24, chmury, pogoda

III Prawo Keplera




Czytelnia


vademecum, miłośnika, astronomii, dwumiesięcznik, astronomia

Urania, numery archiwalne,przedwojenne

Light Pollution

M-WiFi

gwiazdy,zmienne,poradnik,gazeta,pdf,astronomia,pomiary

vademecum, miłośnika, astronomii, dwumiesięcznik, astronomia

astronomia amatorska

KTW'

Astronautilius

KTW'

kreiner, ziemia i wszechświat

kreiner, ziemia i wszechświat

poradnik, miłośnika, astronomii, książka, Tomasz, Rożek

poradnik, miłośnika, astronomii, książka, Rudż, Przemysław

atlas, nieba, książka, astronomia

atlas, księżyca, książka, astronomia

Poradnik Miłośnika Astronomii

Mądre Książki

Losowa Fotka

Python instalacja gmpy2

Zainstalujmy najpierw poniższe biblioteki:
apt-get install libgmp-dev
apt-get install libmpfr-dev
apt-get install libmpc-dev
A teraz:
sudo -H pip install gmpy2
Da nam taki efekt:
Collecting gmpy2
Using cached gmpy2-2.0.8.zip
Building wheels for collected packages: gmpy2
Running setup.py bdist_wheel for gmpy2 ... done
Stored in directory: ......../.cache/pip/wheels/c5/1e/2e/b0ac7a5202cb535de28288f15712a417de15723bfebb0b6d68
Successfully built gmpy2
Installing collected packages: gmpy2
Successfully installed gmpy2-2.0.8
Możemy teraz wykonać np. obliczanie liczby Pi :
"""
Python3 program to calculate Pi using python long integers, binary
splitting and the Chudnovsky algorithm

See: http://www.craig-wood.com/nick/articles/pi-chudnovsky/ for more
info
https://www.craig-wood.com/nick/articles/pi-chudnovsky/

"""

import math
from gmpy2 import mpz, isqrt
from time import time

def pi_chudnovsky_bs(digits):
    """
    Compute int(pi * 10**digits)

    This is done using Chudnovsky's series with binary splitting
    """
    C = 640320
    C3_OVER_24 = C**3 // 24
    def bs(a, b):
        """
        Computes the terms for binary splitting
        the Chudnovsky infinite series

        a(a) = +/- (13591409 + 545140134*a)
        p(a) = (6*a-5)*(2*a-1)*(6*a-1)
        b(a) = 1
        q(a) = a*a*a*C3_OVER_24

        returns P(a,b), Q(a,b) and T(a,b)
        """
        if b - a == 1:
            # Directly compute P(a,a+1), Q(a,a+1) and T(a,a+1)
            if a == 0:
                Pab = Qab = mpz(1)
            else:
                Pab = mpz((6*a-5)*(2*a-1)*(6*a-1))
                Qab = mpz(a*a*a*C3_OVER_24)
            Tab = Pab * (13591409 + 545140134*a) # a(a) * p(a)
            if a & 1:
                Tab = -Tab
        else:
            # Recursively compute P(a,b), Q(a,b) and T(a,b)
            # m is the midpoint of a and b
            m = (a + b) // 2
            # Recursively calculate P(a,m), Q(a,m) and T(a,m)
            Pam, Qam, Tam = bs(a, m)
            # Recursively calculate P(m,b), Q(m,b) and T(m,b)
            Pmb, Qmb, Tmb = bs(m, b)
            # Now combine
            Pab = Pam * Pmb
            Qab = Qam * Qmb
            Tab = Qmb * Tam + Pam * Tmb
        return Pab, Qab, Tab
    # how many terms to compute
    DIGITS_PER_TERM = math.log10(C3_OVER_24/6/2/6)
    N = int(digits/DIGITS_PER_TERM + 1)
    # Calclate P(0,N) and Q(0,N)
    P, Q, T = bs(0, N)
    one_squared = mpz(10)**(2*digits)
    sqrtC = isqrt(10005*one_squared)
    return (Q*426880*sqrtC) // T

# The last 5 digits or pi for various numbers of digits
check_digits = {
        100 : 70679,
       1000 :  1989,
      10000 : 75678,
     100000 : 24646,
    1000000 : 58151,
   10000000 : 55897,
}

if __name__ == "__main__":
    digits = 100
    pi = pi_chudnovsky_bs(digits)
    print(pi)
    #raise SystemExit
    for log10_digits in range(1,9):
        digits = 10**log10_digits
        start =time()
        pi = pi_chudnovsky_bs(digits)
        print("chudnovsky_gmpy_mpz_bs: digits",digits,
              "time",time()-start)
        if digits in check_digits:
            last_five_digits = pi % 100000
            if check_digits[digits] == last_five_digits:
                print("Last 5 digits %05d OK" % last_five_digits)
            else:
                print("Last 5 digits %05d wrong should be %05d"
                      % (last_five_digits, check_digits[digits]))
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ą?
21,818,001 unikalne wizyty