hesseflux.functions.logistic_function

Module with several forms of the logistic function and its first and second derivatives.

The current functions are:

logistic Logistic function L/(1+exp(-k(x-x0)))

logistic_p logistic(x,*p)

dlogistic First derivative of logistic function

dlogistic_p dlogistic(x,*p)

d2logistic Second derivative of logistic function

d2logistic_p d2logistic(x,*p)

logistic_offset logistic function with offset L/(1+exp(-k(x-x0))) + a

logistic_offset_p logistic_offset(x,*p)

dlogistic_offset First derivative of logistic function with offset

dlogistic_offset_p dlogistic_offset(x,*p)

d2logistic_offset Second derivative of logistic function with offset

d2logistic_offset_p d2logistic_offset(x,*p)

logistic2_offset Double logistic function with offset L1/(1+exp(-k1(x-x01))) - L2/(1+exp(-k2(x-x02))) + a

logistic2_offset_p logistic2_offset(x,*p)

dlogistic2_offset First derivative of double logistic function with offset

dlogistic2_offset_p dlogistic2_offset(x,*p)

d2logistic2_offset Second derivative of double logistic function with offset

d2logistic2_offset_p d2logistic2_offset(x,*p)

This module was written by Matthias Cuntz while at Department of Computational Hydrosystems, Helmholtz Centre for Environmental Research - UFZ, Leipzig, Germany, and continued while at Institut National de Recherche pour l’Agriculture, l’Alimentation et l’Environnement (INRAE), Nancy, France.

Copyright (c) 2015-2020 Matthias Cuntz - mc (at) macu (dot) de Released under the MIT License; see LICENSE file for details.

  • Written Mar 2015 by Matthias Cuntz (mc (at) macu (dot) de)
  • Added functions logistic_p and logistic_offset_p, Dec 2017, Matthias Cuntz
  • Changed to Sphinx docstring and numpydoc, Dec 2019, Matthias Cuntz
  • Distinguish iterable and array_like parameter types, Jan 2020, Matthias Cuntz
  • Make systematically function_p versions of all logistic functions and its derivatives, Feb 2020, Matthias Cuntz
  • Split logistic and curvature into separate files, May 2020, Matthias Cuntz

The following functions are provided:

logistic(x, L, k, x0) Logistic function:
logistic_p(x, p) Wrapper function for logistic(): logistic(x, *p).
dlogistic(x, L, k, x0) First derivative of logistic function:
dlogistic_p(x, p) Wrapper function for dlogistic(): dlogistic(x, *p).
d2logistic(x, L, k, x0) Second derivative of logistic function:
d2logistic_p(x, p) Wrapper function for d2logistic(): d2logistic(x, *p).
logistic_offset(x, L, k, x0, a) Logistic function with offset:
logistic_offset_p(x, p) Wrapper function for logistic_offset(): logistic_offset(x, *p).
dlogistic_offset(x, L, k, x0, a) First derivative of logistic function with offset:
dlogistic_offset_p(x, p) Wrapper function for dlogistic_offset(): dlogistic_offset(x, *p).
d2logistic_offset(x, L, k, x0, a) Second derivative of logistic function with offset
d2logistic_offset_p(x, p) Wrapper function for d2logistic_offset(): d2logistic_offset(x, *p).
logistic2_offset(x, L1, k1, x01, L2, k2, x02, a) Double logistic function with offset:
logistic2_offset_p(x, p) Wrapper function for logistic2_offset(): logistic2_offset(x, *p).
dlogistic2_offset(x, L1, k1, x01, L2, k2, x02, a) First derivative of double logistic function with offset:
dlogistic2_offset_p(x, p) Wrapper function for dlogistic2_offset(): dlogistic2_offset(x, *p).
d2logistic2_offset(x, L1, k1, x01, L2, k2, …) Second derivative of double logistic function with offset:
d2logistic2_offset_p(x, p) Wrapper function for d2logistic2_offset(): d2logistic2_offset(x, *p).
logistic(x, L, k, x0)[source]

Logistic function:

L/(1+exp(-k(x-x0)))
Parameters:
  • x (array_like) – Independent variable to evalute logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
Returns:

Logistic function at x with maximum L, steepness k and inflection point x0

Return type:

float or ndarray

logistic_p(x, p)[source]

Wrapper function for logistic(): logistic(x, *p).

dlogistic(x, L, k, x0)[source]

First derivative of logistic function:

L/(1+exp(-k(x-x0)))

which is

k.L/(2(cosh(k(x-x0))+1))
Parameters:
  • x (array_like) – Independent variable to evalute derivative of logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
Returns:

First derivative of logistic function at x with maximum L, steepness k and inflection point x0

Return type:

float or ndarray

dlogistic_p(x, p)[source]

Wrapper function for dlogistic(): dlogistic(x, *p).

d2logistic(x, L, k, x0)[source]

Second derivative of logistic function:

L/(1+exp(-k(x-x0)))

which is

-k^2.L.sinh(k(x-x0))/(2(cosh(k(x-x0))+1)^2)
Parameters:
  • x (array_like) – Independent variable to evalute derivative of logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
