Skip to ContentGo to accessibility pageKeyboard shortcuts menu
OpenStax Logo
Calculus Volume 2

4.4 The Logistic Equation

Calculus Volume 24.4 The Logistic Equation

Learning Objectives

  • 4.4.1 Describe the concept of environmental carrying capacity in the logistic model of population growth.
  • 4.4.2 Draw a direction field for a logistic equation and interpret the solution curves.
  • 4.4.3 Solve a logistic equation and interpret the results.

Differential equations can be used to represent the size of a population as it varies over time. We saw this in an earlier chapter in the section on exponential growth and decay, which is the simplest model. A more realistic model includes other factors that affect the growth of the population. In this section, we study the logistic differential equation and see how it applies to the study of population dynamics in the context of biology.

Population Growth and Carrying Capacity

To model population growth using a differential equation, we first need to introduce some variables and relevant terms. The variable t.t. will represent time. The units of time can be hours, days, weeks, months, or even years. Any given problem must specify the units used in that particular problem. The variable PP will represent population. Since the population varies over time, it is understood to be a function of time. Therefore we use the notation P(t)P(t) for the population as a function of time. If P(t)P(t) is a differentiable function, then the first derivative dPdtdPdt represents the instantaneous rate of change of the population as a function of time.

In Exponential Growth and Decay, we studied the exponential growth and decay of populations and radioactive substances. An example of an exponential growth function is P(t)=P0ert.P(t)=P0ert. In this function, P(t)P(t) represents the population at time t,P0t,P0 represents the initial population (population at time t=0),t=0), and the constant r>0r>0 is called the growth rate. Figure 4.18 shows a graph of P(t)=100e0.03t.P(t)=100e0.03t. Here P0=100P0=100 and r=0.03.r=0.03.

A graph of an exponential function p(t) = 100 e ^ (0.03 t). It is an increasing concave up function starting in quadrant 2, crosses the y axis at (0, 100), and increases in quadrant 1.
Figure 4.18 An exponential growth model of population.

We can verify that the function P(t)=P0ertP(t)=P0ert satisfies the initial-value problem

dPdt=rP,P(0)=P0.dPdt=rP,P(0)=P0.

This differential equation has an interesting interpretation. The left-hand side represents the rate at which the population increases (or decreases). The right-hand side is equal to a positive constant multiplied by the current population. Therefore the differential equation states that the rate at which the population increases is proportional to the population at that point in time. Furthermore, it states that the constant of proportionality never changes.

One problem with this function is its prediction that as time goes on, the population grows without bound. This is unrealistic in a real-world setting. Various factors limit the rate of growth of a particular population, including birth rate, death rate, food supply, predators, and so on. The growth constant rr usually takes into consideration the birth and death rates but none of the other factors, and it can be interpreted as a net (birth minus death) percent growth rate per unit time. A natural question to ask is whether the population growth rate stays constant, or whether it changes over time. Biologists have found that in many biological systems, the population grows until a certain steady-state population is reached. This possibility is not taken into account with exponential growth. However, the concept of carrying capacity allows for the possibility that in a given area, only a certain number of a given organism or animal can thrive without running into resource issues.

Definition

The carrying capacity of an organism in a given environment is defined to be the maximum population of that organism that the environment can sustain indefinitely.

We use the variable KK to denote the carrying capacity. The growth rate is represented by the variable r.r. Using these variables, we can define the logistic differential equation.

Definition

Let KK represent the carrying capacity for a particular organism in a given environment, and let rr be a real number that represents the growth rate. The function P(t)P(t) represents the population of this organism as a function of time t,t, and the constant P0P0 represents the initial population (population of the organism at time t=0).t=0). Then the logistic differential equation is

dPdt=rP(1PK)dPdt=rP(1PK)
(4.8)

Media

See this website for more information on the logistic equation.

The logistic equation was first published by Pierre Verhulst in 1845.1845. This differential equation can be coupled with the initial condition P(0)=P0P(0)=P0 to form an initial-value problem for P(t).P(t).

Suppose that the initial population is small relative to the carrying capacity. Then PKPK is small, possibly close to zero. Thus, the quantity in parentheses on the right-hand side of Equation 4.8 is close to 1,1, and the right-hand side of this equation is close to rP.rP. If r>0,r>0, then the population grows rapidly, resembling exponential growth.

