Ceci est une ancienne révision du document !
Pour la théorie des nombres de Bernoulli, voir entre autres ici: http://fr.wikipedia.org/wiki/Nombre_de_Bernoulli
Je m'y suis intéressé parce que ces nombres interviennent dans certains calculs, en particulier dans le calcul de la tangente par série entière.
Je suis parti de l'équation récurrente suivante:
Dans cette formule:
Mais en quoi cette équation est-elle “récurrente”?
Pour le savoir, développons pour n=3:
Il faudrait donc que l'on puisse calculer <m>B_3</m>.
Mais là, on voit bien le problème: on connait <m>{B_0}=1</m> par définition, mais pour calculer <m>B_3</m>, il faut calculer avant: <m>B_1</m> et <m>B_2</m>.
Comment? En appliquant la formule pour n=1 et n=2 et, à chaque fois, en calculant le dernier B.
Voilà le code qui fait cela (Python version 2.6):
#!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import division from decimal import * ############################################################################## def combin(n, k): """Nombre de combinaisons de n objets pris k a k""" if k > n//2: k = n-k x = 1 y = 1 i = n-k+1 while i <= n: x = (x*i)//y y += 1 i += 1 return x ############################################################################## def bernoulli(n): """calcul du nombre de Bernoulli Bn """ prec = getcontext().prec getcontext().prec = 50 B = [Decimal("1")] for m in xrange(1,n+1): if m>1 and m%2!=0: B.append(Decimal("0")) else: c = Decimal("0") for k in xrange(0,m): c += Decimal(str(combin(m+1,k)))*B[k] B.append(-c/Decimal(str(combin(m+1,m)))) getcontext().prec = prec return float(B[n])