Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   PI berechnen mit Ramanujan 2. Methode (https://www.delphipraxis.net/122949-pi-berechnen-mit-ramanujan-2-methode.html)

jokerfacehro 24. Okt 2008 18:26


PI berechnen mit Ramanujan 2. Methode
 
hallo,

hab hier einen schönen ansatz zur berechnung von PI gefunden
http://www.uni-leipzig.de/~sma/pi_ei...ung/index.html

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var an,an1,yn,yn1,pi:extended;
    i:integer;
begin

an:=sqrt(2)-1;
yn:=sqrt(an);

for i:=0 to 2 do begin

yn1:= (1 - Power( 1 - Power( yn , 4 ) , 0.25 ) ) / ( 1 + Power( 1 - Power( yn , 4 ), 0.25 ));

an1:= an * Power( 1 + yn1 , 4 ) - Sqrt( 2 ) * ( 1 + yn1 + sqr( yn1 ) ) * Power( 4 , i + 1 ) * yn1;

yn:=yn1;
an:=an1;
pi:=1/an;
Memo1.Lines.Add(FloatToStr(pi));
end;

Showmessage(FloatToStr(pi));
end;
mit 2 algorithmen durchläufen hab ich bereits pi auf 15 stellen hinter dem komma genau berechnet.

sicher erkennt ihr das problem ^^
ein extended ist zu kurz um weitere stellen aufzunehmen.

wer lust hat kann ja damit rumexperimentieren oder mir paar schöne ansätze posten ;)

Gruß Jokerface

jfheins 24. Okt 2008 18:37

Re: PI berechnen mit Ramanujan 2. Methode
 
Ich behaupte einfach mal, dass für 99% aller Anwendungsfälle die 15. Stelle hinter dem Komma nur eine marginale Rolle spielt. Falls doch, gibt es Pi bis zur Millionsten Stelle im Internet ;)

Falls das ganze nur als Beschäftiguungstherapie gedacht ist: Es gibt diverse Klassen für Delphi die längere Zahlen erlauben. Suche nach BigInt oder "große Zahlen" ;)

jokerfacehro 24. Okt 2008 18:42

Re: PI berechnen mit Ramanujan 2. Methode
 
danke ^^

man schätzt, dass man um den umfang des universums zu berechnen gerade mal 50 nachkommastellen braucht. naja wir sind ja bereits bei mehr als einer billion stellen xD

ich hab grad en bischen langeweile und wollt schon immer ma pi berechnen xD

und denn mach ich ein zahlensystem mit der basis PI auf xD

hier ein weiterer algo, der nich ganz so leistungsstark is:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var x,y,a,b,c,pi:extended;
    i:integer;
begin
x:=1;
a:=1;
b:=1/sqrt(2);
c:=0.25;

for i:=0 to 3 do begin

y:=a;

a:=( a + b ) / 2;

b:=sqrt( b * y );

c:=c - x * sqr( a - y );

x:=2*x;

pi:=sqr( a + b ) / (4 * c);

Memo1.Lines.Add(FloatToStr(pi));
end;


end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 Uhr.

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