Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Berechnung von Pi Ganz einfach !!!
Pro-Gamer - Di 13.01.09 20:30
Titel: Berechnung von Pi Ganz einfach !!!
Hallo Forum,
Ich bin bei der Suche nach Hilfe bei Google bei euch gelandet ...
Ich bin Schüler eines Gymnasiums ( 9. Klasse ) und bräuchte Hilfe beim entwickeln eines Programmes.Dieses Programm soll so einfach wie nur möglich , und vorallem verständlich für mich , sein.
Dieses Programm soll Pi mit der "While Do" Funktion auf 5, es können auch mehr sein muss es aber nich , Stellen berechnen.
Nun ein Problem ! Ich habe die Formel nich mehr im Kopf ich weiss nur noch Bruchteile davon
evtl. kennt ihr die Formel !
Die Formel war irgendetwas mit: n/(n-1)(n+1)+2n/(2n-1)(2n+1) ...
ich hoffe ihr wisst welche Formel das ist.
MfG Pro-Gamer!
Edit: Das Programm kann auch mit der "For To Do" Funktion geschrieben sein!
Tilo - Di 13.01.09 20:41
N'abend Pro-Gamer,
Wikipedia liefert dazu recht ausführliche Informationen:
http://de.wikipedia.org/wiki/Kreiszahl
Viel Freude bei der Umsetzung!
(nebei: es gibt keine geschlossene Formel fü Pi, man kann bisher nur "Bruchstücke" angeben.
//Edit
Entschuldige fals das etwas kurz geraten ist. Es gibt hier so eine Art "EhrenCodex": Hilfe bei konkreten Problemen: ja, Hilfe bei Hausaufgaben: nein (in Kurzform).
Sollten sich bei der Umsatzung Probleme zeigen wird Dir hier geholfen werden können.
Pro-Gamer - Di 13.01.09 21:00
Tilo hat folgendes geschrieben : |
N'abend Pro-Gamer,
Wikipedia liefert dazu recht ausführliche Informationen:
http://de.wikipedia.org/wiki/Kreiszahl
Viel Freude bei der Umsetzung!
(nebei: es gibt keine geschlossene Formel fü Pi, man kann bisher nur "Bruchstücke" angeben.
//Edit
Entschuldige fals das etwas kurz geraten ist. Es gibt hier so eine Art "EhrenCodex": Hilfe bei konkreten Problemen: ja, Hilfe bei Hausaufgaben: nein (in Kurzform).
Sollten sich bei der Umsatzung Probleme zeigen wird Dir hier geholfen werden können. |
Nabend Tilo,
ich hätte sicher kein Problem damit dies zu tun ... wenn ich wüsste wie diese Funktionen Funktionieren...
Ich lag in den letzten 2 wochen im Krankenhaus und morgen schreib ich in Informatik einen Test wo diese Programmierung dran kommt ( höstwarscheinlich die Berechnung von Pi)
..
ich habe meine Mitschüler natürlich danach gefragt aber was diese mir erzählt hatten hätte nich mal ein Professor verstanden ! Daher habe ich nachgefragt ob ihr mir den Code mal aufschreiben könntet bzw. den anfang mir hinlegen könntet !
MfG Pro-Gamer!
Delete - Di 13.01.09 21:06
:mrgreen:
Pro-Gamer - Di 13.01.09 21:10
ok sowas hatte ich mir nich vorgestellt ^^ jetzt hab ich es komplett verpeilt ;)
was is dieses system.pi?
Christian S. - Di 13.01.09 21:12
Zum Berechnen kannst Du z.B. die Leibniz-Reihe benutzen:
http://de.wikipedia.org/wiki/Leibniz-Reihe
Du machst Dir eine Schleife (repeat-until oder while-do). In jedem Schleifendurchlauf machst Du einen weiteren Schritt der Reihe. Das Ergebnis vergleichst Du dann mit dem Ergebnis aus dem
vorigen Schleifendurchlauf. Wenn der Unterschied zwischen den beiden Ergebnissen klein gennug ist (das Ergebnis also genau genug), dann muss die Schleife abbrechen.
Pro-Gamer - Di 13.01.09 21:14
Christian S. hat folgendes geschrieben : |
Zum Berechnen kannst Du z.B. die Leibniz-Reihe benutzen: http://de.wikipedia.org/wiki/Leibniz-Reihe
Du machst Dir eine Schleife (repeat-until oder while-do). In jedem Schleifendurchlauf machst Du einen weiteren Schritt der Reihe. Das Ergebnis vergleichst Du dann mit dem Ergebnis aus dem vorigen Schleifendurchlauf. Wenn der Unterschied zwischen den beiden Ergebnissen klein gennug ist (das Ergebnis also genau genug), dann muss die Schleife abbrechen. |
Danke genau das hat mir jetzt weitergeholfen !!
Pro-Gamer - Di 13.01.09 21:27
[quote="
Pro-Gamer"(544203)]
Christian S. hat folgendes geschrieben : |
Zum Berechnen kannst Du z.B. die Leibniz-Reihe benutzen: http://de.wikipedia.org/wiki/Leibniz-Reihe
Du machst Dir eine Schleife (repeat-until oder while-do). In jedem Schleifendurchlauf machst Du einen weiteren Schritt der Reihe. Das Ergebnis vergleichst Du dann mit dem Ergebnis aus dem vorigen Schleifendurchlauf. Wenn der Unterschied zwischen den beiden Ergebnissen klein gennug ist (das Ergebnis also genau genug), dann muss die Schleife abbrechen. |
Danke genau das hat mir jetzt weitergeholfen !!
//Edit : Doch nicht ganz wenn man die forme von leibniz nimmt kommt man doch gar nicht auf Pi ( zumindest mit den taschenrechner nicht ) wie soll ich mir die formel vorstellen damit ich da auf Pi komme ;)?
Christian S. - Di 13.01.09 21:29
Lesen musst Du bei Wiki schon :? Die Formel liefert Pi / 4.
Gausi - Di 13.01.09 21:30
Schau dir mal die Tabelle auf Wikipedia weiter unten an. Das dauert etwas, bis man Pi "erkennt". Für 3.14 braucht man ca. 1000 Summanden. Das geht mit dem Taschenrechner nur dann, wenn man wirklich schnell tippen kann. :lol:
Hidden - Di 13.01.09 21:38
Gausi hat folgendes geschrieben : |
Für 3.14 braucht man ca. 1000 Summanden |
Irre ich mich, oder gab es da nicht Formeln, die schneller konvergieren :? ?
E: Klar, zu kompliziert für den Unterricht :lol:
mfG,
elundril - Di 13.01.09 23:45
Falls noch nicht gelöst worden, hier der gesuchte Code in Java, vielleicht hilfts. (haben wir als erstes Programm in der uni gemacht)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64:
| import java.util.*;
/* * Programm: Pi * Autor: Michael Schrödl, 0826900 * * Das Programm rechnet Pi mit der Genauigkeit von n aus. * */
public class Pi { public static void main(String[] args) { Scanner eingabe = new Scanner(System.in); long Approximationsgrad = 0; long outercounter = 0; double zaehler = Math.sqrt(2); double hauptzaehler= 1; char Antwort = 'n'; boolean Ausgegeben;
do { Ausgegeben = false; System.out.println("Berechnung von Pi mit der der Formel von Viète.\nBitte geben sie den Grad der Genauigkeit an: (1 - " + Long.MAX_VALUE + ")"); do { try { Approximationsgrad = eingabe.nextLong(); //Benutzereingabe einlesen if (Approximationsgrad < 1) { //Bei Negativer Zahl System.out.println("ERROR: Die Zahl muss größer/gleich 1 sein."); //Fehlermeldung ausgeben } } catch (InputMismatchException e) { //Bei ungültiger Eingabe System.out.println("ERROR: Ungültige Eingabe. Bitte versuchen sie es erneut."); //Fehlermeldung ausgeben eingabe.next(); //Eingabe löschen } } while (Approximationsgrad < 1); while (Approximationsgrad > outercounter) { //Wenn Schleifendurchläufe < Genauigkeit hauptzaehler *= (zaehler / 2); //Pi berechnen zaehler = Math.sqrt(2+zaehler); //neuer Zaehler berechnen if (zaehler==2 && !Ausgegeben) { //wenn Max. Genauigkeit erreicht System.out.println("Max. Genauigkeit erreicht: " + outercounter + " Durchläufe.\n"); //Meldung ausgeben Ausgegeben = true; //Variable setzen um nochmaliges Ausgeben zu verhindern } ++outercounter; //Anzahl der Schleifen erhöhen } System.out.println("Pi wurde als " + 2 / hauptzaehler + " berechnet."); //Pi ausgeben System.out.println("*****************************************\n"); //Zierleiste ausgeben System.out.println("Wollen sie noch mal berechnen lassen? (j/n)"); //Fragen ob nochmal berechnet werden soll do { Antwort = eingabe.next().charAt(0); //Antwort einlesen if (Antwort != 'j' && Antwort != 'n'){ //Antwort auf korrektheit überprüfen System.out.println("ERROR: Keine korrekte Antwort. Bitte nur j oder n eingeben."); //Fehlermeldung ausgeben Antwort = 'k'; //Wiederholbedingung setzen } } while (Antwort == 'k'); } while (Antwort == 'j'); } } |
also bei mir is die größte genauigkeit bei 26 durchläufen erreicht.
lg elundril
alzaimar - Mi 14.01.09 00:32
Pro-Gamer hat folgendes geschrieben : |
Ich lag in den letzten 2 wochen im Krankenhaus und morgen schreib ich in Informatik einen Test wo diese Programmierung dran kommt |
Und ich glaub Dir aufs Wort, das Du das Alles dem Lehrer erzählt hast und er sich einen feuchten Kericht darum schert.
elundril - Mi 14.01.09 10:14
:oops: mein code stellt doch nicht die Leibnitz-Reihe dar, sondern die Formel von Viète. Macht aber nix, da beide Pi ausrechnen. :D
rizla - Mi 14.01.09 12:37
Ja, das ist echt hart!
Wenn jmd 2 Wochen im KH liegt, dann wird er schon was haben (also pathologisch).
Dass die Lehrer da keine Rücksicht drauf nehmen, kann ich mir nicht vorstellen, war jedenfalls
bei mir nicht so (oder waren meine Lehrer damals einfach menschlicher?).
Für mich klingts ein bisschen wie:
"Ich (hatte) in den letzten 2 wochen (was besseres zu tun als mich um die Schule zu kümmern)
und morgen schreib ich in Informatik einen Test wo diese Programmierung dran kommt"
Sry, aber wird immer mehr mit dieser Art Beitrag ("ich brauch für die Schule", "ein sourcecode wäre gut", usw usf).
Ohne jmd was unterstellen zu wollen. Aber das ist wohl heutzutage so: delphi starten, klick hier, klick da,
copy&paste hier, copy&paste da, kompilieren und fertig.
Viel mit Theorie und Überlegen ist heute nicht mehr, aber ist klar, wenn alles im Internet verfügbar ist, wozu denken ;)
(Dieser Text ist aus einem anderem Beitrag per c&p erstellt worden ;))
:r:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!