Obliczanie liczby Pi - Problem

0

Witam,

proszę o pomoc. Moim zadaniem jest napisać program z funkcją double mojePi(void), który wylicza z żądaną dokładnością wartość liczby Pi. Do obliczenia przybliżonej wartości Pi wykorzystaj wzór na sumę szeregu: pi/4=1-1/3+1/5-1/7+1/9+...-. Wszystko byłoby do brze gdyby nie warunek: obliczenia należy zakończyć jeżeli wartość bezwzględna z różnicy pomiędzy dwoma kolejnymi wyrazami szeregu jest mniejsza niż założona dokładność. Przyjmij że założona dokładność to stała programowa delta o wartości np. 0.001.

Oto wynik mojej pracy bez uwzględnienia warunku. Ja stworzyłem program, który wylicza liczbę Pi do momentu gdy n=100 000. Czy ktoś pomoże mi zrobić program według powyższego warunku?

#include <stdio.h>
#include <stdlib.h>

  double wynik;

  double mojePi(void)
  {
    double pi = 0.0,pi1=1; 
    double mianownik; 
    int licznik,n=321321;
    double delta=0.001,wynik;


    for(licznik = 0; licznik < n; licznik++)
      { 
        if( (licznik %2) ==1) 
		  { 
            mianownik = (2 * licznik) + 1; 
            pi-=(4 / mianownik);
          } 
            else 
		  { 
            mianownik = (2 * licznik) + 1; 
            pi+=(4 / mianownik);
          } 
     }      return pi;
  }
int main(int argc, char *argv[])
  {
     
    wynik=mojePi();
    printf("Liczba pi wynosi: %.15f\n\n\n",wynik); 
  
  system("PAUSE");	
  return 0;
}

Mały błąd w programie w tej linii z deklaracją n, ma być

int licznik,n=100000;

0

kolejne wyrazy ciągu to (-1)^i/(2i+1), więc różnica pomiędzy dwoma kolejnymi to: 1/(2i+1) + 1/(2*i+3). Czyli można to zaokrąglić w górę do dwu krotności wielkości danego wyrazu.
Co za problem sprawdzać czy dany wyraz jest mniejszy niż 0.002?

1 użytkowników online, w tym zalogowanych: 0, gości: 1