% xmeuris.tex (gH) :
\documentclass[a4paper,12pt]{article}
\parindent 0cm
\parskip   0.2cm
%
\begin{document}
\thispagestyle{empty}
%
{\Large \begin{center}\textsc{Partie Informatique}\end{center}}

\vspace{2cm}
%
On appelle \textit{nombres de Bernoulli} les nombres d\'{e}finis
par :
\begin{center}$(i)$ $b_0=1$, $b_1=-1/2$, $b_{2n+1}=0$ et
$b_n=\displaystyle\sum_{k=0}^n C_n^k.b_k$ si $n\geq 1$.\end{center}

a) calculer $b_2$, $b_3$, $b_4$ et $b_5$.

b) en d\'{e}duire que
$b_n=\displaystyle\frac{-1}{n+1}\sum_{k=0}^{n-1} C_{n+1}^k.b_k$.


On peut d\'{e}montrer par r\'{e}currence que les $b_k$ sont rationnels
mais la d\'{e}mon-stration n'est pas demand\'{e}e ici.
On dispose des modules
$addRat$, $subRat$, $mulRat$ et $divRat$ qui sont des modules \`{a}
r\'{e}sultat non explicite mais \`{a} param\`{e}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 \textsf{addrat(p1,q1,p2,q2,p3,q3)}
o\`{u} $p_3$ est le num\'{e}rateur du r\'{e}sultat et $q_3$ son d\'{e}nominateur.
On admettra que le module \textsf{coeffBin(n,k,c)} met dans la
variable $c$ la valeur du coefficient $C_ n^k$. Il n'est pas
demand\'{e} d'\'{e}crire le module \textsf{coeffBint(n,k,c)} pas plus
que les modules \textsf{addRat, subRat, mulRat, divRat}.

c) de fa\c{c}on \`{a} simplifier le programme, on met les num\'{e}rateurs
et les d\'{e}nomi-nateurs 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) \'{e}crire le module $calcb$ de param\`{e}tre $k$ qui affiche le
rationnel correspondant \`{a} $b_k$ sous la forme "$p/q$" gr\^{a}ce
aux modules pr\'{e}c\'{e}dents. On utilisera la syntaxe algorithmique
vue en cours (avec \textit{param\`{e}tres, locales et globales}...).

On appelle  \textit{polynomes de Bernoulli} les polynomes
$B_n$ tels que
\begin{center}
$(ii)$ $B_0(x)=1$, $B_1(x)=-1/2+X$ et
$B_n(x)=\displaystyle\sum_{k=0}^n C_n^k.b_k.x^{n-k}$.
\end{center}

d) calculer $B_2(x)$, $B_3(x)$, $B_4(x)$.

e) \'{e}crire un module $calcPolyB$ de param\`{e}tre $k$ qui calcule et
affiche par ordre croissant les coefficients du polynome $B_k$
en $x$. Les coefficients seront \'{e}crits de fa\c{c}on rationnelle gr\^{a}ce
aux modules introduits pour les questions $c)$ et $d)$ et gr\^{a}ce aux
tableaux $num$ et $den$.
%
\newpage
\thispagestyle{empty}
%
{\Large \begin{center}\textsc{Solution}\end{center}}
\vspace{2cm}
Appliquons les relations $(i)$ \`{a} n=3. On en d\'{e}duit
$$0=b_3=1.b_0+3.b_1+3.b_2+b_3 \Rightarrow b_2=-(b_0+3.b_1)/3=1/6.$$

De m\^{e}me, $b_5=0$ et donc en d\'{e}veloppant la relation $(i)$ : $b_4=-1/30$.

Applicant maintenant la
relation $(i)$ \`{a} l'ordre $n+1$ pour $n$ pair en simplifiant
par $b_{n+1}=0$, on obtient
$\displaystyle\sum_{k=0}^{n-1} C_{n+1}^k.b_k+C_{n+1}^1b_n$
soit encore
$$b_n=\displaystyle\frac{-1}{n+1}\sum_{k=0}^{n-1} C_{n+1}^k.b_k$$
ce qui est la relation demand\'{e}e.
%

L'initialisation de $num$ et $den$ se fait tout simplement par
\begin{verbatim}
  num[0] <-- 1
  den[0] <-- 1
  num[0] <-- -1
  den[0] <-- 2
\end{verbatim}


Le calcul de $b_k$ requiert le calcul des $b_i$ pr\'{e}c\'{e}dents pour
$k$ pair. Sinon, $b_k$ vaut 0 soit encore $0 / 1$. La forme principale de $calcb$ est donc

\begin{verbatim}
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
\end{verbatim}

La partie importante du module est donc la boucle du $sinon$
\`{a} savoir :

\begin{verbatim}
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
\end{verbatim}

Pour les polynomes de $Bernoulli$ on trouve bien s\^{u}r                                                                                                          \
\begin{center}$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$
\end{center}

Comme le coefficient de de $x^j$ pour $B_k(x)$ se r\'{e}duit
\`{a} $C_k^j.b_{k-j}$, on peut donc mettre tout simplement les
coefficients de $B_k(x)$ dans les tableaux $numPoly$
et $denPoly$ gr\^{a}ce aux instructions :

\begin{verbatim}
  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
\end{verbatim}
\end{document}
