Igła Buffona:

Opis zadania

Przygotować w programie Mathematica notebook pozwalający wyznaczyć przybliżoną wartość liczby π z zadania Buffona o igle.

Dany jest arkusz papieru poliniowany liniami prostymi równoległymi o równych odstępach wynoszących d. Krótką igłę o długości l ≤ d upuszczamy losowo na arkusz papieru. Można pokazać, że prawdopodobieństwo upadku igły na jedną z linii wynosi p=(2/π)(l/d). Stąd widać, że wykonując eksperyment N razy i uzyskując P krotne przecięcie jednej z linii możemy wyznaczyć przybliżoną wartość π. Zatem przybliżona wartość π ≈((2l)/d)(N/P). Zdarzenia polegające na upadku igły wzdłuż liniii, bądź przypadek, że koniec igły będzie dotykał linii jest równe zeru i w rozważaniach je pomijamy.

Notebook powinien się składać z kilku podsekcji. W notebooku powinny znaleźć się następujące rzeczy:
	1) użytkownik notebooka zadaje liczbę rzutów igły n (np. (10^5)razy; eksperymenty przeprowadzać dla małych wartości n ze względu na oszczędność czasu),
	2) rysunek pokazujący upadki igły (użyć różnych kolorów dla igły przecinającej linię i poza liniami),
	3) rysunek ilustrujący wyznaczanie przypliżonej wartości liczby π,
	4) stosować kolory w notebooku w nagłówkach sekcji, prezentacji grafiki, itp.,
	5) komentarze objaśniające.

Literatura pomocnicza:
	1) Martin Aigner, Günter M. Ziegler, Dowody z Księgi Wydawnictwo Naukowe PWN, Warszawa 2002) Rozdział 20
	2) Internet: np. http://www.angelfire.com/wa/hurben/buff.html, http://mathworld.wolfram.com/BuffonsNeedleProblem.html

Rozwiązanie:

LiczbaRzutow=10000000;

DlugoscIgly=3;

OdlegloscMiedzyLiniami=4;

WszystkieRzuty=Table[RandomReal[] OdlegloscMiedzyLiniami+DlugoscIgly Cos[RandomReal[] 2 π],{j,0,LiczbaRzutow}];

UdaneRzuty=Select[WszystkieRzuty,(#>0 && #<OdlegloscMiedzyLiniami)&];

EksperymentalnePI=((2 DlugoscIgly)/OdlegloscMiedzyLiniami) (LiczbaRzutow/(LiczbaRzutow-Length[UdaneRzuty]))//N