Wallisscheses Produkt

Status
Nicht offen für weitere Antworten.
S

Sebastian233

Gast
Hallo

wir haben die Aufgabe bekommen PI mithilfe des Wallisschischen Produktes zu berechnen. Das Programm soll
nach der Anzahl der Berechnungsschritte fragen und dann das Ergebniss ausgeben.

Java:
public class Wallpro {
 public static void main(String[] args) {

 System.out.println("Geben sie die Anzahl der Berechnugsschritte ein:");
 java.util.Scanner scanner = new java.util.Scanner(System.in);

   int eingabe = scanner.nextInt();
   int wallpro = 1;
   while
   
}
System.out.println(wallpro);

Leider komme ich nun absulut nicht mehr weiter bzw ist die eigentliche Schleife ja das wichtigste. Da ich auch seit ca erst 1 Woche mit java arbeite bzw es versuche zu erlernen, habe ich nun keine wirkliche Idee wie ich das nun
in Java formuliereb kann.
Wallissches Produkt ? Wikipedia
Das was auf Wiki steht kann ich schon nachvollziehen nur fällt mir dazu keine wirkliche Lösung ein.
Wäre nett wenn mir da einer helfen könnte
MFG
Sebastian
 

Landei

Top Contributor
Java:
int schritte = scanner.nextInt();
double wallpro = 1;
for(double n = 2; n <= schritte; n +=2) {
   wallpro *= (n/(n-1))*(n/(n+1));
}
n ist dabei jeweils der Zähler für zwei der Brüche, und geht die geraden Zahlen (beginnend bei 2) durch
Der eine Nenner ist um eins kleiner und der andere um eins größer als n.
 
Zuletzt bearbeitet:
S

Sebastian233

Gast
danke für die schnelle Hilfe

also dein angegebener Code kann ich so halbwegs nachvollziehen. Warum benutzt du aber double anstatt int?
und wenn ich nun wallpro ausgeben lasse bekomme ich immer 0.0 als Ausgabe. Egal was ich eingebe als Anzahl für die Schritte.
Ja und warum for und keine while Schleife? Sorry wenn das alles vll ziemlich blöde Fragen sind aber wie gesagt bin ein völliger Grünschnabel in Sachen Programmieren. So würde der Code nun aussehen:
Java:
public class Wallpro {
public static void main(String[] args) {
System.out.println("Geben sie die Anzahl der Berechnugsschritte ein:");
java.util.Scanner scanner = new java.util.Scanner(System.in);
int schritte = scanner.nextInt();
double wallpro = 1;
for (int n = 2; n <= 2*schritte; n +=2) {
   wallpro *= (n/(n-1))*(n/(n+1));
}
   System.out.println(wallpro);
}
}
 

Landei

Top Contributor
n muss auch double sein. Wenn n int ist, wird die Division ganzzahlig ausgeführt. Dann ist z.B. 2/3 = 0 und damit auch dein Produkt.
 
S

Sebastian233

Gast
Java:
public class Wallpro {
public static void main(String[] args) {
System.out.println("Geben sie die Anzahl der Berechnugsschritte ein:");
java.util.Scanner scanner = new java.util.Scanner(System.in);
int schritte = scanner.nextInt();
double wallpro = 1;
for (double n = 2; n <= 2*schritte; n +=2) {
   wallpro *= (n/(n-1))*(n/(n+1));
}
   System.out.println(wallpro);
}
}

geändert....wenn ich nun 1 eingebe müsste ja laut wiki 2,7 rauskommen. Es kommt aber 1,33333333333
Nun bin ich etwas verwirrt :(

achso ja stimmt das mit int. Daran habe ich nicht mehr gedacht. Würde sich halt wirklich schlecht machen bei PI :D
 

Landei

Top Contributor
Wieso? 2/1 * 2/3 = 4/3 = 1.333333333

Ich habe in jedem Schritt zwei Brüche zusammengefasst. Ansonsten wird es komplizierter.

Gib doch mal 1000 ein, und schau, ob es prinzipiell funktioniert...
 
S

Sebastian233

Gast
dann kommt 1.5704038730151908

Es stimmt schon. Ich habe das alles gerade etwas durcheinander gebracht. Denn das Produkt * 2 = annähernd PI.

Grosses Dankeschön an dich ;)
hast mir echt weiter geholfen. Langsam verstehe ich das sogar alles.

MFG
Sebastian
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben