Wexion.net

Learn how to calculate exponential growth and decay with simple formulas and examples. Perfect for students and beginners in math.

Published by Wex - Tue Aug 27 2024

I was asked recently about exponential growth - more specifically if a fungus was `0.5g`

at `12:00`

and was `4.0g`

at `20:00`

then how much fungus was present at `05:00`

that morning?

Note: To work this out I first take a seemingly unscientific approach of guessing - don't get too frustrated with me! This is just the first step towards the final goal of having a solid mathematical equation.

After a bit of head-scratching, I turned to a trusty spreadsheet. I started with one column for a timeline and a second for the values that we know already. The task is to fill in the blanks.

Then I add a third column for the values I'm going to calculate. I already have a basic knowledge of how exponential growth works - a value increases by a fixed percentage on each iteration. Each iteration for us here is per hour, and the fixed percentage is what we're trying to calculate. For this early experiment, I'm going to guess that percentage - which I'm going to call 'growth rate'. I'm going to start with a growth value of `1.1`

. This means that if at `12:00`

there was `0.5g`

then an hour later at `13:00`

the amount would be `0.5 * 1.1 = 0.55`

, then from `13:00`

to `14:00`

it increases again:* *`0.55 * 1.1 = 0.605`

and so on.

To do this in the spreadsheet we can add a formula to the cell beneath a fixed value like so:

Here I've added a third column where I'm going to do the calculations. We have our 'fixed origin' - that's the number we're going to start with and the 'growth rate' at the top, which I've currently set at my guess of `1.1`

. The formula in cell `C16`

is `=C15*$C$2`

- the '$' symbol tells the spreadsheet not to change the following reference as we copy the formula around the sheet, which means that 'C2' will always be 'C2'. If we copy-paste this formula into the next cell down it automatically becomes `=C16*$C$2`

. Then C17, C18, etc... so we're always referencing the cell before the one the formula is in, and the cell 'C2' where the growth rate is.

As you can see, the value we want at `20:00`

is `4.0`

, but it's currently coming out at `1.1`

- way too low. So now we can tweak the growth rate at the top and all the numbers will change accordingly. Let's put the growth rate up to `1.5`

:

Hmm, now the target value has gone up to `12.8`

- too high. So we know the growth rate we're looking for is somewhere between `1.1`

and `1.5`

- we can keep adding more decimal places to the growth value to get ever closer to our target number, going up a little bit if it's too high and down a little bit if it's too low. Here's a few shots of me doing that:

It looks like `1.297`

is the value that fits our growth rate to get to `4.0g`

at `20:00`

. Looking back at the original question - we want to know how much fungus was there at 05:00. So far we've only gone ahead in time from 12:00 - to go back in time we need to calculate the 'decay rate' of the fungus. Imagine you film the fungus growing, and then watch that clip in reverse - you would see that fungus shrink; that's what we're trying to do - only mathematically. Because we're reversing the operation, the opposite of multiplying each time is going to be dividing each time. So let's put a division formula in the cell above our 'fixed origin' - it's the same formula as growth only using divide instead of multiply: `=C15/$C$2`

.

Then we can copy-paste that formula upwards:

Now you can see we know that the amount of fungus at `05:00`

is `0.08g`

. Huzzah! We've answered the question. Technically we're done and we can walk away - but there's a little irksome bit when we did that bit of guessing. The number `1.297`

we found was only found by trial-and-error, which isn't very scientific. In fact, if we extend the number of decimal places in the spreadsheet we can see a problem:

The value we've calculated at 20:00 is actually 4.00396076 - and not exactly 4.00000000. This means our growth rate must be ever so slightly too high, which in turn means that the value at 05:00 of 0.08098231 must be slightly off too. Time to roll up our sleeves and get into some mathematics.

You might be wondering why we didn't start here and avoid all that messing about with spreadsheets - well, now we have the spreadsheet method we have a half-decent way of checking that any mathematical solution we come up with works. You can look up exponential growth formulas online, and even find a few calculators that'll just do it all for you - but that doesn't help you understand the reasons why the formulas or calculators work. Now that we have a good grasp of exponential growth and decay we can make tracks towards the 'proper solution'.

