wir alle lieben pi



  • 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??? 😕



  • Andrey schrieb:

    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??? 😕

    PI hat unendlich viele Stellen, wie soll man die Zahl jemals ausrechnen?!? 😮 😉



  • hier geht es darum nicht, ein paar stellen hin oder her... wenn du PI als einen grenzwert einer iteration angibst, reicht es schon.
    aber das, was jucks vorgeschlagen hat, ist meiner meinung nach nicht berechenbar, egal wie schnell der rechner ist...



  • Andrey schrieb:

    mir ist keine andere möglichkeit bekannt, cosinus auszurechnen, ausser mit einer taylorreihe.

    Nicht mal Taschenrechner machen das per Taylorreihe, sondern mit irgendwelchen anderen Algorithmen (google zB nach CORDIC). Schon die trigonometrische Definition am Einheitskreis liefert eine geometrische Berechnungsvorschrift, die ohne die Kentnisse von Reihenentwicklungen auskommt ...

    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???

    Schau dir die Reihe halt an, dann wirst Du feststellen, daß die Gleider erwartungsgemäß eine Nullfolge bilden und, haha, auch die Summe aller Gleider größer N konvergieren. Du mußt also die Taylorreihe nur bis zum N-1-ten Gleid ausrechnen und bist dann nur ein selbstgewähltes epsilon (das von N abhängt) vom korrekten Ergebnis weg. Zugegebenermaßen dürfte das numerisch nicht besonders clever sein, aber deine grundsätzliche Abneigung verstehe ich nicht.



  • Fall es jemand interessiert, die Folge die gegen e strebt ist:

    1 + 1/2! + 1/3! + 1/4! + ...



  • aber deine grundsätzliche Abneigung verstehe ich nicht

    ach quatsch, was für "abneigung" 😉 , ich verstehe im moment einfach nicht ganz, was der jucks will, was solls, ich bin ja kein mathespezialist hier... 🤡

    Nicht mal Taschenrechner machen das per Taylorreihe, sondern mit irgendwelchen anderen Algorithmen (google zB nach CORDIC).

    naja, wenn man sich die initialisierung (bei wikipedia) anschaut, sieht man, dass da alles voller vorberechneter sin cos & tan werte ist, die nur geschickt miteinander kombiniert werden. auf ergebnisse der taylorreihe kann man da immer noch nicht verzichten, nur, man berechnet die eben nicht zur laufzeit, sondern brennt eine tabelle mit werten in die hardware rein 👍
    (aber trotzdem danke für's stichwort, war durchaus interessant sich sowas mal durchzulesen 🙂 hab ja vorher nicht gewusst, wie ein taschenrechner funktioniert :p )

    Du mußt also die Taylorreihe nur bis zum N-1-ten Gleid ausrechnen und bist dann nur ein selbstgewähltes epsilon (das von N abhängt) vom korrekten Ergebnis weg.

    so, das verstehe ich nicht ganz (wegen einer wissenslücke: was war nochmal eine Nullfolge? 🙄 ) wäre cool wenn du evtl. eine rechnung posten würdest, wie man aus der taylorreihe auf PI kommen kann 🤡 👍



  • phyll schrieb:

    Fall es jemand interessiert, die Folge die gegen e strebt ist:

    1 + 1/2! + 1/3! + 1/4! + ...

    ja, das ist die taylorreihenentwicklung für x=1, damit kann man allgemein werte von e^x berechnen. e^1 ist halt einfach e...



  • Andrey schrieb:

    Nicht mal Taschenrechner machen das per Taylorreihe, sondern mit irgendwelchen anderen Algorithmen (google zB nach CORDIC).

    naja, wenn man sich die initialisierung (bei wikipedia) anschaut, sieht man, dass da alles voller vorberechneter sin cos & tan werte ist, die nur geschickt miteinander kombiniert werden. auf ergebnisse der taylorreihe kann man da immer noch nicht verzichten, nur, man berechnet die eben nicht zur laufzeit, sondern brennt eine tabelle mit werten in die hardware rein 👍
    (aber trotzdem danke für's stichwort, war durchaus interessant sich sowas mal durchzulesen 🙂 hab ja vorher nicht gewusst, wie ein taschenrechner funktioniert :p )

    Wo auch immer die Werte herkommen ... wie gesagt, da gibt es viele Möglichkeiten. Male einen Einheitskreis auf Karopapier, zeichne eine Gerade unter dem Winkel phi durch den Ursprung, trage nach Definition (also die Projektion auf die x-Achse) den Cosinus an und zähle die Kästchen. Jetzt verfeinere systematisch dein Karopapier, dann kannste den Cosinus durch Kästchenabzählen ermitteln. Zugegebenermaßen, dafür braucht man Wissen über Winkel.

    Du mußt also die Taylorreihe nur bis zum N-1-ten Gleid ausrechnen und bist dann nur ein selbstgewähltes epsilon (das von N abhängt) vom korrekten Ergebnis weg.

    so, das verstehe ich nicht ganz (wegen einer wissenslücke: was war nochmal eine Nullfolge? 🙄 ) wäre cool wenn du evtl. eine rechnung posten würdest, wie man aus der taylorreihe auf PI kommen kann 🤡 👍

    Du willst es doch nur näherungsweise, oder?

    Dann brichst Du die Reihenentwicklung des Cosinus an irgendeiner Stelle einfach ab[1]; dann hast Du im wesentlichen eine Polynomfunktion, deren kleinste Nullstelle >0 sollte sich mit einem üblichen numerischen Verfahren zur Nullstellensuche finden lassen und schon hast Du einen Näherungswert für pi/2 gefunden.

    [1]: Das ist natürlich der Knackpunkt, wieso man abbrechen darf und wann man abbrechen sollte, um vernünftige Ergebnisse zu bekommen. Als erstes zeigt man dazu, daß die Reihenentwicklung für cos(x) für alle x konvergiert und, daß sie tatsächlich gegen cos(x) konvergiert (... hier alles eher Quark, da man den Cosinus oft über die Reihenentwicklung *definiert*), dann schätzt man für die Taylorreihe das Restglied, also den Fehler zwischen Originalfunktion und der abgebrochener Reihe, ab und hat eigentlich alle Informationen, die man braucht.



  • also, wie ich das jetzt verstanden habe, schlägst du vor, die taylorreihe einfach irgendwo abzuhacken (okay, für kleine x muss man wirklich nicht bis hunderterpotenzen rechnen, um was vernünftiges rauszubekommen) und dann wiederum mit iterativen näherungsverfahren (newtonverfahren oder sowas in der art) die nullstelle von dieser funktion zu bestimmen.
    In der tat, dies wäre wahrscheinlich schneller, als mit meinem geometrischen ansatz mit zwei wurzeln pro iteration. 👍
    okay, hast gewonnen^^ 😃


Anmelden zum Antworten