Sèrie alternada pel logaritme

La sèrie alternada

\[\sum_{n=1}^\infty (-1)^{n+1}\,\frac{1}{n}\]

convergeix a \(\ln 2\). Donat un nombre natural \(k\),

\[S_k = \sum_{n=1}^k (-1)^{n+1}\,\frac{1}{n} = 1 - \frac{1}{2} + \frac{1}{3} - \frac{1}{4} + \cdots + (-1)^{k+1}\,\frac{1}{k}\]

\(S_k\) és una de les sumes parcials associades a aquesta sèrie alternada.

Dissenya les funcions següents i desa-les al mòdul logaritme (fitxer logaritme.py).

logaritme.termes_salog(k)

Calcula la llista dels termes de \(S_k\).

Paràmetres:

k (int) – nombre natural

Tipus de retorn:

list

Retorna:

llista dels termes de \(S_k\)

>>> [round(t, 4) for t in lt]
[1.0, -0.5, 0.3333]

>>> lt = termes_salog(10)
>>> [round(t, 4) for t in lt]
[1.0, -0.5, 0.3333, -0.25, 0.2, -0.1667, 0.1429, -0.125, 0.1111, -0.1]

>>> lt = termes_salog(100)
>>> round(sum(lt), 4)
0.6882

>>> lt = termes_salog(1000)
>>> round(sum(lt), 4)
0.6926

Pots descarregar el fitxer amb tests test-termes_salog.txt


logaritme.salog(k)

Calcula la suma parcial \(S_k\).

Paràmetres:

k (int) – nombre natural

Tipus de retorn:

float

Retorna:

\(S_k\)

>>> round(math.log(2), 4)
0.6931

>>> round(salog(3), 4)
0.8333
>>> round(salog(10), 4)
0.6456
>>> round(salog(100), 4)
0.6882
>>> round(salog(1000), 4)
0.6926

Pots descarregar el fitxer amb tests test-salog.txt


logaritme.quants_termes_salog(eps)

Calcula el nombre de termes de la sèrie alternada pel logaritme que cal sumar per tal que s’acosti a \(\ln 2\) amb tolerància eps.

Paràmetres:

eps (float) – tolerància

Tipus de retorn:

int

Retorna:

el \(k\) més petit tal que \(\lvert S_k - \ln 2 \rvert < eps\)

Suggeriment

Recorda que pots usar la funció math.log() per calcular el logaritme neperià.

Pots descarregar el fitxer amb tests test-quants_termes_salog.txt

Solució

Disposes de solucions al fitxer logaritme.py.