Wie rechne ich ein Summenzeichen in java aus?
Hi haben folgende Aufgabe als Übung bekommen: "Gegeben Sei folgende Reihe: 6* Σ 1/k^2 Laufindex: 1 bis unendlich! Schreiben Sie die ersten fünf Glieder der Reihe auf Papier auf Ihrer schriftlichen Lösung auf! Schreiben Sie ein Programm, welches die Reihe berechnet und das Ergebnis bei jedem Schleifendurchlauf ausgibt. Brechen Sie die Berechnung ab, wenn die Änderung des Reihenwertes in einem Schleifendurchlauf kleiner als 10^-5 ist." Bekomme es einfach nicht hin. Kann mir da vielleicht jemand helfen?
2 Antworten
Ein Summenzeichen ist bei Lichte betrachtet ja erstmal nur eine Schleife. Du hast einen Startwert für den Laufindex und entweder eine unendliche Schleife oder ein Maximum für den Laufindex. Eine endlosschleife könntest du so umsetzen:
int k = 1;
while (true) {
// Inhalt der Schleife
}
Nimm dazu noch eine Summenvariable, in der du Schritt für Schritt den Wert der Summe akkumulierst:
int k = 1;
double sum = 0.0;
while (true) {
sum += 1.0 / (k*k);
System.out.println("Summe für k von 1 bis " + k + ": " + sum;
k++;
}
Nun hast du allerdings eine Abbruchbedingung angegeben bekommen. Die Ausführung einer Schleife kann man mit "break" unterbrechen:
while (true) {
if (abbruchbedingung) {
break;
}
}
das ist gleichbedeutend zu
while (!abbruchbedingung) {
// Schleifeninhalt
}
Deine Abbruchbedingung lautet: 1 / k^2 < 10^-5. Das ist äquivalent zu k^2 > 10^5. Ich hoffe die bisherigen Erklärungen reichen aus, dass du dein Problem nun eigenständig lösen kannst.
void sum() {
int mult=6;
float sum1=0;
float sum 2=0;
long i =1;
while(sum2-sum1sum1=sum2;
sum2 +=1/math.pow(i,2);
System.out.println(sum2);
}
}
Bin mit den Datentypen nicht ganz sicher, aber vom Prinzip her müsste es das sein.
Die while-Bedingung sorgt für den gewünschten Abbruch, sum2 bildet die laufende Summe während sum1 die vorherige Summe speichert, das ermöglicht den Vergleich in der Bedingung.
Danach folgt die gewünschte Ausgabe.
Keine Garantie das es funktioniert aber ich denke das könnte passen.