Matrices et coefficients d’Euler [Python]

Les questions [P] utilisent Python. On définit les nombres de Stirling de seconde espèce {\left\{\begin{smallmatrix}n\\[4pt]p\end{smallmatrix}\right\}}, notés aussi {S(n,p)}, par {S(0,0)=1}, {S(k,0)=S(0,k)=0} pour {k\ge1}, et
{S(n,p)=S(n-1,p-1)+pS(n-1,p)\quad(n,p\ge1)}On a {S(n,1)=S(n,n)=1} pour {n\ge1}, et {S(n,p)=0} si {p\gt n}.

1. (a) Former à la main le triangle de Stirling pour {0\le p\le n\le4}.

1. (b) [P] Écrire T(n) renvoyant la matrice d’ordre {n}, de terme {S(i,j)} pour {0\le i,j\le n-1}. Vérifier T(5).

Pour {n\ge0}, on définit le polynôme exponentiel {E_n(x)=\sum\limits_{p=0}^nS(n,p)x^p}. Pour {n\ge1}, on pose {M_n(x)=(E_{i+j}(x))_{0\le i,j\le n-1}}.

2. (a) [P] Écrire E(n), en lisant la dernière ligne de T(n+1). Vérifier les premiers polynômes et E(5).

2. (b) [P] Écrire M(n,x) renvoyant {M_n(x)}. Vérifier le résultat pour {n=5,x=1}.

2. (c) Calculer et simplifier les entiers {\det M_n(i)} pour {1\le n\le5} et {i\in\{1,2,3\}}.

Dans la question suivante, on écrit {E_i} au lieu de {E_i(x)}.

3. (a) Vérifier que {E_{i+1}=x(E_i+E_i^\prime)} pour tout {i\ge0}.

3. (b) Vérifier qu’en dérivant {p} fois,
{E_{i+1}^{(p)}=x(E_i^{(p)}+E_i^{(p+1)})+p(E_i^{(p)}+E_i^{(p-1)})}Le dernier terme est omis si {p=0}.

3. (c) Montrer que {E_{i+j}=\sum\limits_{p\ge0}\frac{x^p}{p!}E_i^{(p)}E_j^{(p)}}. Indication : récurrence sur {i}, à {j} fixé.

4. (a) Soit {A_n(x)=(E_j^{(i)}(x))_{0\le i,j\le n-1}} et {\Delta_n(x)=\operatorname{diag}(1,x,x^2/2!,\ldots,x^{n-1}/(n-1)!)}. Montrer que {M_n=A_n^t\Delta_nA_n}. [P] Vérifier pour {n=5,x=1}.

4. (b) En déduire {\det M_n(x)} pour tout {n\ge1}.

Indications Python

np.poly1d utilise les coefficients décroissants. p(x) évalue un polynôme et p.deriv(i) sa dérivée d’ordre i. T[-1,::-1] inverse la dernière ligne d’un tableau. np.linalg.norm(A-B) mesure l’écart numérique entre deux matrices.