[c]Wyznaczyc pi metoda geometryczna

jatromb
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 7 wrz 2008, o 14:12
Płeć: Mężczyzna
Lokalizacja: Dąbrowa Górnicza
Podziękował: 1 raz

[c]Wyznaczyc pi metoda geometryczna

Post autor: jatromb »

Czy ktos moglby mi podpowiedziec jak zabrac sie za taki program, nie mam zielonego pojecia o co chodzi?
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: Althorion »

Całkowanie Monte Carlo.
jatromb
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 7 wrz 2008, o 14:12
Płeć: Mężczyzna
Lokalizacja: Dąbrowa Górnicza
Podziękował: 1 raz

[c]Wyznaczyc pi metoda geometryczna

Post autor: jatromb »

a cos wiecej?
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: Althorion »

Kod: Zaznacz cały

http://tnij.org/f1kx


I zauważenie, że \(\displaystyle{ \pi}\) jest związane ze stosunkiem pola powierzchni koła do kwadratu jego promienia.

Czyli - "strzelamy" do koła o założonym środku i promieniu, sprawdzamy przy użyciu nierówności koła czy "trafiliśmy" i liczymy stosunek "trafień" do wszystkich "strzałów". I zastanawiamy się, co z nim zrobić.
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: steal »

Wydaje mi się, że chodzi o przybliżanie okręgu n-kątem foremnym. Jak wiemy, długość okręgu wynosi \(\displaystyle{ L = 2\pi R}\), więc wartość pi \(\displaystyle{ \pi = \frac{L}{D}}\). Teraz jeżeli w ten okrąg wpiszemy n-kąt foremny to długość jego boku wyniesie \(\displaystyle{ x=D\sin\frac{180^o}{n}}\) czyli obwód tego n-kąta \(\displaystyle{ L=x\cdot n=Dn\sin\frac{180^o}{n}}\). Podstawiając to do wzoru na pi mamy:
\(\displaystyle{ \pi=\frac{L}{D}=n\sin\frac{180^o}{n}}\).
jatromb
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 7 wrz 2008, o 14:12
Płeć: Mężczyzna
Lokalizacja: Dąbrowa Górnicza
Podziękował: 1 raz

[c]Wyznaczyc pi metoda geometryczna

Post autor: jatromb »

dobra, a jak to teraz przelozyc na jezyk c?mam cos takiego ale wynik jest zly :

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>

int n,i,pi,z;
float x,y;

int main()
{
    printf("Podaj liczbe punktow");
    scanf("%d", &n);
    for(i=0;i<n;i++)
    {
                    printf("Podaj x:");
                    scanf("%lf", &x);
                    printf("Podaj y:");
                    scanf("%lf", &y);
                    if(x*x+y*y<=1)
                    {
                                  z=z+1;
                                  }
                    
                    }
                    pi=4*(z/n);
                    printf("Pi wynosi:%f", pi);
                    getch();
                    }
Ostatnio zmieniony 3 mar 2010, o 15:47 przez Althorion, łącznie zmieniany 1 raz.
Powód: Wyróżniaj kod programu ze swojego posta.
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: steal »

Przez "strzelanie" mamy na myśli generowanie tych współrzędnych w sposób losowy.
jatromb
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 7 wrz 2008, o 14:12
Płeć: Mężczyzna
Lokalizacja: Dąbrowa Górnicza
Podziękował: 1 raz

[c]Wyznaczyc pi metoda geometryczna

Post autor: jatromb »

no ale co zmienia wpisywanie ich losowo? w przypadku wpisywania to nie zadziala?
ordyh
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 6 paź 2009, o 18:04
Płeć: Mężczyzna
Pomógł: 66 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: ordyh »

Tak to możesz cały czas wpisywać punkty będące poza kołem, a poza tym to nie będzie do końca zdarzenie losowe, czy trafisz w kółko czy nie. Ja troche przerobiłem kod metody monte-carlo z wikipedii tak, że dzieli się kwadrat na mniejsze kwadraciki i pole koła to stosunek liczby rogów kwadracików w kole do liczby wszystkich rogów kwadracików.
Najlepiej wpisać 100 000, u mnie wykonuje się 40 sekund, wylicza pi=3.14153.
Ukryta treść:    
Awatar użytkownika
steal
Użytkownik
Użytkownik
Posty: 1043
Rejestracja: 7 lut 2007, o 18:35
Płeć: Mężczyzna
Lokalizacja: Białystok|Warszawa
Podziękował: 6 razy
Pomógł: 160 razy

[c]Wyznaczyc pi metoda geometryczna

Post autor: steal »

Czy przeczytałeś cokolwiek na temat tej metody? Jej działanie opiera się na procesie losowym. Wpisywanie wymyślonych przez Ciebie liczb nie będzie spełniało tego warunku (co zresztą sam zauważyłeś, bo wynik nie jest poprawny), ponieważ człowiek zawsze będzie się sugerował jakimiś przesłankami przy wymyślaniu liczby. Oprócz tego, potrzebujesz dużą ilość tych punktów - jesteś w stanie wprowadzić ręcznie do programu np. 100000 współrzędnych?
ODPOWIEDZ