simple_functions#

A collection of simple functions.

Functions

Searches for a value in a range by repeatedly dividing the range in half.

To be more precise, performs numerical binary search to determine the input to function, between the bounds given, that outputs target to within tolerance (default of 0.0001). Returns None if no input can be found within the bounds.

Examples

Consider the polynomial \(x^2 + 3x + 1\) where we search for a target value of \(11\). An exact solution is \(x = 2\).

>>> solution = binary_search(lambda x: x**2 + 3*x + 1, 11, 0, 5)
>>> abs(solution - 2) < 1e-4
True
>>> solution = binary_search(lambda x: x**2 + 3*x + 1, 11, 0, 5, tolerance=0.01)
>>> abs(solution - 2) < 0.01
True

Searching in the interval \([0, 5]\) for a target value of \(71\) does not yield a solution:

>>> binary_search(lambda x: x**2 + 3*x + 1, 71, 0, 5) is None
True
Parameters:
  • function (Callable[[int | float], int | float]) –

  • target (int | float) –

  • lower_bound (int | float) –

  • upper_bound (int | float) –

  • tolerance (int | float) –

Return type:

int | float | None

choose(n, k)[source]#

The binomial coefficient n choose k.

\(\binom{n}{k}\) describes the number of possible choices of \(k\) elements from a set of \(n\) elements.

References

Parameters:
  • n (int) –

  • k (int) –

Return type:

int

clip(a, min_a, max_a)[source]#

Clips a to the interval [min_a, max_a].

Accepts any comparable objects (i.e. those that support <, >). Returns a if it is between min_a and max_a. Otherwise, whichever of min_a and max_a is closest.

Examples

>>> clip(15, 11, 20)
15
>>> clip('a', 'h', 'k')
'h'
sigmoid(x)[source]#

Returns the output of the logistic function.

The logistic function, a common example of a sigmoid function, is defined as \(\frac{1}{1 + e^{-x}}\).

References

Parameters:

x (float) –

Return type:

float