.. module:: integrals Aproximar una integral definida =============================== Donada una funció :math:`f` definida en un interval :math:`[a, b]` tal que pren valors positius, podem aproximar la integral definida de :math:`f` en aquest interval com una suma d'àrees de rectangles. Per això, considerem un paràmetre :math:`n` que serà el nombre de trossos en què dividirem l'interval :math:`[a, b]`: .. math:: \int_{a}^{b} f(x)dx \approx \sum_{i=0}^{n-1} f(\frac{x_i+x_{i+1}}{2})\frac{b-a}{n} on :math:`x_i=a+i\frac{b-a}{n}` per :math:`i=0, \ldots, n`. En aquest exercici, considerem :math:`f(x)=2x^2 + \sin x + 4` Dissenya les dues funcions següents i desa-les al mòdul :mod:`integrals` (fitxer :file:`integrals.py`): .. function:: integra(a, b, n) Retorna l'aproximació de la integral definida entre :math:`a` i :math:`b` dividint en :math:`n` trossos l'interval, seguint la fórmula anterior. Observa el següent joc de proves: .. literalinclude:: test-integra.txt :language: python3 :lines: 3- Pots descarregar el fitxer amb tests :download:`test-integra.txt`. | .. function:: quants_trossos(a, b, eps) Retorna el valor més petit d\'`n` tal que l'aproximació s'acosta a la integral de :math:`f` a l'interval :math:`[a, b]` amb un error menor que `eps`, és a dir, .. math:: \left| \int_{a}^{b} f(x)dx - \sum_{i=0}^{n-1} f(\frac{x_i+x_{i+1}}{2})\frac{b-a}{n} \right| < \text{eps.} .. note:: Recorda que un dels mètodes per calcular la integral definida és a partir del càlcul de primitives: :math:`\int_{a}^{b} f(x)dx = F(b) - F(a)`. En aquest problema, :math:`F(x) = 2\frac{x^3}{3} - \cos x + 4x` és una primitiva de la funció :math:`f(x)`. Observa el següent joc de proves: .. literalinclude:: test-quants_trossos.txt :language: python3 :lines: 3- Pots descarregar el fitxer amb tests :download:`test-quants_trossos.txt`.