# can't solve an exercise-help me with it

Michael J. Fromberger Michael.J.Fromberger at Clothing.Dartmouth.EDU
Thu Jan 12 00:34:12 EST 2006

In article <43c5e027$0$2459\$edfadb0f at dread14.news.tele.dk>,
"hossam" <nono at hotmail.com> wrote:

> I'm studying python newly and have an exercise that is difficult for me as a
> beginner.Here it is :
> "Write a program that approximates the value of pi by summing the terms of
> this series:
> 4/1-4/3+4/5-4/7+4/9-4/11+.... The program should prompt the user for n, the
> number of terms to sum and then output the sum of the first n terms of this
> series."
>
> any help would be appreciated.
>
> benni

The series you're describing is basically expanding the Taylor series
for 4 * atan(1), where

i
oo     -1
atan(1) =  SUM   ------
i = 0  2i + 1

(or in LaTeX:  \sum_{i=0}^{\infty}\frac{-1^i}{2i+1})

To enumerate the terms of this series, you can treat i as a counter, and
compute the numerator and denominator either directly or from their
previous values.  The sum can be accumulated into a separate variable.
So, for instance,

. sum = 0. ; num = 1. ; den = 1.
. for i in xrange(n):
.   sum += num / den
.   num = -num
.   den += 2
.
. pi = 4 * sum   # approximately...

Keep in mind that this approximation for atan(1) converges very slowly,
so you will need to do quite a lot of terms before it will converge (you
need about a thousand terms to get 2 significant figures after the
decimal point).  You might have better results using Machin's formula,

atan(1) = 4 * atan(1/5) - atan(1/239)

Or, pi = 16 * atan(1/5) - 4 * atan(1/239).  The Taylor series will
converge more quickly for atan(1/5) and atan(1/239).

(LaTeX: \mathrm{atan}(x) = \sum_{i=0}^\infty\frac{(-1^i)x^i}{2i+1})

Cheers,
-M

--
Michael J. Fromberger             | Lecturer, Dept. of Computer Science
http://www.dartmouth.edu/~sting/  | Dartmouth College, Hanover, NH, USA