However, as the population grows, the ratio PKPK also grows, because KK is constant. If the population remains below the carrying capacity, then PKPK is less than 1,1, so 1PK>0.1PK>0. Therefore the right-hand side of Equation 4.8 is still positive, but the quantity in parentheses gets smaller, and the growth rate decreases as a result. If P=KP=K then the right-hand side is equal to zero, and the population does not change.

Now suppose that the population starts at a value higher than the carrying capacity. Then PK>1,PK>1, and 1PK<0.1PK<0. Then the right-hand side of Equation 4.8 is negative, and the population decreases. As long as P>K,P>K, the population decreases. It never actually reaches KK because dPdtdPdt will get smaller and smaller, but the population approaches the carrying capacity as tt approaches infinity. This analysis can be represented visually by way of a phase line. A phase line describes the general behavior of a solution to an autonomous differential equation, depending on the initial condition. For the case of a carrying capacity in the logistic equation, the phase line is as shown in Figure 4.19.

A diagram of the phase line for the given differential equation. A vertical blue line with arrows on either end has two points marked, at P = K and P = 0, with K > 0. Red arrows point up between 0 and K and down below zero and above K.
Figure 4.19 A phase line for the differential equation dPdt=rP(1PK).dPdt=rP(1PK).

This phase line shows that when PP is less than zero or greater than K,K, the population decreases over time. When PP is between 00 and K,K, the population increases over time.

Example 4.14

Chapter Opener: Examining the Carrying Capacity of a Deer Population

This is a photograph of a deer.
Figure 4.20 (credit: modification of work by Rachel Kramer, Flickr)

