2024-heraklion-testing-debu.../testing_project/solution/test_logistic_fit.py
2024-08-26 13:54:13 +02:00

30 lines
825 B
Python

import numpy as np
from numpy.testing import assert_allclose
from logistic import iterate_f
from logistic_fit import fit_r
SEED = 42
def test_logistic_fit():
r = 3.123
x0 = 0.322
xs = iterate_f(it=27, x0=x0, r=r)
assert_allclose(r, fit_r(xs), atol=1e-3)
def test_logistic_fit_randomized():
random_state = np.random.RandomState(SEED)
# We test for 100 random values of x0 and r, to make sure that the function works in general.
for _ in range(100):
x0 = random_state.uniform(0.0001, 0.9999)
# Round `r` to 1/1000 to make sure that it matches the precision of the fit_r function,
# so that r can be exactly recovered.
r = round(random_state.uniform(0.001, 3.999), 3)
xs = iterate_f(it=17, x0=x0, r=r)
assert_allclose(r, fit_r(xs), atol=1e-3)