Returns:

Second derivative of logistic function at x with maximum L, steepness k and inflection point x0

Return type:

float or ndarray

d2logistic_p(x, p)[source]

Wrapper function for d2logistic(): d2logistic(x, *p).

logistic_offset(x, L, k, x0, a)[source]

Logistic function with offset:

L/(1+exp(-k(x-x0))) + a
Parameters:
  • x (array_like) – Independent variable to evalute logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
  • a (float) – Offset of logistic function
Returns:

Logistic function at x with maximum L, steepness k, inflection point x0 and offset a

Return type:

float or ndarray

logistic_offset_p(x, p)[source]

Wrapper function for logistic_offset(): logistic_offset(x, *p).

dlogistic_offset(x, L, k, x0, a)[source]

First derivative of logistic function with offset:

L/(1+exp(-k(x-x0))) + a

which is

k.L/(2(cosh(k(x-x0))+1))
Parameters:
  • x (array_like) – Independent variable to evalute derivative of logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
  • a (float) – Offset of logistic function
Returns:

First derivative of logistic function with offset at x with maximum L, steepness k, inflection point x0, and offset a

Return type:

float or ndarray

dlogistic_offset_p(x, p)[source]

Wrapper function for dlogistic_offset(): dlogistic_offset(x, *p).

d2logistic_offset(x, L, k, x0, a)[source]

Second derivative of logistic function with offset

L/(1+exp(-k(x-x0))) + a

which is

-k^2.L.sinh(k(x-x0))/(2(cosh(k(x-x0))+1)^2)
Parameters:
  • x (array_like) – Independent variable to evalute derivative of logistic function
  • L (float) – Maximum of logistic function
  • k (float) – Steepness of logistic function
  • x0 (float) – Inflection point of logistic function
  • a (float) – Offset of logistic function
Returns:

Second derivative of logistic function at x with maximum L, steepness k, inflection point x0, and offset a

Return type:

float or ndarray

d2logistic_offset_p(x, p)[source]

Wrapper function for d2logistic_offset(): d2logistic_offset(x, *p).

logistic2_offset(x, L1, k1, x01, L2, k2, x02, a)[source]

Double logistic function with offset:

L1/(1+exp(-k1(x-x01))) - L2/(1+exp(-k2(x-x02))) + a
Parameters:
  • x (array_like) – Independent variable to evalute logistic function
  • L1 (float) – Maximum of first logistic function
  • k1 (float) – Steepness of first logistic function
  • x01 (float) – Inflection point of first logistic function
  • L2 (float) – Maximum of second logistic function
  • k2 (float) – Steepness of second logistic function
  • x02 (float) – Inflection point of second logistic function
  • a (float) – Offset of double logistic function
Returns:

Double Logistic function at x

Return type:

float or ndarray

logistic2_offset_p(x, p)[source]

Wrapper function for logistic2_offset(): logistic2_offset(x, *p).

dlogistic2_offset(x, L1, k1, x01, L2, k2, x02, a)[source]

First derivative of double logistic function with offset:

L1/(1+exp(-k1(x-x01))) - L2/(1+exp(-k2(x-x02))) + a

which is

k1.L1/(2(cosh(k1(x-x01))+1)) - k2.L2/(2(cosh(k2(x-x02))+1))
Parameters:
  • x (array_like) – Independent variable to evalute logistic function
  • L1 (float) – Maximum of first logistic function
  • k1 (float) – Steepness of first logistic function
  • x01 (float) – Inflection point of first logistic function
  • L2 (float) – Maximum of second logistic function
  • k2 (float) – Steepness of second logistic function
  • x02 (float) – Inflection point of second logistic function
  • a (float) – Offset of double logistic function
Returns:

First derivative of double logistic function with offset at x

Return type:

float or ndarray

dlogistic2_offset_p(x, p)[source]

Wrapper function for dlogistic2_offset(): dlogistic2_offset(x, *p).

d2logistic2_offset(x, L1, k1, x01, L2, k2, x02, a)[source]

Second derivative of double logistic function with offset:

L1/(1+exp(-k1(x-x01))) - L2/(1+exp(-k2(x-x02))) + a

which is

-k1^2.L1.sinh(k1(x-x01))/(2(cosh(k1(x-x01))+1)^2) +k2^2.L2.sinh(k2(x-x02))/(2(cosh(k2(x-x02))+1)^2)
Parameters:
  • x (array_like) – Independent variable to evalute logistic function
  • L1 (float) – Maximum of first logistic function
  • k1 (float) – Steepness of first logistic function
  • x01 (float) – Inflection point of first logistic function
  • L2 (float) – Maximum of second logistic function
  • k2 (float) – Steepness of second logistic function
  • x02 (float) – Inflection point of second logistic function
  • a (float) – Offset of double logistic function
Returns:

Second derivative of double logistic function with offset at x

Return type:

float or ndarray

d2logistic2_offset_p(x, p)[source]

Wrapper function for d2logistic2_offset(): d2logistic2_offset(x, *p).