SciPy - linalg.leslie() Function



The linalg.leslie function in SciPy is used to compute the Leslie Matrix.

The Leslie matrix is a discrete, age-structured model of population growth that is very popular in population ecology, which is created by P.H. Leslie and named after him.

It is one of most common technique used to describe the growth of populations, which considers only one sex—typically the female—and a population that is restricted to migration.

Syntax

The following is the syntax of the linalg.leslie function in SciPy

scipy.linalg.leslie(f, s)

Parameters

The following is the list of parameters that are accepted by the scipy linalg.leslie() function

  • f − This parameter takes an array as an input which represents the "fecundity" coefficients.
  • s − The survival coefficient has to be 1-dimensional. Note that the length of each slice 's' must be one less than the length of f, and it must be at least 1.

Return

The scipy linalg.leslie() function takes the above parameter and returns an array. This array is zero expect the first row, which represents the f, and the first sub diagonal, which is the s. f[0] + s[0] is the data type of this array.

Example 1

In the example below, we use the linalg.leslie() function in SciPy by passing both the required parameters 'f' and 's'. The function returns an array that represents the Leslie matrix for the given input values.

from scipy.linalg import leslie
res=leslie([2,4,6,8], [1,2,3])
print('The leslie matrix for the given input is:')
print(res)

The output for the above code is as follows −

The leslie matrix for the given input is:
[[2 4 6 8]
 [1 0 0 0]
 [0 2 0 0]
 [0 0 3 0]]

Example 2

Here we pass both the required parameters f and s, where the value of s is greater than f-1 to the linalg.leslie() function in Scipy and find out the output.

from scipy.linalg import leslie
res=leslie([2,4,6,8], [1,2,3,4])
print('The leslie matrix for the given input is:')
print(res)

The code above returns an error message as the leslie function expects the survival probabilities to be one element shorter than the fertilities as given below −

ValueError                                Traceback (most recent call last)
Cell In[1], line 2
      1 from scipy.linalg import leslie
----> 2 res=leslie([2,4,6,8], [1,2,3,4])
      3 print('The leslie matrix for the given input is:')
      4 print(res)

File /lib/python3.12/site-packages/scipy/linalg/_special_matrices.py:294, in leslie(f, s)
    292     raise ValueError("Incorrect shape for s.  s must be 1D")
    293 if f.size != s.size + 1:
--> 294     raise ValueError("Incorrect lengths for f and s.  The length"
    295                      " of s must be one less than the length of f.")
    296 if s.size == 0:
    297     raise ValueError("The length of s must be at least 1.")

ValueError: Incorrect lengths for f and s.  The length of s must be one less than the length of f.

Example 3

In the following example code, we pass both the required parameter f and s, such that the value of s is less than f-1 to the scipy.linalg.leslie() function.

from scipy.linalg import leslie
res=leslie([2,4,6,8], [1,2])
print('The leslie matrix for the given input is:')
print(res)

The output for the above code is an error as the leslie function in scipy.linalg requires the lengths of the f and s arguments to be compatible to construct a valid Leslie matrix −

ValueError                                Traceback (most recent call last)
Cell In[2], line 2
      1 from scipy.linalg import leslie
----> 2 res=leslie([2,4,6,8], [1,2])
      3 print('The leslie matrix for the given input is:')
      4 print(res)

File /lib/python3.12/site-packages/scipy/linalg/_special_matrices.py:294, in leslie(f, s)
    292     raise ValueError("Incorrect shape for s.  s must be 1D")
    293 if f.size != s.size + 1:
--> 294     raise ValueError("Incorrect lengths for f and s.  The length"
    295                      " of s must be one less than the length of f.")
    296 if s.size == 0:
    297     raise ValueError("The length of s must be at least 1.")

ValueError: Incorrect lengths for f and s.  The length of s must be one less than the length of f.
Advertisements