Berechnung der Zahl PI mittels Reihenentwicklung

Hallo Experten!

Hab ein Problem und hoffe ihr könnt mir weiterhelfen :smile:

Ich soll in C ein Programm erstellen, das die Zahl PI mittels der Reihenentwicklung (http://de.wikipedia.org/wiki/Leibniz-Reihe) berechnet. Außerdem soll es dem Benutzer möglich sein die Schranke d variabel eingeben zu können, wobei d die grenze für den absoluten Restfehler bezeichnet.

ich hab nur wenig ahnung davon weil ich erst vor kurzem mit c-programmierung begonnen habe.

könntet ihr mir da vielleicht ein paar Ansätze geben?

vielen dank & liebe grüße
stefan

Hallo,

Ich soll in C ein Programm erstellen, das die Zahl PI mittels
der Reihenentwicklung
(http://de.wikipedia.org/wiki/Leibniz-Reihe) berechnet.
Außerdem soll es dem Benutzer möglich sein die Schranke d
variabel eingeben zu können, wobei d die grenze für den
absoluten Restfehler bezeichnet.

ich hab nur wenig ahnung davon weil ich erst vor kurzem mit
c-programmierung begonnen habe.

könntet ihr mir da vielleicht ein paar Ansätze geben?

Das Programm ist eigentlich straight forward: du nimmst eine Variable, in der du die Partialsumme speicherst, und schreibst eine Schleife, in der immer das nächste Glied addiert wird.
In der Bedingung der Schleife überprüfst du, wie weit die Partialsumme von pi/4 weg ist, und brichst ab, wenn der Betrag der Differenz kleiner ist als die Fehlerschranke.

Grüße,
Moritz

hi!

vielen dank für die schnelle antwort! werd mich gleich einmal dazusetzen und schaun ob ichs hinkrieg ^^

dankesehr!

lg stefan

hi!
ich schaffs irgendwie net wirklich.
es sollen ja eigentlich so lange die partialsummen addiert werden, bis das letzte glied kleinergleich dem eingegeben restfehler ist.

aber nach gerade einmal einem durchgang stoppt die schleife ^^
is das was ich bis jetzt hab total falsch oder stimmts ansatzweise zumindest?

hoffe ihr könnt mir noch einmal helfen!
danke :smile:

#include
#include

int main() {

int n;
double sum, partialsum, d, abs, R;

sum = 0;
R = 0;

printf(„Eingabe des maximalen Restfehlers: „);
scanf(“%lf“, &d);

while(abs

Hallo,

#include
#include

int main() {

int n;
double sum, partialsum, d, abs, R;

sum = 0;
R = 0;

printf(„Eingabe des maximalen Restfehlers: „);
scanf(“%lf“, &d);

Du initialiserst weder n noch abs.

> while(abs


Es ist eine relativ dumme Idee, hohe Potenzen einer Fließkommazahl zu bilden.




> sum = sum + 4\*partialsum;   
> R = R + partialsum;


Die Variable, die du partialsum genannt hast, hält das aktuelle Glied der Berechnung, nicht die Partialsumme (die ist in R).



> abs = fabs(R);


Du nimmst nicht den Betrag der Differenz von aktuellen Wert und Zielwert, sondern nur den Betrag. Damit macht die Abbruchbedingung keinen Sinn mehr.

Ich habe mal eine funktionierende Version angehängt:



    
    #include 
    #include 
    
    int main() {
     int n = 0;
     double partialsum = 0.0, d;
     int sign = 1;
    
     printf("Eingabe des maximalen Restfehlers: "); 
     scanf("%lf", &d); 
     printf("Limit: %f\n", d);
    
     while(fabs(3.1415926 - partialsum) \> d) {
     double current = 4.0 \* (double) sign / (2.0 \* (double) n + 1.0);
     partialsum += current;
     printf("%f\n", partialsum);
     n++;
     sign = -sign;
     }
    
     printf("\nPI laut Leibniz Reihe: \n\t%f\n", partialsum); 
     printf("Anzahl n: \n\t%i\n", n);
     return 0;
    }




Grüße,
Moritz