Punt d’equilibri d’una reacció ============================== Es vol trobar una aproximació a la temperatura :math:`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ó: .. math:: v(T) = A \cdot \sin(T) - B \cdot \cos(T) on :math:`A` i :math:`B` són constants positives i :math:`T` és la temperatura. Es parteix de dos valors inicials :math:`T_1` i :math:`T_2` tals que: .. math:: v(T_1) \cdot v(T_2) < 0 i s'utilitza un mètode iteratiu a on, en cada pas, es calcula un nou candidat :math:`T_{n+1}` a partir de :math:`T_n` i :math:`T_n'` segons la fórmula: .. math:: T_{n+1} = T_n - \frac{v(T_n) \cdot (T_n - T_n')}{v(T_n) - v(T_n')} on :math:`T_n'` és :math:`max\{T_0,...,T_{n-1}\}` tal que :math:`v(T_n) \cdot v(T_n') \lt 0`, és a dir, el màxim de tots els valors de `T` previs a :math:`T_n` tal que :math:`v(T_n')` té signe oposat a :math:`v(T_n)`. El procés es repeteix fins que :math:`v(T_n)` és igual a 0 amb una tolerància donada. El valor :math:`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 :math:`v(T1)` serà positu i :math:`v(T2)` negatiu. Els següents doctests mostren exemples del que ha de fer la funció: .. literalinclude:: test-troba-equilibri.txt :lines: 3-9 .. note:: Disposes de més tests al fitxer :download:`test-troba-equilibri.txt`. Desa la funció al fitxer :file:`equilibri.py`. Disposes de solucions al fitxer :download:`equilibri.py`.