Sèries de Maclaurin

En aquest exercici treballarem amb el desenvolupament en sèrie de Maclaurin per les funcions \(\frac{1}{1-x}\) i arctan(x):

\(\frac{1}{1-x} = \sum_{n=0}^{k} x^{n} = 1 + x + x^{2} + x^{3} + \cdots\)

\(arctan(x) = \sum_{n=0}^{k}(-1)^{n} \frac{x^{2n+1}}{2n+1} = x - \frac{x^{3}}{3} + \frac{x^{5}}{5} - \frac{x^{7}}{7} + \cdots\)

  1. Donats dos valors reals, x, tal que \(-1 < x < 1\) i epsilon, la tolerància \(epsilon << 1\), dissenya la funció, serie1 que calcula la suma dels termes del desenvolupament en sèrie de Maclaurin per la funció \(\frac{1}{1-x}\), sumant tots els termes que en valor absolut són més grans o iguals que epsilon.

    Dissenya també la funció, serie2 que fa el mateix per la funció \(arctan(x)\).

    Desa totes dues funcions al fitxer maclaurin1.py

    Les funcions han de passar el següent doctest:

    
    >>> def f1 (x):
    ...    return 1/(1-x)
    
    >>> round(f1(0.2), 4)
    1.25
    >>> round(f1(-0.8), 4)
    0.5556
    >>> round(f1(-0.4), 4)
    0.7143
    
    >>> round(serie1(0.2, 0.01), 4)
    1.24
    >>> round(serie1(-0.8, 0.01), 4)
    0.5607
    >>> round(serie1(-0.8, 0.0001), 4)
    0.5555
    >>> round(serie1(-0.4, 0.0001), 4)
    0.7143
    
    >>> round(math.atan(0.2), 4)
    0.1974
    >>> round(math.atan(-0.8), 4)
    -0.6747
    >>> round(math.atan(-0.4), 4)
    -0.3805
    
    >>> round(serie2(0.2, 0.01), 4)
    0.2
    >>> round(serie2(0.2, 0.0001), 4)
    0.1973
    >>> round(serie2(-0.8, 0.0001), 4)
    -0.6748
    >>> round(serie2(-0.4, 0.0001), 4)
    -0.3805
    
    

    Nota

    Podeu descarregar el fitxer amb tests test-maclaurin1.txt

  2. Donats dos valors real, x, tal que \(-1 < x < 1\) i epsilon, la tolerància \(epsilon << 1\), dissenya la funció, serie1 que calcula la suma dels termes del desenvolupament en sèrie de Maclaurin per la funció \(\frac{1}{1-x}\). En aquest cas, cal aturar el càlcul de la suma quan dos termes consecutius siguin iguals amb la tolerància epsilon donada, és a dir, quan la seva diferència en valor absolut sigui inferior a epsilon.

    Dissenya també la funció, serie2 que fa el mateix per la funció \(arctan(x)\).

    Desa totes dues funcions al fitxer maclaurin2.py

    Les funcions han de passar el següent doctest:

    >>> round(serie1(0.2, 0.001), 1)
    1.2
    >>> round(serie1(-0.8, 0.0001), 3)
    0.556
    
    >>> round(serie2(0.2, 0.001), 1)
    0.2
    >>> round(serie2(-0.8, 0.0001), 3)
    -0.675
    >>> round(serie2(0.4, 0.0001), 4)
    0.3805
    
    

    Nota

    Podeu descarregar el fitxer amb tests test-maclaurin2.txt

Solució

Disposeu de solucions als fitxers maclaurin1.py i maclaurin2.py