![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Unser Lehrer hat uns die Hausaufgabe gegeben PI zu berechnen. Was ich allerdings nicht verstehe ist die Formel selbst. Ich Hab einen PAP gemacht der richtig ist, aber den ich nicht versteh. Ich habe den Quellcode hier gefunden: // Pi Programm // -------------------------------------------------- import java.math.BigDecimal; public class pi_me // millenium edition { final static int ziffern = 1000; public static void main(String[] args) { System.out.println("Berechnung von PI auf " + ziffern + " Nachkommastellen"); System.out.println("============================== =============="); BigDecimal pi = atan(5, ziffern + 1); // pi = atan(1/5) pi = pi.multiply(new BigDecimal("4")); // pi *= 4 pi = pi.subtract(atan(239, ziffern + 1)); // pi -= atan(1/239) pi = pi.multiply(new BigDecimal("4")); // pi *= 4 System.out.println( "pi=" + pi.toString().substring(0, ziffern + 2) ); } private static BigDecimal atan(int _a, int ziffern) // berechnet mit Hilfe einer unendlichen Reihe // arctan(1/_a) auf 10^ziffern genau. { long nGlieder = 1; BigDecimal _genau = (new BigDecimal( "1" )).movePointRight( ziffern ); BigDecimal _potenz = new BigDecimal(_a); BigDecimal _glied = new BigDecimal(_a); BigDecimal tmp; boolean condition=true; while ( condition ) { nGlieder++; _potenz = _potenz.multiply( new BigDecimal(_a * _a) ); _glied = _potenz.multiply( new BigDecimal(Long.toString(nGlieder * 2 - 1)) ); tmp = new BigDecimal(Long.toString(nGlieder)); tmp = _genau.multiply( new BigDecimal(tmp.toString()) ); condition = _glied.compareTo(tmp) < 0; } int sziffern = (int)(ziffern + Math.log(nGlieder)); // erstes Glied _potenz = new BigDecimal(Integer.toString(_a)); _glied = new BigDecimal(Integer.toString(_a)); BigDecimal summe = (new BigDecimal("1")).divide( new BigDecimal(_a), (int)(ziffern + nGlieder + 0.5), BigDecimal.ROUND_HALF_UP ); for ( int iGlied=1; iGlied<nGlieder; iGlied++ ) { _potenz = _potenz.multiply( new BigDecimal(-1 * _a * _a)); _glied = _potenz.multiply( new BigDecimal(Long.toString(2 * iGlied + 1)) ); summe = summe.add((new BigDecimal("1")).divide(_glied, sziffern, BigDecimal.ROUND_HALF_UP)); } return summe; } } gefunden. Allerdings sind da sachen drin von "math" die wie nicht hatte. Könnt ihr mir helfen? Türrlich könnt ihr das;O Das programm sollte 3-4 Variablen haben und eine for Schleife enthalten. Wenn ihr kein bock habt dann ist es auch nicht so wild. Die Formel lautet pi=4*[1- 1/3 + 1/5 - 1/7+ 1/9 - ...] Ich bin für jede Hilfestellung dankbar. Normalerweise brauch ich keine hilfe in Java aber diese Formel ist so... . |
|
| | Nach oben #2 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
|
Hi, erst einmal willkommen im Forum. Ich verstehe Dich jedoch nicht richtig. Du verstehst den Algorithmus zur PI-Berechnung nicht? Hast aber schon was programmiert? Der gezeigte Code ist ein anderer als der, den Du geschrieben hast? Das mit dem Math konnte ich auch nicht nachvollziehen. Was genau willst Du? Sollen wir nur die Formel umsetzen? Viele, viele Fragen... P.S.: bitte nutze doch die [code-]Tags, die oben angegeben sind. Dann kann man Deinen Beitrag leicht lesen.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #3 |
| Gast
Beiträge: n/a
|
thx Der Quelcode der oben steht den hab ich nicht selbst gemach Genau was ich brauche ist einfach ein Programm zur brrechnung von PI. Das oben genannte Programm enthält Befehle die die meisten aus meiner Klasse nicht kennen. Einige Dinger aus den Packages math kenn ich ja selbst nicht ^^ ja neu und werde versuchen mir Java anzueignen. Kleines "Grundwissen" hab ich. Aber wenn es darum geht so eine dumme s PI auszurechnen, dann hab ich immer ein BlackOut. Ich versteh die Formel zur berechnung von PI nicht und weis einfach nicht wie ich das Programm schreiben soll. ich würd mit 3-4 Variablen anfangen aber irgendwie bleib ich bei der forSchleife hängen. Auserdem bekomm ich es mit den Datentypen double und int nicht so ganz geregelt. Wieso weis ich aber wie ich das anders amchen soll... KA. sry wegen der länge es wäre nett wenn du deinen Vorschlag*Quelcode zur Berechnung von PI hier posten würdest.* in der schule haben wir bisher strings,varaiblendeklaration,datentypen,leichte rechenaufgaben+verschiedene operatoren.+do for und while schleifen gemacht. arrys auch+ if anweisungen + das packages zum herstellen des konntakts mit der tastatur io ... Das wars eigentlich. aus diesem bulshitwissen was ich noch nichtmal so ganz behersche soll ich soll ich PI berechnen :/ |
|
| | Nach oben #4 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
|
Hi, auch wenn es eigentlich nicht immer Sinne des Lehrers ist: Code: public class PiMaker {
static int anz = 1000;
static int zaehler = 3; //Schleigenindex - nicht aendern
static int vorzeichen = 1;
static double pi = 1;
public static void main(String[] args) {
if(args.length > 0) {
try {
anz = Integer.parseInt(args[0]);
}
catch(Exception ex) {
System.out.println("Uebergebene Parameter ist kein Integer!");
}
}
System.out.println("Berechne PI mit " + anz + " Schleifendurchgaengen.");
while(zaehler < 2*anz+3) {
vorzeichen *= (-1);
pi += vorzeichen/((double)zaehler);
zaehler += 2;
}
pi *= 4;
System.out.println("angenaehrtes PI = " + pi);
}
}
[edit]es handelt sich dabei aber nicht um den besten Algorithmus zur Berechnung von Pi.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #5 |
| Gast
Beiträge: n/a
|
Kann sein, aber das ist genau der Algorithmus den ich brauche. Werde mir ab heute immer 2 Stunden für Java nehmen. Das sollte zur Fortbildung reichen oder wieviel Zeit proTag würdest du mir empfehlen um Java zu lernen? |
|
| | Nach oben #6 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
|
Wenn ich etwas selber lernen möchte, lege ich meist keinen Zeitrahmen fest. Wichtig ist, dass Du Dir irgendwie eine Aufgabe überlegt und die dann langsam umsetzt. Z.B.: ein Rechenprogramm. Erst schreibst Du eine Klasse die mit den gegebenen Parametern rechnet. Dann könntest Du sowas wie ein Menü mit Eingabe implementieren. Wenn Du damit zufrieden bist, baust Du Dir dafür ne grafische Oberfläche. Evtl. noch Funktionen zeichnen, etc... Das ergibt sich dann mit der Zeit und man lernt eine Menge. Viel Spass.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #7 |
| Gast
Beiträge: n/a
|
Hi ich bins wieder. Ich wollte mal wissen welcher Editor gut ist. Ich zum Beispiel benutze in der Schule BlueJay. Zu Hause hab ich Joe. Ich hab gehört das Eclipse ziemlich gut sein soll oder jbuilder oder wie das moped heißt ^^. Oder ist es am anfang am besten einfach mit einen normalen Windows Standart Editor zu arbeiten? Ich hab mal eclipse draufgepackt aber nicht vile verstanden. Ich weiß da nicht einmal wie ich eine Klasse anlege. |
|
| | Nach oben #8 |
| Chefkoch-Mod Registriert seit: 30.05.2004
Beiträge: 433
|
Hi, ich würde mit einem normalen Editor, welcher auch Highlighting unterstützt, anfangen. Emacs ist dafür ganz gut. Wenn Du die Grundlagen der Javaprogrammierung verstanden hast und dann mit Packages arbeitest, würde ich Eclipse empfehlen. Aber Du wirst es wohl merken, wenn ein normaler Editor nicht mehr reicht. Bei großen Projekten macht das sehr viel Sinn.
__________________ Denk mal darüber nach... Lars ACHTUNG: wenn ich von Klassen spreche, könnte ich auch deren Instanzen meinen. www.linuxforen.de +++ www.macuser.de +++ www.mrunix.de +++ www.lmprojects.de |
| | |
| | Nach oben #9 |
| Gast
Beiträge: n/a
|
das mit den gui werden wir bald machen in der schule. Ich habe dem Programm noch eine EingabeKlasse hinzugefügt die der Lehrer uns geschreiben hat und danach hab ich etwas rumgebastelt. Java Code:
Java Code:
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |