# Population Growth Calculator

> Projects a population over a number of periods with discrete exponential growth P0(1 + r)^t, continuous exponential growth P0·e^(rt) or the logistic model with a carrying capacity K, and reports the final size, growth multiple, doubling time and a period-by-period schedule.

- Calculator id: `population-growth` · Category: Biology, Earth & Space (`science`) · Tool name: `calculate_population_growth`
- Canonical page: https://tttkmbb.com/science/population-growth · This document: https://tttkmbb.com/science/population-growth.md · JSON definition: https://tttkmbb.com/science/population-growth.json

## Purpose

Projects a population over a number of periods with discrete exponential growth P0(1 + r)^t, continuous exponential growth P0·e^(rt) or the logistic model with a carrying capacity K, and reports the final size, growth multiple, doubling time and a period-by-period schedule.

**Use when:** You need the future size of a population (organisms, cells, people, users) from a starting size and a per-period growth rate, with or without a carrying capacity, or its doubling time.

**Do not use when:** You are modelling money (use compound-interest), radioactive or first-order decay (use half-life), or want the doubling time from two cell counts (use cell-doubling-time).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `initial_population` | number |  | required | Population size at period 0. (> 0, max 1000000000000000) |
| `growth_rate_percent` | number | % | required | Growth rate r per period in percent (3 means 3 % per period); negative for decline. For the logistic model this is the intrinsic rate r. (> -100, max 10000) |
| `periods` | number |  | required | Number of periods t (years, generations, hours – any unit, the same one the rate refers to). (> 0, max 100000) |
| `model` | enum: exponential_discrete \| exponential_continuous \| logistic |  | optional, default "exponential_discrete" | Growth model. The logistic model needs carrying_capacity. |
| `carrying_capacity` | number |  | optional | Maximum sustainable population for the logistic model; ignored by the exponential models. (> 0, max 1000000000000000000) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `model_used` | string |  | The growth equation applied. |
| `growth_rate_per_period` | number |  | growth_rate_percent / 100. |
| `final_population` | number |  | P(t) from the chosen model. |
| `absolute_growth` | number |  | P(t) − P0. |
| `growth_multiple` | number |  | P(t) / P0. |
| `doubling_time_periods` | number | periods | ln 2 / ln(1 + r) (discrete) or ln 2 / r (continuous); only for exponential growth with r > 0. |
| `percent_of_carrying_capacity` | number | % | 100 × P(t) / K (logistic model only). |
| `schedule` | list |  | Rows of period and population from 0 to t (every period up to 50 periods, then evenly spaced steps; at most 52 rows). |

## Formula

`Discrete: P(t) = P0 × (1 + r)^t, doubling time = ln 2 / ln(1 + r); continuous: P(t) = P0 × e^(rt), doubling time = ln 2 / r; logistic: P(t) = K / (1 + ((K − P0) / P0) × e^(−rt)), with r = growth_rate_percent / 100`

The discrete model compounds once per period (as in annual census data); the continuous model is its instantaneous-rate counterpart. The logistic (Verhulst) model uses the continuous intrinsic rate r and approaches K asymptotically, so no doubling time is reported for it.

## Data Sources

- Wikipedia – Population growth — https://en.wikipedia.org/wiki/Population_growth (reference, retrieved 2026-09-24)
- Wikipedia – Logistic function — https://en.wikipedia.org/wiki/Logistic_function (reference, retrieved 2026-09-24)
- OpenStax Biology 2e – 45.3 Environmental Limits to Population Growth — https://openstax.org/books/biology-2e/pages/45-3-environmental-limits-to-population-growth (textbook, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/population-growth?initial_population=…&growth_rate_percent=…&periods=…`
- `POST https://tttkmbb.com/api/v1/calculate/population-growth` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/population-growth · OpenAPI operationId `calculate_population_growth` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "population-growth", "inputs": {…}}`

## Example

- 1,000 at 3 % per year for 10 years (discrete): inputs `{"initial_population":1000,"growth_rate_percent":3,"periods":10,"model":"exponential_discrete"}` → `{"final_population":1343.92,"absolute_growth":343.92,"growth_multiple":1.3439,"doubling_time_periods":23.45}`
- Logistic: P0 1,000, K 10,000, r 30 % for 10 periods: inputs `{"initial_population":1000,"growth_rate_percent":30,"periods":10,"model":"logistic","carrying_capacity":10000}` → `{"final_population":6905.68,"growth_multiple":6.9057,"percent_of_carrying_capacity":69.06}`

```
GET https://tttkmbb.com/api/v1/calculate/population-growth?initial_population=1000&growth_rate_percent=3&periods=10&model=exponential_discrete
```

## Limitations

You are modelling money (use compound-interest), radioactive or first-order decay (use half-life), or want the doubling time from two cell counts (use cell-doubling-time). The discrete model compounds once per period (as in annual census data); the continuous model is its instantaneous-rate counterpart. The logistic (Verhulst) model uses the continuous intrinsic rate r and approaches K asymptotically, so no doubling time is reported for it. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Discrete or continuous?**

Use discrete when growth is reported per period (e.g. 3 % per year from census data); use continuous for a rate defined instantaneously (r in dN/dt = rN). At 3 % the two differ by less than 0.5 % after 10 periods, but the gap grows with the rate.

**Why is there no doubling time for the logistic model?**

Logistic growth slows as the population approaches K, so the time to double depends on the current size; it is only well defined for exponential growth.

**Can the population decline?**

Yes: a negative growth rate gives a shrinking population (down to −100 % exclusive for the discrete model); no doubling time is reported then.

## Related

- [Cell Doubling Time Calculator](https://tttkmbb.com/science/cell-doubling-time.md) — Derive the growth rate and doubling time from two counts.
- [Compound Interest Calculator](https://tttkmbb.com/finance/compound-interest.md) — The same discrete formula applied to money.
- [Half-Life Calculator](https://tttkmbb.com/chemistry/half-life.md) — Exponential decrease expressed as a half-life.
