Partie Informatique

On appelle nombres de Bernoulli les nombres définis par :

(i) b_{0} = 1, b_{1} = −1/2, b_{2n+1} = 0 et b_{n} = ∑_{k=0}^{n} C_{n}^{k}.b_{k} si n ≥ 1.

a) calculer b_{2}, b_{3}, b_{4} et b_{5}.

b) en déduire que b_{n} = \frac{−1}{n + 1} ∑_{k=0}^{n−1} C_{n+1}^{k}.b_{k}.

On peut démontrer par récurrence que les b_{k} sont rationnels mais la démonstration n’est pas demandée ici. On dispose des modules addRat, subRat, mulRat et divRat qui sont des modules à résultat non explicite mais à paramètre de type ”variable modifiable”. Ainsi par exemple l’addition des deux rationnels p_{1}/q_{1} et p_{2}/q_{2} se fait par addrat(p1,q1,p2,q2,p3,q3) où p_{3} est le numérateur du résultat et q_{3} son dénominateur. On admettra que le module coeffBin(n,k,c) met dans la variable c la valeur du coefficient C_{n}^{k}. Il n’est pas demandé d’écrire le module coeffBint(n,k,c) pas plus que les modules addRat, subRat, mulRat, divRat.

c) de façon à simplifier le programme, on met les numérateurs et les dénominateurs des b_{k} dans les tableaux num[k] et den[k]. Donner les instructions qui permettent d’initialiser ces deux tableaux sachant b_{0} = 1 et b_{1} = −1/2.

d) écrire le module calcb de paramètre k qui affiche le rationnel correspondant à b_{k} sous la forme ”p/q” grâce aux modules précédents. On utilisera la syntaxe algorithmique vue en cours (avec paramètres, locales et globales...).

On appelle polynomes de Bernoulli les polynomes B_{n} tels que

(ii) B_{0}(x) = 1, B_{1}(x) = −1/2 + X et B_{n}(x) = ∑_{k=0}^{n} C_{n}^{k}.b_{k}.x^{n−k}.

d) calculer B_{2}(x), B_{3}(x), B_{4}(x).

e) écrire un module calcP olyB de paramètre k qui calcule et affiche par ordre croissant les coefficients du polynome B_{k} en x. Les coefficients seront écrits de façon rationnelle grâce aux modules introduits pour les questions c) et d) et grâce aux tableaux num et den.

Solution

Appliquons les relations (i) à n=3. On en déduit

0 = b_{3} = 1.b_{0} + 3.b_{1} + 3.b_{2} + b_{3} ⇒ b_{2} = −(b_{0} + 3.b_{1})/3 = 1/6.

De même, b_{5} = 0 et donc en développant la relation (i) : b_{4} = −1/30.

Applicant maintenant la relation (i) à l’ordre n+1 pour n pair en simplifiant

par b_{n+1} = 0, on obtient ∑_{k=0}^{n−1} C_{n+1}^{k}.b_{k} + C_{n+1}^{1}b_{n} soit encore

b_{n} = \frac{−1}{n + 1} ∑_{k=0}^{n−1} C_{n+1}^{k}.b_{k}

ce qui est la relation demandée.

L’initialisation de num et den se fait tout simplement par

  num[0] <-- 1
  den[0] <-- 1
  num[0] <-- -1
  den[0] <-- 2

Le calcul de b_{k} requiert le calcul des b_{i} précédents pour k pair. Sinon, b_{k} vaut 0 soit encore 0/1. La forme principale de calcb est donc

module calcb
  param\`{e}tre k        { entier }
  locale    i        { entier }
  globale   num,den  { tableaux }
d\'{e}but du module calcb
  si impair(k)
     alors num[k] <-- 0
           den[k] <-- 1
     sinon
       ... calcul proprement dit
fin du module calcb

La partie importante du module est donc la boucle du sinon à savoir :

coeffBin(k+1,1,c)
addrat(num[0],den[0],c*num[1],den[1],p,q)
pour i de2\`{a} k
 coeffBin(k+1,i,c)
 addrat(p,q,c*num[i],den[i],p,q)
finpour i
mulrat(p,q,-1,k+1,p,q)
num[k] <-- p
den[k] <-- q

Pour les polynomes de Bernoulli on trouve bien sûr

B_{2}(x) = 1/6 − x/2 + x^{2}, B_{3}(x) = x/2 − 3/2x^{2} + x^{3} et
B_{4}(x) = −1/30 + x^{2} − 2x^{3} + x^{4}

Comme le coefficient de de x^{j} pour B_{k}(x) se réduit à C_{k}^{j}.b_{k−j}, on peut donc mettre tout simplement les coefficients de B_{k}(x) dans les tableaux numP oly et denP oly grâce aux instructions :

  pour j de 0 a k
     coefbin(k,j,c)
     calck(n-k,p,q)       { ou p <-- num[n_k] etc. }
     mulRat(c,1,p,q,p,q]
     numPoly[k] <-- p
     denPoly[k] <-- q
  finpour j