Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie errechne ich die Zahl pi? (https://www.delphipraxis.net/9951-wie-errechne-ich-die-zahl-pi.html)

GridGirl 8. Okt 2003 14:30


Wie errechne ich die Zahl pi?
 
Hi! :gruebel:
Jetzt haltet mich bitte net für total doof, aber ich hab echt keine Ahnung von dem ganzen!
Könnte mir jemand vielleicht erklären, wie ich die Zahl Pi mit nem Programm ausrechnen kann? Es sollen nur 3 Stellen hinterm Komma aus gegeben werden. Und unser Lehrer hat uns Folgende Hilfestellung gegeben: Wenn wir nen Kreis in einem Quatrat haben und dann Tröpfchen drauf regnen lassen und dann irgendwie das Verhältis ausrechnen.
Es wär voll lieb, wenn mir jemand helfen könnte!
Grid

Die Muhkuh 8. Okt 2003 14:55

Re: Wie errechne ich die Zahl pi?
 
:hi: Willkommen in Delphi-Praxis!

Ne doof bist du net!

zum die Zahl PI erechnen mach dir ein Label auf die Form und folgenden code
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.caption := floattostr (Pi);
end;
Um zu runden lass im forum einfach mal suchen z.b Zahlen runden oder nur runden!


Spider

Chewie 8. Okt 2003 14:55

Re: Wie errechne ich die Zahl pi?
 
Das ganze nennt sich Monte-Carlo-Methode. Im [df]Monte-Carlo[/df] hab ich das mal erwähnt.

Christian Seehase 8. Okt 2003 15:00

Re: Wie errechne ich die Zahl pi?
 
Moin Grid,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Die Hilfestellung, die euch der Leherer gegeben hat beschreibt John von Neumanns "Monte Carlo Methode".
Sie dient zur Berechnung von Flächeninhalten unregelmässig geformter Flächen.
Das Prinzip basiert darauf, dass das Verhältnis der Punkte die gesamt verteilt wurden, zu denen die sich in der gesuchten Fläche befinden, genauso verhält, wie Gesamtfläche zum Flächeninhalt der gesuchten Fläche, wobei man natürlich die zu berechnende Fläche, mit einer leicht zu berechnenden Figur, eben einem Quadrat oder Rechteck umgibt. Diese sollte dann auch so knapp wie möglich die unbekannte Fläche umschliessen. Je mehr Punkte man verteilt umso genauer wird das Ergebnis.
Die Punkte werden hierbei zufällig verteilt (deshalb "Monte Carlo Methode", mit das bekannteste Spielcasino).

Code:
      Gesamte Anzahl Punkte           Flächeninhalt der umschliessenden Fläche
------------------------------------ = ----------------------------------------
Punkte in der unregelmässigen Fläche         gesuchter Flächeninhalt
=>

Code:
                          (Flächeninhalt der umschliessenden Fläche) * (Punkte in der unregelmässigen Fläche)
gesuchter Flächeninhalt = -----------------------------------------------------------------------------------
                                                       (Gesamte Anzahl Punkte)

Was Dir jetzt noch fehlt:
Die Punkte verteilen, und dabei zählen wieviele im Kreis liegen.
Eintragen der Flächenberechnungen für Kreis und Quadrat, und dieses nach pi umformen.

Ich hoffe, das hilft erst einmal weiter.

Honie 8. Okt 2003 15:13

Re: Wie errechne ich die Zahl pi?
 
Theorie

1. Stell Dir den Einheitskreis mit r=1 vor
Hierfür hast Du einen Flächeninhalt von pi*r² wobei r²=1²=1 also gleich pi ist.

2. Stell Dir jetzt das kleinste Quadrat vor, in das der Kreis vollständig hereinpaßt.
Dieses Quadrat hat eine Kantenlänge von 2*r und somit einen
Flächeninhalt von (2*r)² = (2*1)² = 2² = 4 ist.

3. Wenn Du jetzt per Zufall Punkte innerhalb des Quadrates auswählst (es regnet) und zählst wieviele
Punkte auch innerhalb des Kreises liegen kannst Du folgende Gleichung aufstellen:

Pi/4 = (Anzahl der Punkte im Kreis)/(Gesamtzahl der Punkte)

dies nach Pi aufgelöst ergibt die Lösung:

Pi := 4*Anzahl der Punkte im Kreis / Gesamtzahl der Punkte.

4. Anmerkung: Je mehr Punkte ausgewählt werden (stärker es regnet), desto genauer wird das Ergebnis!

Praktische Umsetzung folgt gleich.

Honie 8. Okt 2003 15:21

Re: Wie errechne ich die Zahl pi?
 
Delphi-Quellcode:

  function pi: real;

  const
    anzproben = 1000;

  var
    x,y: real;
    i,treffer: integer;
   

  begin
    treffer := 0;
    for i:= 1 to anzproben do begin
      x := random;   // ermitteln des Zufallspunktes
      y := random;
      if (x*x)+(y*y) < 1 then
        inc(treffer);
    end;
    result := 4*treffer/anzproben
  end;
Durch Veränderung von Anzproben kann die Genauigkeit geändert werden.

Code ist nicht geprüft, sollte aber funktionieren.

Anm: die if Bedingung ist der Pythagoras-Satz.

Dagon 8. Okt 2003 15:33

Re: Wie errechne ich die Zahl pi?
 
@Honie: Deine Variante funktioniert zwar, aber sie ist sehr ungenau und erfordert bei grossem anzproben sehr viel Rechenzeit.

Hier ist eine extrem schnelle Variante nach Borwein:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a, b, aalt: Extended;
    p: array[0..5] of Extended;
    i:integer;
begin
  a:=sqrt(2);
  b:=0;
  p[0]:=2+a;
  i:=0;
  repeat
    aalt:=a;
    a := 1/2*(sqrt(aalt) + 1/sqrt(aalt));
    b := sqrt(aalt)*(b+1)/(b+aalt);
    p[i+1] := p[i]*b*(1+a)/(1+b);
    inc(i);
  until i>5;
end;
Sie ist jedoch nicht selbstkorrigierend, was aber keines Falls nötig ist, für nur 3 Stellen.

(Der Code stammt von http://joachim.mohr.rottenburg.bei.t-online.de)

Honie 8. Okt 2003 15:40

Re: Wie errechne ich die Zahl pi?
 
@the_master: Da hast Du natürlich recht, aber ich bin von der Vorgabe Ihres Lehrers
ausgegangen, der ja den Lösungsweg anschaulich vorbereitet hat.

BTW: Hast Du den Lösungsweg in Deinem Code verstanden und kannst erklären warum
das Ergebnis Pi ist? :wink:

GridGirl 8. Okt 2003 17:07

Re: Wie errechne ich die Zahl pi?
 

Vielen Dank an Alle!
Ihr seid klasse!
Ich denk, ich hab des jetzt so einigermaßen verstanden!
DANKE!!
Liebe Grüße
Grid

tommie-lie 8. Okt 2003 18:47

Re: Wie errechne ich die Zahl pi?
 
Ich will ja nix sagen, aber der erste Post:
Zitat:

Zitat von Spider
zum die Zahl PI erechnen mach dir ein Label auf die Form und folgenden code
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.caption := floattostr (Pi);
end;

und der Zweite:
Zitat:

Zitat von Chewie
Das ganze nennt sich Monte-Carlo-Methode. Im [df]MONTE-CARLO[/df] hab ich das mal erwähnt.

geben mir irgendwie zu denken :tongue:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz