• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przybliżona wartość liczby Pi - wzór Leibniza, C++

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
1,113 wizyt
pytanie zadane 28 listopada 2022 w C i C++ przez bananen Nowicjusz (170 p.)

Hej, mam do wykonania następujące zadanie:

Napisałam taki kod w C++, ale coś nie działa. Mogę prosić o wskazówki, jak to poprawić, żeby działało poprawnie?
 

#include <iostream>
using namespace std;
#include <cmath>

int main(){
    int n;
    cout << "Podaj liczbe n: ";
    cin >> n;
    float pi = 0;

    for(int k = 0; k<= n; k++){
        pi = pi + (pow(-1.0,k)/((2*k) + 1));
    }
    cout << "Pi = " << pi*4;
    return 0;
}

 

komentarz 28 listopada 2022 przez adrian17 Mentor (354,120 p.)

ale coś nie działa

Ale co Ci nie działa? Bo na moje oko to wynik wygląda blisko?

komentarz 28 listopada 2022 przez Oscar Nałogowiec (29,360 p.)
To świetna okazja by zacząć używać debuggera. I tak cię to nie minie, a im wcześniej zaczniesz, tym bardziej będziesz umiał rozwiązywać problemy sam. Czasami warto lekko zmodyfikować program (jakieś pośrednie zmienne, by można było zobaczyć wartość cząstkowe), co czyni debuggowanie skuteczniejszym.

Nawet nie napisałeś co nie działa.
komentarz 28 listopada 2022 przez bananen Nowicjusz (170 p.)

@adrian17, przykładowo dla n= 3 wychodzi mi 2.89524. Nie powinno to być jednak bliżej 3,14? :/

komentarz 28 listopada 2022 przez Oscar Nałogowiec (29,360 p.)
To zależy jak szybko zbieżny jest ten wzór. Do nieskończoności masz jeszcze daaaaleko.
komentarz 28 listopada 2022 przez adrian17 Mentor (354,120 p.)

przykładowo dla n= 3 wychodzi mi 2.89524. Nie powinno to być jednak bliżej 3,14? :/

Uh... nie wiem co na to powiedzieć :)

Sam wyżej wrzuciłeś screenshota, to od razu można z ręki na kalkulatorze policzyć że dla n=3 wyjdzie Ci 1-1/3+1/5-1/7. Pomnóż przez 4 i faktycznie wychodzi 2.89. Spróbuj wartości N rzędu 100, 1000, milionów, miliardów - a nie n=3 :P

komentarz 28 listopada 2022 przez Wiciorny Ekspert (281,310 p.)
to nie jest poprawny wynik... przeybliżenie dla 3 - ze wzoru to

Dla i= 3   liczba=-0.142857
Dla i=3  wynik+liczba   0.866667 + -0.142857 = 0.723809

http://panopticum.opx.pl/pi/pi.html
komentarz 28 listopada 2022 przez adrian17 Mentor (354,120 p.)
(zauważ że on liczy pętlę do <=n, więc jego n=3 to efektywnie nasze n=4. Z dokładnością do tego liczy się poprawnie)
komentarz 28 listopada 2022 przez Wiciorny Ekspert (281,310 p.)

nie może być  wartość większa od jeden z racji tego, że suma tego ciągu zmierza przez 1 do nieskończoności co oznacza, że 1/nieskończoność zmierza do 0 ostatecznie z każdym kolejnym krokiem wartości są coraz mniejsze nie większe.  wskazuje chociaż to wykres 

sum_(n=0)^3 (-1)^n\/(2 n + 1) = 76\/105
sum_(n=0)^4 (-1)^n\/(2 n + 1) = 263\/315
Rozumiem że mnożąc to przez 4 - z racji odzwierciedlenia wartości PI ... daje nam to wynik dodatni, ale to nie jest wtedy założenie tego zadania, przynajmniej z pamięci inaczej to było ocenione..., co do reszty się zgodze. 

komentarz 29 listopada 2022 przez adrian17 Mentor (354,120 p.)
(tbh nie mam zielonego pojęcia o czym w tym momencie mówisz i do czego w ogóle zmierzasz :P )

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,035 wizyt
pytanie zadane 26 marca 2020 w C i C++ przez Kabom Nowicjusz (120 p.)
0 głosów
1 odpowiedź 518 wizyt
0 głosów
1 odpowiedź 331 wizyt
pytanie zadane 16 stycznia 2018 w C i C++ przez Keris Nowicjusz (120 p.)

93,440 zapytań

142,432 odpowiedzi

322,679 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...