# Exponential functions and logarithms¶

In [1]:
import math
import numpy as np


## Exponential functions¶

What is e? It is simply a number (known as Euler's number):

In [2]:
math.e

Out[2]:
2.718281828459045

e is a significant number, because it is the base rate of growth shared by all continually growing processes.

For example, if I have 10 dollars, and it grows 100% in 1 year (compounding continuously), I end up with 10*e^1 dollars:

In [3]:
# 100% growth for 1 year
10 * np.exp(1)

Out[3]:
27.18281828459045
In [4]:
# 100% growth for 2 years
10 * np.exp(2)

Out[4]:
73.890560989306508

Side note: When e is raised to a power, it is known as the exponential function. Technically, any number can be the base, and it would still be known as an exponential function (such as 2^5). But in our context, the base of the exponential function is assumed to be e.

Anyway, what if I only have 20% growth instead of 100% growth?

In [5]:
# 20% growth for 1 year
10 * np.exp(0.20)

Out[5]:
12.214027581601698
In [6]:
# 20% growth for 2 years
10 * np.exp(0.20 * 2)

Out[6]:
14.918246976412703

## Logarithms¶

What is the (natural) logarithm? It gives you the time needed to reach a certain level of growth. For example, if I want growth by a factor of 2.718, it will take me 1 unit of time (assuming a 100% growth rate):

In [7]:
# time needed to grow 1 unit to 2.718 units
np.log(2.718)

Out[7]:
0.99989631572895199

If I want growth by a factor of 7.389, it will take me 2 units of time:

In [8]:
# time needed to grow 1 unit to 7.389 units
np.log(7.389)

Out[8]:
1.9999924078065106

If I want growth by a factor of 1, it will take me 0 units of time:

In [9]:
# time needed to grow 1 unit to 1 unit
np.log(1)

Out[9]:
0.0

If I want growth by a factor of 0.5, it will take me -0.693 units of time (which is like looking back in time):

In [10]:
# time needed to grow 1 unit to 0.5 units
np.log(0.5)

Out[10]:
-0.69314718055994529

## Connecting the concepts¶

As you can see, the exponential function and the natural logarithm are inverses of one another:

In [11]:
np.log(np.exp(5))

Out[11]:
5.0
In [12]:
np.exp(np.log(5))

Out[12]:
4.9999999999999991