2. Punt d’equilibri d’una reacció¶
Es vol trobar una aproximació a la temperatura \(T\) on una reacció endotèrmica entra en equilibri, és a dir, quan la seva velocitat esdevé zero. La velocitat de la reacció es modela mitjançant la funció:
on \(A\) i \(B\) són constants positives i \(T\) és la temperatura.
Es parteix de dos valors inicials \(T_1\) i \(T_2\) tals que:
i s’utilitza un mètode iteratiu a on, en cada pas, es calcula un nou candidat \(T_{n+1}\) a partir de \(T_n\) i \(T_n'\) segons la fórmula:
on \(T_n'\) és \(max\{T_0,...,T_{n-1}\}\) tal que \(v(T_n) \cdot v(T_n') \lt 0\), és a dir, el màxim de tots els valors de T previs a \(T_n\) tal que \(v(T_n')\) té signe oposat a \(v(T_n)\).
El procés es repeteix fins que \(v(T_n)\) és igual a 0 amb una tolerància donada. El valor \(T_n\) que compleix aquesta condició es l’aproximació de la solució.
Dissenya la funció troba_equilibri(T1, T2, A, B, eps) que donats els dos valors inicials T1 i T2, les constants positives A i B, i una tolerància eps, retorna una aproximació de la temperatura d’equilibri de la reacció. Per simplificar el problema, suposarem que \(v(T1)\) serà positu i \(v(T2)\) negatiu.
Els següents doctests mostren exemples del que ha de fer la funció:
>>> p = troba_equilibri(0.6, 0.3, 2, 1, 0.01)
>>> round(p,8)
0.46354594
>>> p = troba_equilibri(2.2, 0.1, 1, 50, 0.01)
>>> round(p,8)
1.55077151
Nota
Disposes de més tests al fitxer test-troba-equilibri.txt.
Desa la funció al fitxer equilibri.py.
Disposes de solucions al fitxer equilibri.py.