Our solutions to approximate this infinite series:
1/1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 - ...
... and this infinite series:
1/0! + 1/1! + 1/2! + 1/3! + 1/4! + ...
... asked the user to tell us how many terms to compute. We then used that value as the range of a counted loop, such as:
for i in range(terms): term_value = 1.0 / divisor if i % 2 == 0: accum += term_value else: accum -= term_value divisor += 2
Then we checked to see how close we were to the expected value, π/4 or e. For example,
guess = 4 * accum print('Python say : ', math.pi) print('Program say: ', guess) print('Difference : ', guess - math.pi)
Sometimes the number was close to the the expected value, and other times, it wasn't, depending on how many terms we computed and how quickly the series converged. The first series above converges slowly, while the second converges very quickly.
We can turn this process inside out. We ask the user how close an approximation she wants, and then we compute however many terms we need to reach an acceptable value:
Because the series converge, we know that we can get as close as we want -- eventually. We just need to compute enough terms! ... with one caveat: we can only get as close as the number of digits can Python represent.
Such a program might look something like pi_over_four_epsilon.py or value_of_e_epsilon.py. Notice the construction of the
The key ideas in these examples:
Now, we are equipped to answer an interesting question: How quickly does a series converge?
The rest of the period is devoted to Exam 1