Let’s consider the population of white-tailed deer (Odocoileus virginianus) in the state of Kentucky. The Kentucky Department of Fish and Wildlife Resources (KDFWR) sets guidelines for hunting and fishing in the state. Before the hunting season of 2004,2004, it estimated a population of 900,000900,000 deer. Johnson notes: “A deer population that has plenty to eat and is not hunted by humans or other predators will double every three years.” (George Johnson, “The Problem of Exploding Deer Populations Has No Attractive Solutions,” January 12,2001,12,2001, accessed April 9, 2015, http://www.txtwriter.com/onscience/Articles/deerpops.html.) This observation corresponds to a rate of increase r=ln(2)3=0.2311,r=ln(2)3=0.2311, so the approximate growth rate is 23.11%23.11% per year. (This assumes that the population grows exponentially, which is reasonable––at least in the short term––with plentiful food supply and no predators.) The KDFWR also reports deer population densities for 3232 counties in Kentucky, the average of which is approximately 2727 deer per square mile. Suppose this is the deer density for the whole state (39,732(39,732 square miles). The carrying capacity KK is 39,73239,732 square miles times 2727 deer per square mile, or 1,072,7641,072,764 deer.

  1. For this application, we have P0=900,000,K=1,072,764,P0=900,000,K=1,072,764, and r=0.2311.r=0.2311. Substitute these values into Equation 4.8 and form the initial-value problem.
  2. Solve the initial-value problem from part a.
  3. According to this model, what will be the population in 33 years? Recall that the doubling time predicted by Johnson for the deer population was 33 years. How do these values compare?
  4. Suppose the population managed to reach 1,200,0001,200,000 deer. What does the logistic equation predict will happen to the population in this scenario?

Solving the Logistic Differential Equation

The logistic differential equation is an autonomous differential equation, so we can use separation of variables to find the general solution, as we just did in Example 4.14.

Step 1: Setting the right-hand side equal to zero leads to P=0P=0 and P=KP=K as constant solutions. The first solution indicates that when there are no organisms present, the population will never grow. The second solution indicates that when the population starts at the carrying capacity, it will never change.

Step 2: Rewrite the differential equation in the form

dPdt=rP(KP)K.dPdt=rP(KP)K.

Then multiply both sides by dtdt and divide both sides by P(KP).P(KP). This leads to

dPP(KP)=rKdt.dPP(KP)=rKdt.

Multiply both sides of the equation by KK and integrate:

KP(KP)dP=rdt.KP(KP)dP=rdt.

The left-hand side of this equation can be integrated using partial fraction decomposition. We leave it to you to verify that

KP(KP)=1P+1KP.KP(KP)=1P+1KP.

Then the equation becomes

1P+1KPdP=rdtln|P|ln|KP|=rt+Cln|PKP|=rt+C.1P+1KPdP=rdtln|P|ln|KP|=rt+Cln|PKP|=rt+C.

Now exponentiate both sides of the equation to eliminate the natural logarithm:

eln|PKP|=ert+C|PKP|=eCert.eln|PKP|=ert+C|PKP|=eCert.

We define C1=ecC1=ec and, noting that K,P>0K,P>0 and P<KP<K, so that PKP>0PKP>0 we can drop the absolute value sign, so that the equation becomes

PKP=C1ert.PKP=C1ert.
(4.9)

To solve this equation for P(t),P(t), first multiply both sides by KPKP and collect the terms containing PP on the left-hand side of the equation:

P=C1ert(KP)P=C1KertC1PertP+C1Pert=C1Kert.P=C1ert(KP)P=C1KertC1PertP+C1Pert=C1Kert.

Next, factor PP from the left-hand side and divide both sides by the other factor:

P(1+C1ert)=C1KertP(t)=C1Kert1+C1ert.P(1+C1ert)=C1KertP(t)=C1Kert1+C1ert.
(4.10)

The last step is to determine the value of C1.C1. The easiest way to do this is to substitute t=0t=0 and P0P0 in place of PP in Equation 4.9 and solve for C1:C1:

PKP=C1ertP0KP0=C1er(0)C1=P0KP0.PKP=C1ertP0KP0=C1er(0)C1=P0KP0.

Finally, substitute the expression for C1C1 into Equation 4.10:

P(t)=C1Kert1+C1ert=P0KP0Kert1+P0KP0ertP(t)=C1Kert1+C1ert=P0KP0Kert1+P0KP0ert

Now multiply the numerator and denominator of the right-hand side by (KP0)(KP0) and simplify:

P(t)=P0KP0Kert1+P0KP0ert=P0KP0Kert1+P0KP0ert·KP0KP0=P0Kert(KP0)+P0ert.P(t)=P0KP0Kert1+P0KP0ert=P0KP0Kert1+P0KP0ert·KP0KP0=P0Kert(KP0)+P0ert.

We state this result as a theorem.

Theorem 4.2

Solution of the Logistic Differential Equation

Consider the logistic differential equation subject to an initial population of P0P0 with carrying capacity KK and growth rate r.r. The solution to the corresponding initial-value problem is given by

P(t)=P0Kert(KP0)+P0ert.P(t)=P0Kert(KP0)+P0ert.
(4.11)

Now that we have the solution to the initial-value problem, we can choose values for P0,r,P0,r, and KK and study the solution curve. For example, in Example 4.14 we used the values r=0.2311,K=1,072,764,r=0.2311,K=1,072,764, and an initial population of 900,000900,000 deer. This leads to the solution

P(t)=P0Kert(KP0)+P0ert=900,000(1,072,764)e0.2311t(1,072,764900,000)+900,000e0.2311t=900,000(1,072,764)e0.2311t172,764+900,000e0.2311t.P(t)=P0Kert(KP0)+P0ert=900,000(1,072,764)e0.2311t(1,072,764900,000)+900,000e0.2311t=900,000(1,072,764)e0.2311t172,764+900,000e0.2311t.

Dividing top and bottom by 900,000900,000 gives

P(t)=1,072,764e0.2311t0.19196+e0.2311t.P(t)=1,072,764e0.2311t0.19196+e0.2311t.

This is the same as the original solution. The graph of this solution is shown again in blue in Figure 4.23, superimposed over the graph of the exponential growth model with initial population 900,000900,000 and growth rate 0.23110.2311 (appearing in green). The red dashed line represents the carrying capacity, and is a horizontal asymptote for the solution to the logistic equation.

A graph showing exponential and logistic growth for the same initial population of 900,000 organisms and growth rate of 23.11%. Both begin in quadrant two close to the x axis as increasing concave up curves. The exponential growth curve continues to grow, passing P = 1,072,764 while still in quadrant two. The logistic growth curve changes concavity, crosses the x axis at P_0 = 900,000, and asymptotically approaches P = 1,072,764.
Figure 4.23 A comparison of exponential versus logistic growth for the same initial population of 900,000900,000 organisms and growth rate of 23.11%.23.11%.

Working under the assumption that the population grows according to the logistic differential equation, this graph predicts that approximately 2020 years earlier (1984),(1984), the growth of the population was very close to exponential. The net growth rate at that time would have been around 23.1%23.1% per year. As time goes on, the two graphs separate. This happens because the population increases, and the logistic differential equation states that the growth rate decreases as the population increases. At the time the population was measured (2004),(2004), it was close to carrying capacity, and the population was starting to level off.

The solution to the logistic differential equation has a point of inflection. To find this point, set the second derivative equal to zero:

P(t)=P0Kert(KP0)+P0ertP(t)=rP0K(KP0)ert((KP0)+P0ert)2P(t)=r2P0K(KP0)2ertr2P02K(KP0)e2rt((KP0)+P0ert)3=r2P0K(KP0)ert((KP0)P0ert)((KP0)+P0ert)3.P(t)=P0Kert(KP0)+P0ertP(t)=rP0K(KP0)ert((KP0)+P0ert)2P(t)=r2P0K(KP0)2ertr2P02K(KP0)e2rt((KP0)+P0ert)3=r2P0K(KP0)ert((KP0)P0ert)((KP0)+P0ert)3.

Setting the numerator equal to zero,

r2P0K(KP0)ert((KP0)P0ert)=0.r2P0K(KP0)ert((KP0)P0ert)=0.

As long as P0K,P0K, the entire quantity before and including ertert is nonzero, so we can divide it out:

(KP0)P0ert=0.(KP0)P0ert=0.

Solving for t,t,

P0ert=KP0ert=KP0P0lnert=lnKP0P0rt=lnKP0P0t=1rlnKP0P0.P0ert=KP0ert=KP0P0lnert=lnKP0P0rt=lnKP0P0t=1rlnKP0P0.

Notice that if P0>K,P0>K, then this quantity is undefined, and the graph does not have a point of inflection. In the logistic graph, the point of inflection can be seen as the point where the graph changes from concave up to concave down. This is where the “leveling off” starts to occur, because the net growth rate becomes slower as the population starts to approach the carrying capacity.

Checkpoint 4.14

A population of rabbits in a meadow is observed to be 200200 rabbits at time t=0.t=0. After a month, the rabbit population is observed to have increased by 4%.4%. Using an initial population of 200200 and a growth rate of 0.04,0.04, with a carrying capacity of 750750 rabbits,

  1. Write the logistic differential equation and initial condition for this model.
  2. Draw a slope field for this logistic differential equation, and sketch the solution corresponding to an initial population of 200200 rabbits.
  3. Solve the initial-value problem for P(t).P(t).
  4. Use the solution to predict the population after 11 year.

Student Project

Student Project: Logistic Equation with a Threshold Population

An improvement to the logistic model includes a threshold population. The threshold population is defined to be the minimum population that is necessary for the species to survive. We use the variable TT to represent the threshold population. A differential equation that incorporates both the threshold population TT and carrying capacity KK is

dPdt=rP(1PK)(1PT)dPdt=rP(1PK)(1PT)
(4.12)

where rr represents the growth rate, as before.

  1. The threshold population is useful to biologists and can be utilized to determine whether a given species should be placed on the endangered list. A group of Australian researchers say they have determined the threshold population for any species to survive: 50005000 adults. (Catherine Clabby, “A Magic Number,” American Scientist 98(1): 24, doi:10.1511/2010.82.24. accessed April 9, 2015, http://www.americanscientist.org/issues/pub/a-magic-number). Therefore we use T=5000T=5000 as the threshold population in this project. Suppose that the environmental carrying capacity in Montana for elk is 25,000.25,000. Set up Equation 4.12 using the carrying capacity of 25,00025,000 and threshold population of 5000.5000. Assume an annual net growth rate of 18%.18%.
  2. Draw the direction field for the differential equation from step 1,1, along with several solutions for different initial populations. What are the constant solutions of the differential equation? What do these solutions correspond to in the original population model (i.e., in a biological context)?
  3. What is the limiting population for each initial population you chose in step 2?2? (Hint: use the slope field to see what happens for various initial populations, i.e., look for the horizontal asymptotes of your solutions.)
  4. This equation can be solved using the method of separation of variables. However, it is very difficult to get the solution as an explicit function of t.t. Using an initial population of 18,00018,000 elk, solve the initial-value problem and express the solution as an implicit function of t,t, or solve the general initial-value problem, finding a solution in terms of r,K,T,andP0.r,K,T,andP0.

Section 4.4 Exercises

For the following problems, consider the logistic equation in the form P=CPP2.P=CPP2. Draw the directional field and find the stability of the equilibria.

168.

C = 3 C = 3

169.

C = 0 C = 0

170.

C = −3 C = −3

171.

Solve the logistic equation for C=10C=10 and an initial condition of P(0)=2.P(0)=2.

172.

Solve the logistic equation for C=−10C=−10 and an initial condition of P(0)=2.P(0)=2.

173.

A population of deer inside a park has a carrying capacity of 200200 and a growth rate of 2%.2%. If the initial population is 5050 deer, what is the population of deer at any given time?

174.

A population of frogs in a pond has a growth rate of 5%.5%. If the initial population is 10001000 frogs and the carrying capacity is 6000,6000, what is the population of frogs at any given time?

175.

[T] Bacteria grow at a rate of 20%20% per hour in a petri dish. If there is initially one bacterium and a carrying capacity of 11 million cells, how long does it take to reach 500,000500,000 cells?

176.

[T] Rabbits in a park have an initial population of 1010 and grow at a rate of 4%4% per year. If the carrying capacity is 500,500, at what time does the population reach 100100 rabbits?

177.

[T] Two monkeys are placed on an island. After 55 years, there are 88 monkeys, and the estimated carrying capacity is 2525 monkeys. When does the population of monkeys reach 1616 monkeys?

178.

[T] A butterfly sanctuary is built that can hold 20002000 butterflies, and 400400 butterflies are initially moved in. If after 22 months there are now 800800 butterflies, when does the population get to 15001500 butterflies?

The following problems consider the logistic equation with an added term for depletion, either through death or emigration.

179.

[T] The population of trout in a pond is given by P=0.4P(1P10000)400,P=0.4P(1P10000)400, where 400400 trout are caught per year. Use your calculator or computer software to draw a directional field and draw a few sample solutions. What do you expect for the behavior?

180.

In the preceding problem, what are the stabilities of the equilibria 0<P1<P2?0<P1<P2?

181.

[T] For the preceding problem, use software to generate a directional field for the value f=400.f=400. What are the stabilities of the equilibria?

182.

[T] For the preceding problems, use software to generate a directional field for the value f=600.f=600. What are the stabilities of the equilibria?

183.

[T] For the preceding problems, consider the case where a certain number of fish are added to the pond, or f=−200.f=−200. What are the nonnegative equilibria and their stabilities?

It is more likely that the amount of fishing is governed by the current number of fish present, so instead of a constant number of fish being caught, the rate is proportional to the current number of fish present, with proportionality constant k,k, as

P=0.4P(1P10000)kP.P=0.4P(1P10000)kP.

184.

[T] For the previous fishing problem, draw a directional field assuming k=0.1.k=0.1. Draw some solutions that exhibit this behavior. What are the equilibria and what are their stabilities?

185.

[T] Use software or a calculator to draw directional fields for k=0.4.k=0.4. What are the nonnegative equilibria and their stabilities?

186.

[T] Use software or a calculator to draw directional fields for k=0.6.k=0.6. What are the equilibria and their stabilities?

187.

Solve this equation, assuming a value of k=0.05k=0.05 and an initial condition of 20002000 fish.

188.

Solve this equation, assuming a value of k=0.05k=0.05 and an initial condition of 50005000 fish.

The following problems add in a minimal threshold value for the species to survive, T,T, which changes the differential equation to P(t)=rP(1PK)(1TP).P(t)=rP(1PK)(1TP).

189.

Draw the directional field of the threshold logistic equation, assuming K=10,r=0.1,T=2.K=10,r=0.1,T=2. When does the population survive? When does it go extinct?

190.

For the preceding problem, solve the logistic threshold equation, assuming the initial condition P(0)=P0.P(0)=P0.

191.

Bengal tigers in a conservation park have a carrying capacity of 100100 and need a minimum of 1010 to survive. If they grow in population at a rate of 1%1% per year, with an initial population of 1515 tigers, solve for the number of tigers present.

192.

A forest containing ring-tailed lemurs in Madagascar has the potential to support 50005000 individuals, and the lemur population grows at a rate of 5%5% per year. A minimum of 500500 individuals is needed for the lemurs to survive. Given an initial population of 600600 lemurs, solve for the population of lemurs.

193.

The population of mountain lions in Northern Arizona has an estimated carrying capacity of 250250 and grows at a rate of 0.25%0.25% per year and there must be 2525 for the population to survive. With an initial population of 3030 mountain lions, how many years will it take to get the mountain lions off the endangered species list (at least 100)?100)?

The following questions consider the Gompertz equation, a modification for logistic growth, which is often used for modeling cancer growth, specifically the number of tumor cells.

194.

The Gompertz equation is given by P(t)=αln(KP(t))P(t).P(t)=αln(KP(t))P(t). Draw the directional fields for this equation assuming all parameters are positive, and given that K=1.K=1.

195.

Assume that for a population, K=1000K=1000 and α=0.05.α=0.05. Draw the directional field associated with this differential equation and draw a few solutions. What is the behavior of the population?

196.

Solve the Gompertz equation for generic αα and KK and P(0)=P0.P(0)=P0.

197.

[T] The Gompertz equation has been used to model tumor growth in the human body. Starting from one tumor cell on day 11 and assuming α=0.1α=0.1 and a carrying capacity of 1010 million cells, how long does it take to reach “detection” stage at 55 million cells?

198.

[T] It is estimated that the world human population reached 33 billion people in 19591959 and 66 billion in 1999.1999. Assuming a carrying capacity of 1616 billion humans, write and solve the differential equation for logistic growth, and determine what year the population reached 77 billion.

199.

[T] It is estimated that the world human population reached 33 billion people in 19591959 and 66 billion in 1999.1999. Assuming a carrying capacity of 1616 billion humans, write and solve the differential equation for Gompertz growth, and determine what year the population reached 77 billion. Was logistic growth or Gompertz growth more accurate, considering world population reached 77 billion on October 31,2011?31,2011?

200.

Show that the population grows fastest when it reaches half the carrying capacity for the logistic equation P=rP(1PK).P=rP(1PK).

201.

When does population increase the fastest in the threshold logistic equation P(t)=rP(1PK)(1TP)?P(t)=rP(1PK)(1TP)?

202.

When does population increase the fastest for the Gompertz equation P(t)=αln(KP(t))P(t)?P(t)=αln(KP(t))P(t)?

Below is a table of the populations of whooping cranes in the wild from 1940to2000.1940to2000. The population rebounded from near extinction after conservation efforts began. The following problems consider applying population models to fit the data. Assume a carrying capacity of 10,00010,000 cranes. Fit the data assuming years since 19401940 (so your initial population at time 00 would be 2222 cranes).

Year (years since conservation began) Whooping Crane Population
1940(0)1940(0) 2222
1950(10)1950(10) 3131
1960(20)1960(20) 3636
1970(30)1970(30) 5757
1980(40)1980(40) 9191
1990(50)1990(50) 159159
2000(60)2000(60) 256256
Source: https://www.savingcranes.org/images/stories/site_images/conservation/whooping_crane/pdfs/historic_wc_numbers.pdf
203.

Find the equation and parameter rr that best fit the data for the logistic equation.

204.

Find the equation and parameters rr and TT that best fit the data for the threshold logistic equation.

205.

Find the equation and parameter αα that best fit the data for the Gompertz equation.

206.

Graph all three solutions and the data on the same graph. Which model appears to be most accurate?

207.

Using the three equations found in the previous problems, estimate the population in 20102010 (year 7070 after conservation). The real population measured at that time was 437.437. Which model is most accurate?

Citation/Attribution

This book may not be used in the training of large language models or otherwise be ingested into large language models or generative AI offerings without OpenStax's permission.

Want to cite, share, or modify this book? This book uses the Creative Commons Attribution-NonCommercial-ShareAlike License and you must attribute OpenStax.

Attribution information
  • If you are redistributing all or part of this book in a print format, then you must include on every physical page the following attribution:
    Access for free at https://openstax.org/books/calculus-volume-2/pages/1-introduction
  • If you are redistributing all or part of this book in a digital format, then you must include on every digital page view the following attribution:
    Access for free at https://openstax.org/books/calculus-volume-2/pages/1-introduction
Citation information

© Jul 25, 2024 OpenStax. Textbook content produced by OpenStax is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike License . The OpenStax name, OpenStax logo, OpenStax book covers, OpenStax CNX name, and OpenStax CNX logo are not subject to the Creative Commons license and may not be reproduced without the prior and express written consent of Rice University.