3.5. Further Practice#

Exercise 3.13

A solid of revolution is a three-dimensional figure contstructed by rotating a curve about a straight line. We can estimate the volume of a solid of revolution by dividing it into a sequence of stacked discs and summing the volume of each.

A sphere of radius \(R\) is formed by rotating the curve \(y = \sqrt{R^2 - x^2}\) around the x-axis between \(-R\) and \(R\).

a

Use the following steps to estimate the volume of a sphere of radius 1.

  1. Write a function vol_disc(R, x, dx) which returns the volume of the disc centred at position x with thickness dx.

  2. Estimate the volume of a sphere of radius 1 by dividing the figure into 10 discs equally spaced between -1 and 1 [use a value of 3.14159 for \(\pi\)].

  3. Write a function sphere_vol(R, n) which returns the estimate of the volume of a sphere of radius R calculated by dividing it into n discs.

  4. The estimate should get more accurate as we increase n. We can estimate the accuracy by calculating the difference between sphere_vol(R, n) and sphere_vol(R, n-1). For R = 1, how large does n need to be so that difference between consecutive estimates is less than \(10^{-4}\)?

Exercise 3.14

In this question you will investigate the number of prime numbers below a number \(n\) (recall a prime number is a number divisible only by 1 and itself).

You will need to use Boolean variables which are variables that take the logical values True or False. For example, the following function divisible_by_two returns the Boolean value True if its argument is divisible two, and False otherwise.

def divisible_by_two(n):
    if n % 2 == 0:
        return True
    else:
        return False

k = 5
if divisible_by_two(k):
    print(k, "is even")
else:
    print(k, "is odd")
  1. Write a function is_divisible(n, m) which returns True if n is divisible by m, and otherwise returns False.

  2. Write a function is_prime(n) which returns False if n is divisible by any integer between 2 and n-1, and otherwise returns True.

  3. Write a function number_of_primes(n) which returns the number of prime numbers less than or equal to n [NB 1 is not a prime number].

  4. Draw a graph with n on the x-axis and the number of primes less than or equal to n on the y-axis.