3. Model d’estabilització d’un medicament

Un medicament s’acumula progressivament al cos d’un pacient. La seva concentració augmenta cada dia segons un model que depen de la concentració del medicament al cos en el dia n (\(y_n\)), un paràmetre que controla la taxa d’acumulació (\(k\)) i la concentració incial del medicament (\(y_0\)).

\[\begin{split}\begin{aligned} y_0 &= \text{concentració inicial}, \quad 0 < y_0 < 1 \\ y_{n+1} &= y_n + k \cdot y_n \cdot (1 - y_n) \end{aligned}\end{split}\]

Per exemple, si tenim una concentració inicial de \(0.4\) i \(k=2\), els primers termes de la successió són:

\[\begin{split}\begin{align*} y_0 &= 0.4 \\ y_1 &= 0.88 \\ y_2 &= 1.0912 \\ y_3 &= 0.89216512 \\ \end{align*}\end{split}\]

Es considera que la concentració s’ha estabilitzat quan dos valors consecutius són iguals segons la tolerància donada:

Dissenya la següent funció i desa-la al fitxer medicament.py:

estabilitzacio(y0, k, epsilon)

Retorna l’índex (el nombre de dies)) de l’últim terme de la succesió de concentració perquè arribi a un valor estable segons la tolerància epsilon.

Paràmetres:
  • y0 (float) – Concentració inicial del medicament (0 < y0 < 1)

  • k (float) – Paràmetre positiu d’acumulació

  • epsilon (float) – Tolerància per considerar la concentració estable

Retorna:

Índex de l’últim terme de la successió perquè arribi a un valor estable segons epsilon.

Tipus de retorn:

int

Els següents doctests mostren exemples del que ha de fer la funció:

>>> estabilitzacio(0.5, 0.1, 0.01)
22
>>> estabilitzacio(0.5, 0.1, 0.03)
1

Disposeu de més tests al fitxer test-estabilitzacio.txt

Disposes de solucions al fitxer medicament.py.