![]() |
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 |
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:
Um zu runden lass im forum einfach mal suchen z.b Zahlen runden oder nur runden!
procedure TForm1.FormCreate(Sender: TObject);
begin Label1.caption := floattostr (Pi); end; Spider |
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.
|
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. |
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. |
Re: Wie errechne ich die Zahl pi?
Delphi-Quellcode:
Durch Veränderung von Anzproben kann die Genauigkeit geändert werden.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; Code ist nicht geprüft, sollte aber funktionieren. Anm: die if Bedingung ist der Pythagoras-Satz. |
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:
Sie ist jedoch nicht selbstkorrigierend, was aber keines Falls nötig ist, für nur 3 Stellen.
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; (Der Code stammt von ![]() |
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: |
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 |
Re: Wie errechne ich die Zahl pi?
Ich will ja nix sagen, aber der erste Post:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz