can't solve an exercise-help me with it

Michael J. Fromberger Michael.J.Fromberger at Clothing.Dartmouth.EDU
Thu Jan 12 06:34:12 CET 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



More information about the Python-list mailing list