20.9: Exercises
- Page ID
- 16982
fExercise \(\PageIndex{1}\)
To test the square root algorithm in this chapter, you could compare it with math.sqrt
. Write a function named test_square_root
that prints a table like this:
1.0 1.0 1.0 0.0 2.0 1.41421356237 1.41421356237 2.22044604925e-16 3.0 1.73205080757 1.73205080757 0.0 4.0 2.0 2.0 0.0 5.0 2.2360679775 2.2360679775 0.0 6.0 2.44948974278 2.44948974278 0.0 7.0 2.64575131106 2.64575131106 0.0 8.0 2.82842712475 2.82842712475 4.4408920985e-16 9.0 3.0 3.0 0.0
The first column is a number, a; the second column is the square root of a computed with the function from Section 7.5; the third column is the square root computed by math.sqrt
; the fourth column is the absolute value of the difference between the two estimates.
Exercise \(\PageIndex{2}\)
The built-in function eval
takes a string and evaluates it using the Python interpreter. For example:
>>> eval('1 + 2 * 3') 7 >>> import math >>> eval('math.sqrt(5)') 2.2360679774997898 >>> eval('type(math.pi)') <type 'float'>
Write a function called eval_loop
that iteratively prompts the user, takes the resulting input and evaluates it using eval
, and prints the result.
It should continue until the user enters 'done'
, and then return the value of the last expression it evaluated.
Exercise \(\PageIndex{3}\)
The mathematician Srinivasa Ramanujan found an infinite series that can be used to generate a numerical approximation of \( 1/\pi \):
\[ \dfrac{1}{\pi} = \dfrac{2 \sqrt{2}}{9801} \sum_{k=0}^{\infty} \dfrac{(4k)!(1103+26390k)}{(k!)^{4} 396^{4k}} \nonumber \]
Write a function called estimate_pi
that uses this formula to compute and return an estimate of π
. It should use a while
loop to compute terms of the summation until the last term is smaller than 1e-15
(which is Python notation for 10−15). You can check the result by comparing it to math.pi
.
- Solution: