| SOCR ≫ | BPAD Website ≫ | BPAD GitHub ≫ |
Exponential functions are some of the most important and prevalent functions in biophysics, appearing most often when describing certain rates of growth and decay of living and chemical systems, but also in the functions governing certain probability distributions and mass transport across membranes, among others.
Mathematically: \[\underbrace{f(x)}_{value}=a\times b^x; \ \ \underbrace{a\in \mathbb{R}, b\in \mathbb{R}^+, b\not= 1}_{parameters}, \underbrace{x\in \mathbb{R}}_{argument}\]
But, how do we know if a process is exponential, or at least, can be approximated as one?
In general, an exponential growth process (\(b > 1\)) is a phenomena where the rate of increase of a quantity is proportional to the present value of that quantity (Hobbie & Roth, Intermediate Physics for Medicine and Biology, 2015). Conversely, an exponential decay process (\(0<b<1\)) is a phenomenon where the rate of decrease of a quantity is proportional to the present value of that quantity. Thus, it is intuitive that the dynamics of a population of sheep may be simulated by a combination of growth and decay exponential models: the present population of sheep at any point in time relies on a certain number of sheep at a previous time (and in the wild, a certain number of predators at a previous time as well).
The following applications/examples/simulations are illustrative of the different types of exponential growth/decay functions that are prevalent in biophysics.
However, before venturing into exponential modeling, a quick aside about mathematical modeling in biology. Unlike those developed in many classical physics areas, biological models are not always developed purely from first-principles (i.e. Newton’s laws, the laws of thermodynamics). Although biologists obviously take care not to violate those laws, biological systems tend to have a level of complexity and diversity that is not always capturable in a simple equation: many aspects of biology are not even quantifiable using the instruments currently available. That being said, it is a skill honed by all scientists working in biology to be able to decide what level of simplification is necessary for the study of the phenomena in question. In many cases, different scientists are focusing on diverse aspects of a particular system, leading to diverse modeling strategies. Note how each of the following examples handles the simplification of systems as we proceed through this section: which aspects of the phenomena are the most important to capture? Which are not as important? What are the limitations of the model? In all cases, it is the underlying assumptions and priorities of the modeling scientist that leads to the final model.
Suppose a savings account the interest rate is \(5\%\) and if the interest is credited to the account once a year (APR). Each year, the account balance increases in value by \(5\%\) of its present value. Starting out with \(\$100\), the end of the first year will add \(\$5\) credit to the account and the new balance will be \(\$ 105\). At the end of the second year, \(5\%\) of \(\$ 105\), i.e., \(\$ 5.25\) is credited to the account and the balance grows by to \(\$110.25\), etc. The annual interest compounding leads to an exponential chain-reaction (account balance increasing):
\[\underbrace{B_o=100}_{principal}; \ B_1=B_o\times (1.00+\underbrace{0.05}_{APR}); \ B_2=B_1\times (1.05)=B_o\times (1.05)^2; \\ B_3=B_2\times (1.05)=B_o\times (1.05)^3;\cdots ; B_n=B_o\times (1.05)^n . \]
Similarly, retirees that spend down their life savings by drawing \(10\%\) distribution annually and assuming the same \(5\%\) APR leads to a decay by \(5\%\) annually of the initial principal, \(\$1,000\).
library(plotly)
time_months <- 1:1200 # 12 months over 100 years
dataGrowth <- 100*(1.05)^(time_months %/% 12)
dataDecay <- 1000*(0.95)^(time_months %/% 12)
df <- data.frame(time_months, dataGrowth, dataDecay)
fig <- plot_ly(df, x = ~time_months)
fig <- fig %>% add_trace(y = ~dataGrowth, name = 'exp Growth model',
mode = 'lines+markers', type="scatter")
fig <- fig %>% add_trace(y = ~dataDecay, name = 'exp Decay model',
mode = 'lines+markers', type="scatter")
fig <- fig %>% layout(title = "Exponential Growth (income) & Decay (expenditure)",
scene = list(
xaxis = list(title = "Time (months)"),
yaxis = list(title = "Account Values (measured quantity)") ))
fig