arrow left
Back to Developer Education

    How to Solve a Discrete Logistic Equation in Matlab

    How to Solve a Discrete Logistic Equation in Matlab

    The logistic equation is a population growth model in which the resources and space are limited. Therefore, the logistic model is a model that factors in the carrying capacity. <!--more--> The carrying capacity is the maximum number of populations that an environment can support without the available resources getting exhausted.

    The objective of this model is to find the maximum population that a given environment can support.

    The ecology sector uses this equation to model the population growth as they assume the reproduction rate to be directly proportional to the current population and the resources available.

    It can also determine the various factors that affect the population growth in a given niche. The good news is that you can program these logistic problems.

    In this article, we will look at how to use Matlab to solve these logistic problems.

    Prerequisites

    To follow through this article, you need to have:

    Overview of the logistic equation

    The logistic model gets its base on the mathematical equation below:

    \begin{cases} X_{t+1} = X_t + KX_t(1-X_t/C)\\X_0 = 10 \end{cases}
    

    Where:

    K = growth rate.

    C = Carrying capacity.

    X_n = The population at a given time.

    n = Time.

    The logistic equation is a more realistic model for population growth. This means that the logistic model looks at the population of any set of organisms at a given time.

    In addition, the logistic model is a model that factors in the carrying capacity. Carrying capacity is the maximum number of individuals that an environment can support.

    The exponential model $A=Ke^{rt}$ assumes an infinite amount of space and resources.

    Let's say, for example, we have a number of rabbits on a given island. The exponential model assumes that it does not matter how many rabbits are on the island; there will always be enough food and space.

    It means that the rabbit population will grow with no limit as time goes.

    Basically, in the real world, the rabbit population will grow, but it will reach a point in which the rabbits run out of resources or space.

    When this happens, they don't grow anymore; they start to level off. This makes the logistic model a little more realistic.

    Matlab code

    We create a function that will help us calculate the logistic equations:

    function logistic_Model
    

    We then define the parameters. In this case, our parameters are, k and c:

    % Parameters
    k = 0.5;    % growth rate
    c = 250;    % Carrying capacity
    

    The next thing that we need to do is to use our initial condition. In the equation of the model, we have x0=10; which is the initial value of our growth rate.

    We are going to define this in our code.

    Note that you can change the parameters and the initial value at any time, depending on what you are handling.

    x0 = 10;
    

    The next thing that we can define is the time information.

    For these discrete equations, we know that time steps forward from 1,2,3,4, e.t.c. It means that we need to tell Matlab the last iteration number we want.

    % Time information
    N_end = 100;     %number of iterations
    

    We are almost at the point at which we've done all the back work. We have set the parameters, initial values, and time information.

    It means we will go ahead and iterate for the solutions. We will do this by storing our iteration values in a vector.

    This is because they are immensely important when counting. So, if we have our vector of solutions values, we will make the first value in that vector our initial value.

    The other thing to note is that Matlab starts indexing at one. It means we will be a bit off in the way in which we are thinking of our initial value.

    Remember, our initial value is 10. So, we will assign this value to be our first index:

    %store the initial value solution in a vector
    x(1) = x0;
    for n = 1:1:N_end-1
    x(n+1) = x(n) + k*x(n)*(1-x(n)/c);
    end
    

    In the above code, the index n will be counting for us every time we go through the loop. In writing the iterations, we consider our equation and update the x.

    This for gives a new solution every time we go through the for loop.

    We will now plot our solution to visualize it. We will plot it against the time information.

    nvec = 1:1:N_end;    %stores n values
    

    This value generates values from 1 to N_end with a space of one and stores them in the nvec variable. We plot the solution against nvec as shown below:

    plot(nvec,x);
    hold on
    

    The primary function of the hold on is to add more solutions to the same plot.

    For example, if this was a coupled system where we had x, y, and z, you can keep on adding these hold on; so that the solution for x will be plotted on the same plot as the solution for y and z.

    For proper understanding and easy use of the code, the general code for the logistic equation will be as follows:

    function logistic_Model
    
    %------------------------------------------
    % Parameters
    k = 0.5;        %growth rate
    c = 250;        % Carrying capacity
    
    %-------------------------------------------
    x0 = 10;         %Initial value
    
    %------------------------------------------
    % Time information
    N_end = 100;     %number of iterations
    
    %------------------------------------------
    %Store initial value in the solution vector
    x(1) = x0;    %First entry in solution vector is initial value
                   %Matlab starts indexing vectors at 1.
    %-------------------------------------------
    %iterate to get solution values!!
    for n = 1:1:N_end-1
        x(n+1) = x(n) + k*x(n)*(1-x(n)/c);
    end
    
    %-------------------------------------------
    %plot
    %         -> Solutions is stored in x
    %          -> Plot against time n
    nvec = 1:1:N_end;    %stores n values to plot against
    
    plot(nvec,x);
    hold on
    

    logistic model

    From the output, we see the population grows to a given level where it is constant. This point is the carrying capacity.

    When the population rises past this point, the resources will be limited. When the resources are limited, the organisms begin to die, and the population starts to decline.

    Conclusion

    The logistic model can be used to estimate the carrying capacity of a given niche. It helps implement various factors that can help maintain the population growth rate in relation to the carrying capacity.

    This helps manage the available resources in the environment. This model is widely applicable in the ecology sector. Programming these models is easier using Matlab's in-built functions; as we have seen.

    I hope you find this tutorial helpful.

    Happy coding!


    Peer Review Contributions by: Monica Masae

    Published on: Sep 14, 2021
    Updated on: Jul 15, 2024
    CTA

    Start your journey with Cloudzilla

    With Cloudzilla, apps freely roam across a global cloud with unbeatable simplicity and cost efficiency