wir alle lieben pi



  • hi
    ich habe mich gefragt ob man den kreisumfang ohne pi ausrechnen kann, wenn nur der radius gegeben ist.

    mfg luke



  • nein, das geht nicht.



  • doch...

    das geht mit einer iteration. (ohne skizze bissl schwierig aber ich versuchs)
    😉
    Und zwar: einfachheitshalber sagen wir, dass unser radius genau einer längeneinheit entspricht (lässt sich später mit einer simplen multiplikation in jedes anderes maßsystem bringen)
    also:
    r=1r=1
    ziel ist es, den kreisumfang mit dem umfang eines regelmäßigen (4*2^n)-ecks anzunähern. (also: 4-eck 8-eck 16-eck ... 4096-eck) usw.
    Wenn der vieleck richtig viele ecken hat, sieht er fast wie der kreis selbst aus.

    so.
    jetzt teilst du dein x-eck in genau x gleichschenklige dreiecke
    (wie eine torte)
    jetzt stellst du dir ein gleichschenkliges dreieck mit schenkeln = r=1 und basis b vor.

    Preisfrage: wie verändert sich die länge der basis b, wenn du ein gleichschenkliges dreieck durch zwei gleichschenklige dreiecke mit derselben schenkellänge ersetzst (dein x-eck wird dadurch zu einem 2x-eck) ?

    da nimmst du am besten buntstifte und nen zettel, und malst dir eine skizze, und kriegst durch ein paar simple anwendungen des satzes von pythagoras folgendes:

    b=2210.25b2b'= \sqrt{2-2\sqrt{1-0.25 b^2}}
    also, in deinem x-eck wird jedes dreieck mit der basis b durch zwei dreiecke mit der basis b' ersetzt, und so kriegst du dein 2x-eck.

    Wenn man das spielchen mit einem quadrat beginnt:
    b0=12+12=2b_0 =\sqrt{1^2+1^2}=\sqrt{2}
    kann man iterativ die bsislängen für zB ein 4096-eck bestimmen. Der umfang U ist dann ganz simpel:
    U=nb=4096b4096U=nb=4096*b_4096

    hier ein paar werte für n und b als bestätigung:

    n            b
    
    4           1.41421
    8           0.76536
    16          0.39018
    32          0.19603
    ...
    4096        0.001533981
    

    und somit ist U=6.283186565=2*3.141593283
    ...was eine ziemlich gute näherung für PI ist.

    Also, wenn man einen fetten kloster mit paar hundert mönchen zur verfügung hat, kann man das eigentlich ganz gut mit stift und papier berechnen, ohne computer oder irgendsowas... 🤡



  • *also, irgendwie hatte vista ja schon recht: letztendlich rechnet man sich PI aus, um auf den kreisumfang zu kommen. Aber das hier ist jetzt eine demonstration, dass man pi an sich ganz gut mit sand und holzstäbchen berechnen kann, wenn man genug zeit hat^^ 😃

    edit: obwohl, ne, wenn man auf die genauen formulierungen achtet: möglich ist es, aber als "abfallprodukt" bekommt man bei der rechnung zusätzlich PI hinterhergeschmissen, und die zahl prägt man sich ganz ganz gut ein, wenn man nicht dumm ist, und das ganze zweimal berechnen will 🤡



  • danke ! 😮
    ich verstehe es zwar aber wie ich jetzt bei z.B.: 4096 -eck das b berechne habe ich nicht ganz verstanden



  • Du setzt die Seitenlänge des 2048-Ecks in die Formel dort oben (b'=...) ein und rechnest es aus 😉



  • @CStoll: ob iterativ oder rekursiv: macht keinen unterschied hier, es gibt eh nirgendwo verzweigungen 😉

    @luki90: diese formel "b'=..." beschreibt dir, wie du von der kantenlänge eines x-ecks auf die kantenlänge eines 2x-ecks kommst. Fängst du mit einem viereck an, kannst du die eckenanzahl immer wieder verdoppeln, und dabei die entsprechende kantenlänge immer wieder berechnen. Wenn du meinst, dass dein vieleck den kreis gut genug annähert, nimmst du die kantenlänge, und multiplizierst die mit der anzahl der ecken, und kriegst eine näherung für den umfang.

    Um bis zum 4096-eck zu kommen, musst du die kantenlängen von allen 4-,8,16,32,64,128 ... 1012,2048-ecken nacheinander berechnen. Iteration halt...

    @CStoll:
    mal eine frage nebenbei: wenn ich jetzt PI auf 100 stellen genau berechnen wollte, nur mit C++ an sich und einem gewöhnlichen rechner mit float=4byte, ohne irgendwelche zusatzbibliotheken für supergenaue zahlen, wäre das möglich? ich meine nähmlich irgendwo gesehen zu haben, dass man in c++ einfach so "quad" analog zu "double" definieren kann, mit vierfacher genauigkeit. (wie) geht das? 😕

    thx im voraus



  • danke
    mir war das mit dem start nicht klar

    ps:ich habe ein c programm geschrieben das(wenn auch sehr langsam) sehr viele stellen von pi ausrechnet
    1/12+1/22+1/33...=pi2/61/1^2+1/2^2+1/3^3 ... =pi^2/6



  • was? diese folge konvergiert gegen pi? geil!

    jetzt aber: zieht euch das mal rein=PI berechnet vom Chaos höchstpersönlich:

    #include <iostream>
    
    unsigned int f(double c_re, double c_im){
    	double re=0.0, im=0.0, new_re;
    	for(unsigned int i=0; i<0xFFFFFFFF; i++){
    		new_re=re*re-im*im+c_re;
    		im=2.0*re*im+c_im;
    		re=new_re;
    		if((re*re+im*im)>=4.0){return i;}
    	}
    	return 0xFFFFFFFF;
    }
    
    int main(){
    
    for(double a=0.1; a>0.00000001; a*=0.1){
    		std::cout<<f(-0.75,a)<<std::endl;
    }
    
    return 0;
    }
    

    wenn mir irgendeiner erklären kann, warum bei diesen chaotisch divergierenen folgen von komplexen zahlen immer wieder auf irgendeine wundersame weiße ein PI rauskommt: hut ab!

    (wers genauer wissen will: das hier ist der "hals von dem mandelbrot-apfelmännchen" )

    mich macht es jedenfalls voll fertig... 😮



  • das mit der folge... bist du dir sicher, dass da "pi" rauskommt? sieht irgendwie eher nach "e" aus...



  • puh
    ich kann dem code folgen aber ohne kommentare hab ich auch keine ahnung

    ich habe was anderes:
    als ich das mit dem innenkreis gelesen habe ist mir was eingefallen
    d`= 2r*sin([e]alpha[/e]/2)
    wenn man jetzt mit 360/[e]alpha[/e] multipliziert
    erhält man pi
    wenn α=3.6 ist erhält man mit geringen rechenaufwand 3 richtige stellen hinter dem komma. bei 0.36 sind es schon 4
    dann kann man das selbe mit dem außenkreis machen:

    d`0 2r*tan([e]alpha[/e]/2)

    Ui<π<Ua

    ps: bei der folge kommt pi heraus !!!!!!



  • das mit den leerzeilen muss ein fehler vom forum sein



  • ich seh da nur einen schwarzen rechteck :p
    dsa mit tan() sin() und den ganzen trigonometrischen funktionen: ja, in der tat, so kann mans noch schneller rauskriegen, aber ich kann zB keine sin() oder cos() mit sand und holzstäbchen berechnen, deswgen hab ichs erstma weggelassen 😉


  • Mod

    luki90 schrieb:

    das mit den leerzeilen muss ein fehler vom forum sein

    Der Fehler liegt beim Forum, aber auch bei dir. Das alpha-Zeichen bekommt man in LaTeX durch \alpha, nicht durch [e]alpha[/e]. sin/cos/tan werden in LaTeX korrekt mit \sin, \cos bzw. \tan dargestellt und \cdot sieht schöner aus als *. 🙂



  • oh danke



  • Andrey schrieb:

    @CStoll: ob iterativ oder rekursiv: macht keinen unterschied hier, es gibt eh nirgendwo verzweigungen 😉

    Wo habe ich etwas darüber gesagt, WIE er es berechnen sollte?

    @CStoll:
    mal eine frage nebenbei: wenn ich jetzt PI auf 100 stellen genau berechnen wollte, nur mit C++ an sich und einem gewöhnlichen rechner mit float=4byte, ohne irgendwelche zusatzbibliotheken für supergenaue zahlen, wäre das möglich? ich meine nähmlich irgendwo gesehen zu haben, dass man in c++ einfach so "quad" analog zu "double" definieren kann, mit vierfacher genauigkeit. (wie) geht das? 😕

    Selbst wenn 'long double' mit vierfacher Genauigkeit rechnen würde (meist ist's nur ein Synonym für 'double'), wird es für so lange Zahlen nicht mehr ausreichen (double hat afair 16 signifikante Stellen, mit vierfacher Genauigkeit kämst du auf ca. 30).



  • CStoll schrieb:

    Wo habe ich etwas darüber gesagt, WIE er es berechnen sollte?

    naja, wenn man das dialog weiterhin so führen würde, wäre es eine rekursion 😉 :

    luki90 (L) schrieb:

    danke !
    ich verstehe es zwar aber wie ich jetzt bei z.B.: 4096 -eck das b berechne habe ich nicht ganz verstanden

    CStoll (C) schrieb:

    Du setzt die Seitenlänge des 2048-Ecks in die Formel dort oben (b'=...) ein und rechnest es aus

    Fiktive fortsetzung schrieb:

    L: und woher bekomme ich b von einem 2048-eck?
    C: wende die formel auf b für 1024-eck an
    L: und woher bekomme ich b von einem 1024-eck?
    C: wende die formel auf b für 512-eck an
    L: und woher bekomme ich b von einem 512-eck?
    C: wende die formel auf b für 256-eck an
    ...
    L: und woher bekomme ich b von einem 8-eck?
    C: wende die formel auf b für 4-eck an
    L: und woher bekomme ich b von einem 4-eck?
    C: da hilft satz des pythagoras weiter

    das wäre doch ein perfekter beispiel für eine rekursion... 🤡

    zurück zu meiner frage:

    Selbst wenn 'long double' mit vierfacher Genauigkeit rechnen würde (meist ist's nur ein Synonym für 'double'), wird es für so lange Zahlen nicht mehr ausreichen (double hat afair 16 signifikante Stellen, mit vierfacher Genauigkeit kämst du auf ca. 30).

    okay, also ohne einen supercomputer kann ich das direkt (genauso wie mit eingebauten datentypen) nicht berechnen. Da muss man dem pc schon in der software beibringen, wie man sowas macht... 🤡
    thx! 😃



  • dsa mit tan() sin() und den ganzen trigonometrischen funktionen: ja, in der tat, so kann mans noch schneller rauskriegen, aber ich kann zB keine sin() oder cos() mit sand und holzstäbchen berechnen, deswgen hab ichs erstma weggelassen

    ich vollidiot, man kann doch im kopf die taylor-reihe für die sinusfunktion aufstellen, dann kann man das eigentlich wunderbar auch mit sand und stückchen holz berechnen...
    sowas sollten die menschen öfters mal machen. als gehirnjogging. 😃

    edit:
    obwohl, ne, stopp mal. auch wenn man die schnell konvergierende taylorreihe hat, braucht man ja einen wert, mit dem man rechnet. und an dieser stelle bleibt einem nichts übrig, als den winkel "ein tausendstel PI" zu nehmen, um nach viel rechnerei schliesslich
    π=0.923π\pi=0.923\pi
    zu bekommen^^ 😃
    man kann PI also nicht mithilfe von sinus berechnen, und ich bin dann doch kein vollidiot^^ 🤡



  • Andrey schrieb:

    man kann PI also nicht mithilfe von sinus berechnen, und ich bin dann doch kein vollidiot^^ 🤡

    klar kann man das. pi ist das doppelte der kleinsten positiven nullstelle vom cosinus. und für die taylorreihe brauchst du kein pi.



  • und für die taylorreihe brauchst du kein pi.

    doch, wenn man damit die kantenlänge b eines n-ecks berechnen will:
    b=2r \mul sin(\frac{\pi}{2n})
    und das führt ja letztendlich zu nichts.

    klar kann man das. pi ist das doppelte der kleinsten positiven nullstelle vom cosinus.

    mir ist keine andere möglichkeit bekannt, cosinus auszurechnen, ausser mit einer taylorreihe. Die taylorreihe hat einentlich unendlich viele summanten, und dann noch mit unendlich großen potenzen. wie soll man bei so einer funktion eine nullstelle finden??? 😕


Log in to reply