Brauche Hilfe bei der Berechnung von pi in c++
-
hallo, habe noch nicht viel Erfahrung mit c++ und deshalb noch große Probleme die folgende Aufgabe zu lösen.
Man soll durch eine Annäherung mit der Streifenmethode (Ober- Untersumme) pi berechnen.
Das Programm soll mit n=4,8,16,... die untere und die obere Schranke für pi berechnen, bis sich beide Werte um weniger als eps= 0.00001 unterscheiden.Hier mein Ansatz:
#include <iostream>
#include <math.h>
using namespace std;//Definition der Untersumme
double Untersumme(double n)
{double Ergebnis=0;
for (int i=1; i<=n; i=i+1)
Ergebnis = Ergebnis +((1/n)*sqrt(1-pow(i/n,2)));return 4*Ergebnis;
}// Definition der Obersumme
double Obersumme(double n)
{ double Ergebnis=0;
for (int i=0; i<=(n-1); i++)
Ergebnis = Ergebnis +((1/n)*sqrt(1-pow(i/n,2)));return 4*Ergebnis;
}
int main()
{
int n=4;double diff, eps=0.00001;
do
{
diff = Untersumme(n) - Obersumme(n);
n= n*2;
}while (diff >= eps);
}Ich hoffe, dass mir jemand weiterhelfen kann.
Jetzt schon vielen Dank
bin solangsam wirklich verzweifelt
-
Hallo
Und wo genau kommst du nicht weiter? Fehlerbeschreibung?
Und bitte beachten : sfds
bis bald
akari
-
#include <iostream> #include <math.h> using namespace std; //Definition der Untersumme double Untersumme(double n) { double Ergebnis=0; for (int i=1; i<=n; i=i+1) Ergebnis = Ergebnis + (1/n)*sqrt(1-pow(i/n,2)); return 4*Ergebnis; } // Definition der Obersumme double Obersumme(double n) { double Ergebnis=0; for (int i=0; i<=(n-1); i++) Ergebnis = Ergebnis + (1/n)*sqrt(1-pow(i/n,2)); return 4*Ergebnis; } int main() { int n=4; double diff, eps=0.00001; do { // diff = Untersumme(n) - Obersumme(n); diff = Obersumme(n) - Untersumme(n); // besser, da Obersumme > Untersumme n = n*2; } while (diff >= eps); // Ausgabe wäre doch auch nicht verkehrt, oder cout << Untersumme( n ) << " " << Obersumme(n) << endl; return 0; }
Gruß
Werner