updated functions

This commit is contained in:
ASPP Student 2025-09-23 19:41:37 +03:00
parent 671fcd2145
commit 5205ba24f2
2 changed files with 23 additions and 14 deletions

View file

@ -1,4 +1,12 @@
def f(x,r):
return r * x * (1-x)
def iterate_f(it, x, r):
result = [x]
for i in range(it):
x = f(x, r)
result.append(x)
return result

View file

@ -1,6 +1,6 @@
from numpy.testing import assert_allclose
from logistic import f
from logistic import f, iterate_f
import pytest
def test_f_corner_cases():
@ -19,17 +19,11 @@ def test_f_corner_cases():
# x=0.2, r=3.4 => f(x, r)=0.544
# x=0.5, r=2 => f(x, r)=0.5
@pytest.mark.parametrize('x, r, expected', [(0.1, 2.2, 0.198), (0.2, 3.4, 0.544), (0.5, 2, 0.5)])
def test_f_other_cases():
# Test cases are (x, r, expected)
cases = [
(0.1, 2.2, 0.198),
(0.2, 3.4, 0.544),
(0.5, 2, 0.5)
]
for x, r, expected in cases:
result = f(x, r)
assert_allclose(result, expected)
def test_f_other_cases(x, r, expected):
result = f(x, r)
assert_allclose(result, expected)
# Hands on 2:
# parametrize the above test using @pytest.mark.parametrize
@ -39,4 +33,11 @@ def test_f_other_cases():
# Implement a function iterate_f that runs f for it iterations. Write tests for the following cases:
# x=0.1, r=2.2, it=1 => iterate_f(it, x, r)=[0.1, 0.198]
# x=0.2, r=3.4, it=4 => iterate_f(it, x, r)=[0.2, 0.544, 0.843418, 0.449019, 0.841163]
# x=0.5, r=2, it=3 => iterate_f(it, x, r)=[0.5, 0.5, 0.5]
# x=0.5, r=2, it=3 => iterate_f(it, x, r)=[0.5, 0.5, 0.5, 0.5]
@pytest.mark.parametrize('x, r, it, expected', [(0.1, 2.2, 1, [0.1, 0.198]), (0.2, 3.4, 4, [0.2, 0.544, 0.843418, 0.449019, 0.841163]), (
0.5, 2, 3, [0.5, 0.5, 0.5, 0.5])])
def test_iterate_f(x, r, it, expected):
result = iterate_f(it, x, r)
assert_allclose(result, expected, rtol=5e-07, atol=5e-07)