jacek matulewski zakład mechaniki kwantowej instytut fizyki, umk 14 marca 2011
DESCRIPTION
Obliczanie. p. Jacek Matulewski Zakład Mechaniki Kwantowej Instytut Fizyki, UMK 14 marca 2011. Obliczanie. p. Jacek Matulewski Zakład Mechaniki Kwantowej Instytut Fizyki, UMK 14 marca 2011. Liczby. Liczby wyrażają ilość (liczby naturalne) - PowerPoint PPT PresentationTRANSCRIPT
Jacek Matulewski
Zakład Mechaniki KwantowejInstytut Fizyki, UMK
14 marca 2011
Obliczanie
Jacek Matulewski
Zakład Mechaniki KwantowejInstytut Fizyki, UMK
14 marca 2011
Obliczanie
Liczby
• Liczby wyrażają ilość (liczby naturalne)
• Pitagoras i pitagorejczycy – kult i symbolika liczb
Liczby
• Jeden• Monas• Bóg• Parmenidejski byt
Liczby
• Dwa
• Relacja „po”
• Czas
• Arytmetyka
Liczby
• Trzy
• Relacja „obok”
• Przestrzeń
• Geometria
Liczby
2
• Pitagorejczycy użyli liczb także do mierzenia wielkości ciągłych (długości boków figur)
• Długość przekątnejz twierdzenie Pitagorasa
• Wielka tajemnica…
211 22 d
Liczby
2
Liczby
• Liczba jest liczbą niewymierną tzn. nie można jej zapisać jako ułamka zwykłego (ilorazu dwóch liczb całkowitych)
• Liczba jest liczbą przestępną tzn. nie istnieje wielomian o współczynnikach całkowitych, którego jest pierwiastkiem
• Pitagorejczycy utrzymywali liczby niewymierne w tajemnicy!
Wartość liczby
• Wartość : 3,14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 70679 82148 08651 32823 06647 09384 46095 50582 23172 53594 08128 48111 74502 84102 70193 85211 05559 64462 29489 54930 38196 44288 10975 66593 34461 28475 64823 37867 83165 …
Przybliżenia liczby
• Wartość: 3,14159 26535 89793 23846 26433 83279…
• Przybliżenia:22/7 = 3,14285 71428 57142 85714…355/113 = 3,14159 29203 53982 30088…52163/16604 = 3,14159 23873 76535 77451…103993/33102 = 3,14159 26530 11902 60407…
3,14626 43699 41972 34232 91350…
3,14159..(30 cyfr)
32
163/)744640320ln( 3
RekordyKto: Kiedy: Prec. Wartość
Babilończycy 2000 p.n.e 1 3.125
Egipcjanie 2000 p.n.e 1 3.16045
Chińczycy 1200 p.n.e. 1 3
Biblia 550 p.n.e. 1 3 (1 Król. 7:23)
Archimedes 250 p.n.e. 3 3.141851±0.00100604
Ptolemeusz 150 3 3.14166
Tsu Ch’ung Chi 480 7 3.1415926
Fibonacci 1220 3 3.141818
Al-Kashi 1429 14
Viete 1593 9 3.1415926536
Newton 1665 16
Sharp 1699 71
Rutheford, W. 1824 208 (152) W 1853 policzył 404
RekordyKto: Kiedy: Prec.
Ferguson 1946, 1947 620, 808
Reitwiesner i in. 1949 2 037 (ENIAC)
Felton 1957, 1958 7 480, 10 021
Shanks i Wrench 1961 100 265
Guilloud i in 1966 – 1982 250 000 – 2 000 050
Kanada i inni 1981 – 1995 2 000 036 – 6 442 450 938
bracia Chudovsky 1989 – 1994 480 000 000 – 4 044 000 000
Y. Kanada 2002 1 241 100 000 000 (600 godzin)
Metoda Archimedesa
70
103
71
103
142857,3140845,3
Metoda Monte-Carlo
• Okrąg: r = 1
• Pole koła: r
• Pole kwadratu:a2 = 4
• Stosunek pól: /4
Metoda Monte-Carlo
• Autor: Rudolf Wolf(szwajcarski astronom)
• Dokładność (N – ilość prób)
• To raczej słabo!
N/1
Metoda Monte-Carlo
• Realizacje (kłopot z liczbami losowymi)– dziecko rzuca kamyki na plaży (KM i BM)– deszcz i donica w akwarium (M. Chmielarz)– mąka na stole
Metoda Monte-Carlo
• Realizacje (kłopot z liczbami losowymi)– dziecko rzuca kamyki na plaży (KM i BM)– deszcz i donica w akwarium (M. Chmielarz)– mąka na stole
– symulacja komputerowa– http://www.fizyka.umk.pl/~jacek/dydaktyka/pi/
(C, C++, C#, Java, Pascal/Delphi, nawet ZX Basic)
Metoda Monte-Carlo
• Implementacja
ulong i=0, N=(ulong)1E8;
double x, y;
do
{
i++;
x=random.NextDouble();
y=random.NextDouble();
if(x*x+y*y<1) trafienia++;
} while (i<N);
double pi=4*(double)trafienia/N;
Metoda Monte-Carlo
Demo
Igła Buffona
• Problem sformułowany w 1773 roku przez Georga-Luisa Leclerca
• Nietrywialny przykład realizacji metody Monte-Carlo
• Typowe zadanie rach. prawdopodobieństwa(prawdopodobieństwo geometryczne)
Igła Buffona
• Rzucamy N razy igłą na dywan w pasy
• Igła o długości l jest krótsza niż odległość pasów d (l < d)
• Zliczamy ile razy igła przetnie którąś z linii
Igła Buffona
y – rzut połowy igły na kierunek poziomy
x – odległość środka igły od najbliższej linii
Igła przetnie linię gdy y > x
x
y
W rzucie igłą mamy dwa losowe parametry
o jednorodnym rozkładzie: – położenie środka igły, co się przekłada na wielkość x, przy czym– orientację mierzoną kątem ostrym między igłą i pionem,
Rzut połowy igły:
Igła przetnie linię gdy
)sin(2
ly
20 dx
20
)sin(2
lyx
Igła Buffona
Losujemy dwa parametry (x, ) – punkt w przestrzeni 2D o rozmiarach
]2,0[]2,0[ d
)sin(2
lyx
Prawdopodobieństwo przecięcia linii:
obszar pod krzywą
pole całego prostokąta
22
d
dl
2
0
)sin(2
4
d
2
l
d
l
2
Prawdopodobieństwo = częstość losowania
N
n
d
l
2
nd
lN2
• Autor: Leonhard Euler(szwajcarski matematyk)
• Dokładność 1/N(N – ilość prób)
• Znacznie lepiej niż w metodzie Wolfa
Metoda Eulera
6
1 2
12
i i
Metoda Eulera
• Sumowanie szeregu
• Suma to 2/6 Można z grubsza przyjąć, że ilość cyfr znaczących oszacowania wartości
równa jest rzędowi zsumowanych wyrazów. Zatem dla 105 wyrazów otrzymamy pięć cyfr znaczących.
Metoda Eulera
2221
22
1...
3
1
2
1
1
11
niS
n
in
nSnSS nnn /16/166
S
Metoda Eulera
• Implementacja
ulong i=0, N=(ulong)1E8;
double S=0;
do
{
i++;
S+=(1.0/(1.0*i*i));
} while (i<N);
double pi=Math.Sqrt(6*S);
• Wartości częściowych sum
Metoda Eulera
n
in i
S1
2
166
1 2,44948974278318
2 2,73861278752583
3 2,85773803324704
4 2,92261298612503
5 2,96338770103857
6 2,99137649474842
7 3,01177394784621
8 3,02729785665784
9 3,03950758956105
10 3,04936163598207
100 3,13207653180911
1 000 3,14063805620599
10 000 3,14149716394721
100 000 3,14158310432646
1 000 000 3,14159169866051
10 000 000 3,14159255809590
100 000 000 3,14159264498239
1 000 000 000 przekracza precyzjęliczb podwójnejprecyzji (double)!
Metoda Eulera
Demo
Metody obliczania
• Inne szeregi: http://mathworld.wolfram.com/PiFormulas.html
– szereg Madhava’ego, Gregory’ego, Reihe’a i Leibniza (1671):
– szereg Abrahama Sharpa (1717):
0
...7
1
5
1
3
11
12
)1(
4 i
i
i
0
2/1
12
3)1(2
i
ii
i
• Inne szeregi: http://mathworld.wolfram.com/PiFormulas.html
Metody obliczania
0
...11
1
9
1
7
1
5
1
3
11
14
)1(
34
)1(
4
2
i
ii
ii
...876
1
654
1
432
1
423222
)1(
4
3
0
i
i
iii
...9
1
4
11
1
6 12
2
n
i i
...25
1
9
11
12
1
8 12
2
n
i i
• Inne szeregi: http://mathworld.wolfram.com/PiFormulas.html
- Szereg Wallisa
- Iloczyn Wallisa (1655)
Metody obliczania
...15
2
3
22...
120
82
6
41
1
21
!12
2)!(
0
12
i
i
i
i
...9
8
7
8
7
6
5
6
5
4
3
4
3
2
1
2
14
4
2 2
2
0
i
ii
• Metody używane w XX wieku: D.H. Bailey, J.M. Borwein, P.B. Borwein, S. Plouffe The Quest for Pi (1996)
- Algorytm iteracyjny Salamina i Brenta (1976)
Ustalamy: , ,
Dla k=1,2,3,… obliczamy
Metoda iteracyjna Salamina-Brenta
10 a 210 b 210 s
211
kkk
baa
11 kkk bab
22kkk bac
kk
kk css 21 k
kk s
ap
22
pk zbiega do kwadratowo,czyli każda iteracja podwaja ilość prawidłowych cyfr.Jeden z algorytmów używanych do bicia rekordów
ilości policzonych cyfr (obliczenia komputerowe)
• Algorytm braci Borwein (1985):ciąg zbiegający do kubicznie
• Algorytm dwukwadratowy braci Borwein używany przez Yasumasa Kanadę (Tokio)
• Znaleźli wzór na ciągi dowolnego rzędu(co nie znaczy, że są szybsze od 4-go rzędu)
• Dodatkowo mnożenia w wysokiej precyzji przyspieszane są dzięki użyciu algorytmu FFT (1965)
Metody iteracyjne braci Borwein
• Yasumasa Kanada w swoim biurze
Metody iteracyjne braci Borwein
Metody iteracyjne braci Borwein
Źródło: D.H. Bailey, J.M. Borwein, P.B. Borwein, S. Plouffe The Quest for Pi (1996)
Wartość liczby
• Wartość : 3,243F6 A8885 A308D 31319 8A2E0 37073 44A40 93822 299F3 1D008 2EFA9 8EC4E 6C894 52821 E638D 1377B E5466 CF34E 90C6C C0AC2 9B7C9 7C50D D3F84 D5B5B 54709 17921 6D5D9 8979F B1BD1 310BA 698DF B5AC2 FFD72 DBD01 ADFB7 B8E1A FED6A 267E9 6BA7C 9045F 12C7F 9924A 19947 B3916 CF708 …
• Niepewna nazwa: ang. spigot algoritm (spigot = kran przy beczce, szpunt)
• Algorytm, który pozwala na liczenie kolejnych cyfr stałej matematycznej nie używając ich już po policzeniu (w przeciwieństwie do wcześniej przedstawionych algorytmów rekurencyjnych)
• Takie algorytmy istnieją dla: , e, , itp.
• Algorytmy te można zaimplementować bez liczb rzeczywistych (tylko liczby całkowite)
Algorytmy kurkowe(?)
2
• Do policzenia 5000 cyfr liczby potrzeba tylko 600 000 000 operacji na liczbach całkowitych!
• Koszt obliczenia n-tej cyfry nie zależy od n.
• Algorytm kurkowy dla liczby toalgorytm Baileya-Borweina-Plouffe’a (BBP; 1995, 1997, 2003) bazujący na wzorze:
• Pozwala na znalezienie konkretnej serii cyfr
Algorytmy kurkowe(?)
0 68
1
58
1
48
2
18
4
16
1
ii iiii
Algorytm BBP
David Bailey Peter Borwein Simon Plouffe
• Przygotowania:
Algorytm BBP
0 68
1
58
1
48
2
18
4
16
1
ii iiii
0 8
1
16
1)(
ii ji
jS
)6()5()4(2)1(4 SSSS
• Aby obliczyć n-tą cyfrę liczby lw reprezentacji dziesiętnej można użyć triku:
• Aby zaokrąglić liczbę l do n cyfr po przecinku:
Algorytm BBP
ll nn 1010 l*10^n – trunc(l*10^n)
n
n l
10
10
10000* – (int)(10000*) = 0,9265358979
(int)(10000*) / 10000 = 3,1415
trunc(l*10^n) / 10^n
l*10^n % 11 mod 10 ln
• Aby obliczyć n-tą cyfrę liczby lw reprezentacji heksydecymalnej należy:
• Aby zaokrąglić liczbę l do n cyfr po przecinku:
Algorytm BBP
ll nn 1616 l*16^n – trunc(l*16^n)
n
n l
16
16
65536* – (int)(65536*) = 0,6A8885A308D31319
(int)(65536*) / 65536 = 3,243F
trunc(l*16^n) / 16^n
l*16^n % 11 mod 16 ln
• Aby obliczyć n-tą cyfrę liczby lw reprezentacji heksydecymalnej należy:
• Aby zaokrąglić liczbę l do n cyfr po przecinku:
Algorytm BBP
ll nn 1010 l*10^n – trunc(l*10^n)
n
n l
10
10
10000* – (int)(10000*) = 0,6A8885A308D31319
(int)(10000*) / 10000 = 3,243F
trunc(l*10^n) / 10^n
l*10^n % 11 mod 10 ln
• Cyfry sum S( j) począwszy od n-tej
Algorytm BBP
0 8
1
16
1)(
ii ji
jS
100 8
16
8
8mod16
8
16)(16
ni
inn
i
in
i
inn
jiji
ji
jijS
część ułamkowa
Bardzo szybko zbieżny szereg(sprawdzamy tylko, czy nie zmienia się ostatnia cyfra serii)
Obliczanie potęg za pomocą algorytmu szybkiego potęgowania dla l. całkowit.(exponentiation by squaring)
Wartość od n-tej cyfry HEX
)6()5()4(2)1(4 SSSS
Algorytm BBP
Demo
Po co tak dokładnie liczyć przybliżenia ?
Motywacja
Po co tak dokładnie liczyć przybliżenia ?
Motywacja
Koniec
• Wartość : 3,14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 70679 82148 08651 32823 06647 09384 46095 50582 23172 53594 08128 48111 74502 84102 70193 85211 05559 64462 29489 54930 38196 44288 10975 66593 34461 28475 64823 37867 83165 …