If we write out the equations for the first few values - as calculated from the 'fixed origin' they each build on the previous one like this:

```
12:00: 0.5 = 0.5
13:00: 0.5 * 1.297 = 0.6485
14:00: 0.5 * 1.297 * 1.297 = 0.8411045
15:00: 0.5 * 1.297 * 1.297 * 1.297 = 1.09091254
```

As you can see, we just keep multiplying by increasing amounts of 1.297 - in mathematics multiplying a number by itself several times is known as 'powers of'. So, if we want to multiply 1.297 by itself 5 times we can say "*1.297 to the power of 5*" - and we have a symbol for it too, we use `^`

like this: `1.297^5`

. It's a symbol supposed by most calculators, you can even type that into Google and it'll give you the right answer. So we can rewrite the above in a different way:

```
12:00: 0.5 = 0.5
13:00: 0.5 * 1.297^1 = 0.6485
14:00: 0.5 * 1.297^2 = 0.8411045
15:00: 0.5 * 1.297^3 = 1.09091254
```

I could add `* 1,297^0`

to the first entry to keep things tidy as any value to the power of 0 equals 1, which is somewhat beyond this article but a bit like how 0+0=0 it also follows that 1*1=1. 1 and 0 are quite special in mathematics, but let's avoid that rabbit hole for now. Now we've got something resembling an equation we can spot a pattern in that each row is 'to the power of' the number of hours from the origin. This means we can combine all these rows into one line:

`fixed-origin * 1.297 ^ number-of-hours-passed = fungus-amount`

You can test this out, put any number of hours into the equation and the result should match what we have in the spreadsheet. We have an equation at last, but it still doesn't give us the super-accurate growth rate value we're after. However, we can do some re-arrangement such that the value we're after is alone on one side of the equation. First we divide both sides by `fixed-origin`

which gets rid of it from the side with the number we're after:

`1.297 ^ number-of-hours-passed = fungus-amount / fixed-origin`

In order to reverse a power-of we use an inverted value of that power. To invert a power we power by one divided by that power (yes, English fails there). To explain it more easily: 2`^4`

=16 and 16`^(1/4)`

=2. Here you can see that to get from 2 to 16 we 'power by 4' and then to get back from 16 to 2 we 'power by 1/4'. Applying that to our equation we get:

`1.297 = (fungus-amount / fixed-origin) ^ (1 / number-of-hours-passed)`

I've added some brackets around things so it's easier to read. We now really have a magical equation it's time to plug in our original values and see how accurate we were with our guess of `1.297`

, remember our fungus amount at its origin was `0.5`

, and it grew to be `4.0`

after `8`

hours. Putting those numbers in:

`(4.0 / 0.5) ^ (1 / 8) = 1.2968395547`

We can update our first equation with this number, or we can put the calculation itself into the equation:

```
fixed-origin * 1.2968395547 ^ number-of-hours-passed = fungus-amount
fixed-origin * ((4.0 / 0.5) ^ (1 / 8)) ^ number-of-hours-passed = fungus-amount
```

Finally, because the original question asked for an earlier value than our origin we need to calculate decay, to do that we learnt we divide instead of multiply, and so 7 hours ago (05:00) from our origin when the fungus size was `0.5`

would be:

`0.5 / 1.2968395547 ^ 7 = 0.08105247214`

In our rudimentary spreadsheet answer, we got `0.08`

. With our equation, we got a more accurate `0.08105247214`

. Which is a win for mathematics.

`growth-rate = (later-value / earlier-value) ^ (1 / time-passed)`

If we have two values and a duration between those values, and we know the value increases exponentially, then we can calculate what that value will be (or was) at any point in time.

About the author

Wex is a passionate creator and seasoned technologist, serving as a CTO and full-stack mobile developer. With a deep love for mathematics and all forms of creation—from coding and woodworking to gardening and cooking—Wex thrives on the challenge of bringing ideas to life. Whether he's crafting innovative software solutions or getting his hands dirty with DIY projects, Wex is always eager to explore new ways to create and learn.