Sinus
-
mit der sinus funktion bekommst du kein pi raus.
sinus benutzt selbst pi.
dann guck mal besser, ob du mit floats rechnest.
beispiel: 5/10 ist nicht 0.5 sondern 0, weil hier mit ints gerechnet wird.
-
c.rackwitz schrieb:
mit der sinus funktion bekommst du kein pi raus.
sinus benutzt selbst pi.
dann guck mal besser, ob du mit floats rechnest.
beispiel: 5/10 ist nicht 0.5 sondern 0, weil hier mit ints gerechnet wird.hmmm, dann kann man pi ja sicher noch mit anderen varianten "ausrechnen", ok, dann werde ich mal schaun, ob ich pi näherungsweise berechnen kann, ohne sinus zu verwenden...
zum code: ich hatte doch gar keine ints verwendet!?
-
sinus benutzt selbst pi.
Also ich bin sicher das wenn das schon nicht als lookuptable implemtentiert ist taylorpolynome verwendet werden... Pi sollte da keine Rolle spielen...
hmmm, dann kann man pi ja sicher noch mit anderen varianten "ausrechnen"
kannst du auch mit polynomen approximieren... google einfach mal danach...
-
Natürlich wird das als LUT realisiert sein, aber auch zu ungenau, um da pi mit weißichncihtwievielen Stellen draus gewinnen zu können
Eine unschicke aber leicht nachzuvollziehende Methode an pi zu kommen : nimm dir ein 2D Bitfeld, dadrin "zeichnest" du dir einen ausgefüllten kreis (alle Bits mit Abstand a<=R vom Mittelpunkt setzen). Den Abstand berechnest du dabei über Phytagoras. Danach zählst du die Bits aus und hast damit die Fläche. Die Fläche ist gleich pi*r^2, da r bekannt ist, kannst du pi annähern. Braucht natürlich auch kein ganzkreis zu sein, ein Ausschnitt reicht.
-
da gibts nen pi algorithmus, der mir nach polynom aussieht, iterativ.
ist python, also ist portieren angesagt.
http://docs.python.org/lib/decimal-recipes.html
-
/* A spigot algorithm for the Digits of \pi, Stanley Rabinowitz and Stan Wagon, Amer.Math.Monthly, March 1995, 195-203 */ #include <stdio.h> #define N 1000 #define LEN 10*N/3 main() { int i, j, k, q, x, nines, predigit; long a[LEN]; for(j=0;j<LEN;j++) a[j]=2; nines=0; predigit=0; for(j=0;j<N;j++) { q=0; for(i=LEN;i;i--) { x = 10*a[i-1] + q * i; a[i-1] = x % (2*i-1); q = x / (2*i-1); } a[0] = q % 10; q = q / 10; if (q==9) { nines++; } else if (q==10) { printf("%d",predigit+1); predigit=0; for(;nines;nines--) printf("%d",0); } else { printf("%d",predigit); predigit = q; for(;nines;nines--) printf("%d",9); }; }; printf( "%d\n", predigit ); }
-
Wie mies ist denn das gecoded
-
Das war ein Mathematiker, kein Programmierer.
-
Hätte auch ein Kiddy sein können welches sich für einen cewlen coda hällt, nur weil es besonders unleserlichen C-Code schreibt
-
Software ist nun mal härter als Hardware. Wenn ein Code schwer zu schreiben war, dann soll er auch schwer zu lesen sein.
-
tztztz
code soll schön und inhaltlich kompakt sein.
ordentliche formatierung gibts als plugin für jeden editor.
-
Könnte es vielleicht sein, daß Megatrolls Antwort ironisch gemeint war?