vendredi 6 août 2021

Des polynômes de Lagrange aux coefficients du binôme de Pascal

Une curiosité des polynômes d'interpolation de Lagrange appliqués aux suites, fait apparaître les coefficients du binôme de Pascal.

Introduction

Polynômes d'interpolation de Lagrange

On appelle polynômes d'interpolation de Lagrange aux abscisses $x_0, x_1, ... ,x_{n-1}$ les polynômes $L_0, L_1, ... , L_{n-1}$ définnis pour $p = 0, 1, ... , n-1$ par :

$$L_p(X) = \prod_{k=0, p\ne p}^{k=n-1} \frac{X - x_k}{x_p - x_k}$$

On a alors pour tout $k\ne p$, $L_p(x_k)=0$ et autrement $L_p(x_p)=1$.

On démontre aisément que la famille $L_0(X), L_1(X), ... , L_{n-1}(X)$ est une base de l'espace vectoriel des polynômes de degré inférieur à $n$. (Il suffit de démontrer que cette famille est libre, $a_0L_0(X) + ... + a_{n-1}L_{n-1}(X)=0 \iff ... $)

Application à une suite

Étant donné les quatre premiers termes d'une suite $u_0, u_1, u_2, u_3$, calculons le terme $u_4$ par la méthode d'interpolation de Lagrange. (C'est plutôt une extrapolation).

Nous écrivons : $$P(X)=\frac{(X-1)(X-2)(X-3)}{(0-1)(0-2)(0-3)}u_0 + \frac{X(X-2)(X-3)}{1(1-2)(1-3)}u_1+\frac{X(X-1)(X-3)}{2(2-1)(2-3)}u_2+\frac{X(X-1)(X-2)}{3(3-1)(3-2)}u_3$$

Et nous estimons $u_4$ à

$$P(4)=\frac{(4-1)(4-2)(4-3)}{(0-1)(0-2)(0-3)}u_0 + \frac{4(4-2)(4-3)}{1(1-2)(1-3)}u_1+\frac{4(4-1)(4-3)}{2(2-1)(2-3)}u_2+\frac{4(4-1)(4-2)}{3(3-1)(3-2)}u_3$$

Soit $$\mathbf{u_4=-u_0+4u_1-6u_2+4u_3}$$

Exemples

Avec $u_n=f(n)=n^2 - 1$ on a $f(4)=15$ et $u_4=-f(0)+4f(1)-6f(2)+4f(3)=15$ (évidemment !)

Mais avec $u_n=f(n)=n^3+n+1$ il y a une petite différence, puisque $f(4)=69$ et $u_4=-f(0)+4f(1)-6f(2)+4f(3)=68$.

Cet écart s'accroît en prenant $u_n=f(n)=n^4 - n^3$. $f(4)=168$ et $u_4=192$.

De même avec $f(n)=exp(x)$ on obtient $f(4)=\simeq 54.6$ et $u(4)\simeq 45.9$.

La curiosité

La formule $u_4=-u_0+4u_1-6u_2+4u_3$ s'écrit $u_0-4u_1+6u_2-4u_3+u_4$ et on ne peut s'empêcher de faire le parallèle avec la formule du binôme $(1-x)^4=1-4x+6x^2-4x^3+x^4$. Formellement il suffit de remplacer $x^k$ par $u_k$.

Quelques résultats avec sympy

Le code (lagrange.py) :

 1	#!/usr/bin/env python3
 2	from sympy import *
 3	def L(n, p):
 4	    N = prod([n - k for k in range(n) if k != p])
 5	    D = prod([p - k for k in range(n) if k != p])
 6	    return N//D
 7	for n in range(2, 10):
 8	    sgn = "" if sign(L(n, 0)) >=0 else "-"
 9	    print(f"u{n} = {sgn}u0", end="")
10	    for p in range(1, n):
11	        a = L(n, p) # coefficient de u_p
12	        sgn = " +" if sign(a) >= 0 else " -"
13	        print(f"{sgn} {abs(a)}u{p}", end="")
14	    print()

Commentaires :

La librairie sympy n'est utilisée que pour la fonction prod

Ligne 8 : $L(n, 0)$ est soit égal 1 soit égal à -1.

Ligne 9 : On affiche -u0 lorsque $L(n, 0) \lt 0$ et u0 sinon

Ligne 10 : affichage à partir de p = 1

Ligne 11 : le signe binaire est + si $a > 0$ et - sinon

Ligne 12 : transformation du signe de a en signe binaire + ou - et affichage

Résultat :

u2 = -u0 + 2u1
u3 = u0 - 3u1 + 3u2
u4 = -u0 + 4u1 - 6u2 + 4u3
u5 = u0 - 5u1 + 10u2 - 10u3 + 5u4
u6 = -u0 + 6u1 - 15u2 + 20u3 - 15u4 + 6u5
u7 = u0 - 7u1 + 21u2 - 35u3 + 35u4 - 21u5 + 7u6
u8 = -u0 + 8u1 - 28u2 + 56u3 - 70u4 + 56u5 - 28u6 + 8u7
u9 = u0 - 9u1 + 36u2 - 84u3 + 126u4 - 126u5 + 84u6 - 36u7 + 9u8

Remarque : Les coefficients du binôme apparaissent très nettement, dès qu'on ramène tout dans le même membre.

Généralisation

Soit $u_0,...,u_{n-1}$ n termes d'une suite $(n\in ℕ^+)$.

L'interpolation par les polynômes de Lagrange sera : $P(X)=\sum_{p=0}^{n-1} L_p(X)u_p$ où $$L_p(X)= \prod_{k=0, k\ne k}^{n-1} \frac{X - k}{p - k}$$

On souhaite approcher $u_{n}$ par $P(n)$.

Les polynômes de Lagrange deviennent : $$L_p(n)= \prod_{k=0, k\ne p}^{n-1} \frac{n - k}{p - k}$$ ou encore :

$$L_p(n)=\prod_{k=0}^{p-1}\frac{n-k}{p-k}×\prod_{k=p+1}^{k=n-1}\frac{n-k}{p-k}$$

Pour $p=0$ on a

$$L_0(n)=\frac{(n-1)...1}{(0-1)...(0-n+1)}=(-1)^{n-1}$$

Et pour $p\gt0$, en explicitant :

$$L_p(n)=\frac{n×...×(n-p+1)}{p×...×1}×\frac{(n-p-1)×...×1}{(-1)×...×(p-n+1)}$$

La première fraction est littéralement l'expression du coefficient du binôme $$(_p^n)$ (ou $C_n^p$ pour les anciens comme moi).

Dans la deuxième fraction on retrouve en bas les opposés des facteurs du haut, écrits en sens inverse. Comme leur nombre est $n-p-1$, cette fraction vaut $(-1)^{n-p-1}$.

Finalement : $$L_p(n)=(-1)^{n-p-1}(_p^n)$$ et

$$\mathbf{u_n=(-1)^{n-1}u_0+(-1)^{n-2}(_1^n)u_1+...+(-1)^{n-p-1}(_p^n)u_p+...+nu_{n-1}}$$

Avec la notation $C_n^p$ ça donne :

$$u_n=(-1)^{n-1}u_0+(-1)^{n-2}C_n^1 u_1+...+(-1)^{n-p-1}C_n^p u_p+...+nu_{n-1}$$

Curiosité

La curiosité de l'affaire, pour laquelle j'ai rédigé cet article, et qu'en ramenant tout dans le même membre on retrouve l'expression de $(u-1)^n$ dans laquelle on a substitué au monôme $(-1)^{n-p-1}u^p$ le terme $(-1)^{n-p-1}u_p$.

Remarque : En LaTex il suffit de remplacer toutes les occurences de u^p par u_p.





Réalisé avec Qlam - LGPL