Ile wyrazów szeregu (wzór niżej) należy wysumować, aby uzyskać wynik z dokładnością do trzech miejsc po przecinku? C++



∑ [tex]\frac{(-1)^{k} }{2k+1}[/tex]

k=0

π/4 = 0.78539816339744830962


Należy napisać program w C++

∑ ma u góry nieskończoność, a na dole k=0


Odpowiedź :

Odpowiedź

Bez wchodzenia w metody numeryczne (bo zadanie na takie nie wygląda), co to znaczy uzyskać wynik z dokładnością do trzech miejsc po przecinku?

To znaczy, że wyświetlając (z poprawnym zaokrągleniem) uzyskany wynik mamy gwarancję, że trzy miejsca po przecinku są dokładne. Czyli, że obliczanie kolejnych wyrazów już nic nie zmieni.

Nie zawsze tak można zrobić. Akurat tutaj można ponieważ kolejne wyrazy szeregu mają naprzemienne znaki, a ich wartość bezwzględna jest coraz mniejsza.

Wyjaśnienie

Można, a może nawet trzeba?, jeszcze dzielić włos na czworo, bo k = 2454, ale w tym momencie wyrazów szeregu jest 2455... Jednak na dwoje babka wróżyła

  • począwszy od k = 2454 wiemy (bo sprawdziliśmy!), że już te trzy cyfry się nie zmienią,
  • począwszy od k = 2453 wynik już jest dokładny do trzech miejsc po przecinku, co sprawdziliśmy w następnym kroku.

Jestem bardzo ciekawa jak to w klasie na lekcji zostało opisane, że macie zrobić.

Typ pętli oczywiście może być inny, ale chciałam specjalnie użyć  for  aby w łatwy sposób pokazać, że pętla na pewno nie będzie wykonywana dla wielkości większych niż INT_MAX.

Interesujące jest jak zmieniają się wartości sumy częściowej, tzn. dlaczego potrzeba tak wiele wyrazów ciągu. Można przestawić wiersz 22. za wiersz 20., tak aby w  if  pozostało tylko  break  i popatrzeć. Bardzo pouczające.

Zobacz obrazek 0AB
Zobacz obrazek 0AB