Algorithme de calcul des coefficients polynomiaux
En mathématiques , les différences divisées sont un algorithme , historiquement utilisé pour le calcul de tables de logarithmes et de fonctions trigonométriques . Le moteur de différence de Charles Babbage , une des premières calculatrices mécaniques , a été conçu pour utiliser cet algorithme dans son fonctionnement.
Les différences divisées sont un processus de division récursif . La méthode peut être utilisée pour calculer les coefficients du polynôme d'interpolation sous la forme de Newton .
Définition
Étant donné k + 1 points de données

Les différences divisées en avant sont définies comme :
![[y_{\nu }]:=y_{\nu },\qquad \nu \in \{0,\ldots ,k\}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f0b559f584afa31efe09d04b4be0e091807e66c6)
![[y_{\nu },\ldots ,y_{{\nu +j}}]:={\frac {[y_{{\nu +1}},\ldots ,y_{{\nu +j}}] -[y_{{\nu }},\ldots ,y_{{\nu +j-1}}]}{x_{{\nu +j}}-x_{\nu }}},\qquad \nu \ dans \{0,\ldots ,kj\},\ j\in \{1,\ldots ,k\}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a3fbf429b65bad77486a9d90314d4af6e5edf0c1)
Les différences divisées en amont sont définies comme :
![[y_{\nu }]:=y_{{\nu }},\qquad \nu \in \{0,\ldots ,k\}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f0b559f584afa31efe09d04b4be0e091807e66c6)
![[y_{\nu },\ldots ,y_{{\nu -j}}]:={\frac {[y_{\nu },\ldots ,y_{{\nu -j+1}}]-[ y_{{\nu -1}},\ldots ,y_{{\nu -j}}]}{x_{\nu }-x_{{\nu -j}}}},\qquad \nu \in \ {j,\ldots ,k\},\ j\in \{1,\ldots ,k\}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a9ca4b8abdebfbfaf509c340f8aa07f1508e8c8b)
Notation
Si les points de données sont donnés en fonction ƒ ,

on écrit parfois
![f[x_{\nu }]:=f(x_{{\nu }}),\qquad \nu \in \{0,\ldots ,k\}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/7d88b6aba15e3cd2f79af1376a2d5e9b1df1c416)
![f[x_{\nu },\ldots ,x_{{\nu +j}}]:={\frac {f[x_{{\nu +1}},\ldots ,x_{{\nu +j} }]-f[x_{\nu },\ldots ,x_{{\nu +j-1}}]}{x_{{\nu +j}}-x_{\nu }}},\qquad \nu \in \{0,\ldots ,kj\},\ j\in \{1,\ldots ,k\}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/424ee9e0456399b61b1ed8c66e90ca761fa7dc3e)
Plusieurs notations de la différence divisée de la fonction ƒ sur les nœuds x 0 , ..., x n sont utilisées:
![[x_{0},\ldots ,x_{n}]f,](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/52676412ab23500b8def307e74643ea7146220fe)
![[x_{0},\ldots ,x_{n};f],](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/8a0edff404a8cd6ec5f52354e4988a9dfe8badce)
![D[x_{0},\ldots ,x_{n}]f](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/025c36fb7047d8abf731cb19957cca1f7bd2b23a)
etc.
Exemple
Différences divisées pour et les premières valeurs de :


![{\begin{aligned}{\mathopen [}y_{0}]&=y_{0}\\{\mathopen [}y_{0},y_{1}]&={\frac {y_{1}- y_{0}}{x_{1}-x_{0}}}\\{\mathopen [}y_{0},y_{1},y_{2}]&={\frac {{\mathopen [} y_{1},y_{2}]-{\mathopen [}y_{0},y_{1}]}{x_{2}-x_{0}}}={\frac {{\frac {y_{ 2}-y_{1}}{x_{2}-x_{1}}}-{\frac {y_{1}-y_{0}}{x_{1}-x_{0}}}}{x_ {2}-x_{0}}}={\frac {y_{2}-y_{1}}{(x_{2}-x_{1})(x_{2}-x_{0})}} -{\frac {y_{1}-y_{0}}{(x_{1}-x_{0})(x_{2}-x_{0})}}\\{\mathopen [}y_{0 },y_{1},y_{2},y_{3}]&={\frac {{\mathopen [}y_{1},y_{2},y_{3}]-{\mathopen [}y_ {0},y_{1},y_{2}]}{x_{3}-x_{0}}}\end{aligned}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c7c5a021041c0405a351383f2e34f0de88e4e58b)
Pour rendre le processus récursif plus clair, les différences divisées peuvent être présentées sous forme de tableau :
![{\begin{matrix}x_{0}&y_{0}=[y_{0}]&&&\\&&[y_{0},y_{1}]&&\\x_{1}&y_{1}=[y_ {1}]&&[y_{0},y_{1},y_{2}]&\\&&[y_{1},y_{2}]&&[y_{0},y_{1},y_{ 2},y_{3}]\\x_{2}&y_{2}=[y_{2}]&&[y_{1},y_{2},y_{3}]&\\&&[y_{2 },y_{3}]&&\\x_{3}&y_{3}=[y_{3}]&&&\\\end{matrice}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d60ef92b00038923edcedaecccbadd25373b07c1)
Propriétés
![(f+g)[x_{0},\dots ,x_{n}]=f[x_{0},\dots ,x_{n}]+g[x_{0},\dots ,x_{n} ]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/f9f98450062d604d6056db6fed7a9294708084a8)
![(\lambda \cdot f)[x_{0},\dots ,x_{n}]=\lambda \cdot f[x_{0},\dots ,x_{n}]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/5285d5f07af1a864344dc27d700002afb4e4e82e)
![{\displaystyle (f\cdot g)[x_{0},\dots ,x_{n}]=f[x_{0}]\cdot g[x_{0},\dots ,x_{n}]+f [x_{0},x_{1}]\cdot g[x_{1},\dots ,x_{n}]+\dots +f[x_{0},\dots ,x_{n}]\cdot g [x_{n}]=\sum _{r=0}^{n}f[x_{0},\ldots ,x_{r}]\cdot g[x_{r},\ldots ,x_{n} ]}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/7eb7cdd2db0caf752548b0e82bc8cd744a30cb18)
- Les différences divisées sont symétriques : si est une permutation alors

![{\displaystyle f[x_{0},\dots ,x_{n}]=f[x_{\sigma (0)},\dots ,x_{\sigma (n)}]}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/02ce355ce667f1d9c4825733b42075bb74702610)
-
où est dans l'intervalle ouvert déterminé par le plus petit et le plus grand des 's.

Forme matricielle
Le schéma de différence divisée peut être mis dans une matrice triangulaire supérieure . Laissez .
![T_{f}(x_{0},\dots ,x_{n})={\begin{pmatrix}f[x_{0}]&f[x_{0},x_{1}]&f[x_{0} ,x_{1},x_{2}]&\ldots &f[x_{0},\dots ,x_{n}]\\0&f[x_{1}]&f[x_{1},x_{2}] &\ldots &f[x_{1},\dots ,x_{n}]\\\vdots &\vdots &\vdots &\ddots &\vdots \\0&0&0&\ldots &f[x_{n}]\end{pmatrix }}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/eeb0275a0992c3ac7b1a7d1e99efeb617d13e65b)
Puis ça tient


- Cela découle de la règle de Leibniz. Cela signifie que la multiplication de telles matrices est commutative . En résumé, les matrices de schémas aux différences divisées par rapport au même ensemble de nœuds forment un anneau commutatif .
- Puisque est une matrice triangulaire, ses valeurs propres sont évidemment .


- Soit une fonction de type delta de Kronecker , c'est-à-dire


- De toute évidence , est donc une fonction propre de la multiplication de la fonction point par point. C'est en quelque sorte une " matrice propre " de : . Cependant, toutes les colonnes de sont des multiples les unes des autres, le rang de la matrice de est 1. Vous pouvez donc composer la matrice de tous les vecteurs propres à partir de la -ème colonne de chaque . Notons la matrice des vecteurs propres avec . Exemple











- La diagonalisation de peut s'écrire sous la forme

-
.
Définitions alternatives
Forme développée
Avec l'aide d'une fonction polynomiale avec cela peut être écrit comme


![f[x_{0},\dots ,x_{n}]=\sum _{{j=0}}^{{n}}{\frac {f(x_{j})}{q'(x_{ j})}}.](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/d70d0adea806c0745ea62425edf7d02bc19b4215)
Alternativement, nous pouvons autoriser le décompte à rebours depuis le début de la séquence en définissant quand ou . Cette définition permet d' être interprété comme , d' être interprété comme , d' être interprété comme , etc . La forme développée de la différence divisée devient ainsi









Une autre caractérisation utilise des limites :
Fractions partielles
Vous pouvez représenter des fractions partielles en utilisant la forme développée des différences divisées. (Cela ne simplifie pas le calcul, mais est intéressant en soi.) Si et sont des fonctions polynomiales , où et est donné en termes de facteurs linéaires par , alors il résulte de la décomposition en fractions partielles que





![{\frac {p(\xi )}{q(\xi )}}=\left(t\to {\frac {p(t)}{\xi -t}}\right)[x_{1}, \points ,x_{n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/4c501f97857416ab97cd46a2c7f4ee82c02095e4)
Si les limites des différences divisées sont acceptées, alors cette connexion est également valable, si certaines des différences coïncident.

Si est une fonction polynomiale de degré arbitraire et elle est décomposée en utilisant la division polynomiale de par , alors




![{\frac {p(\xi )}{q(\xi )}}=\left(t\to {\frac {f(t)}{\xi -t}}\right)[x_{1}, \points ,x_{n}].](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/39b3eb5698ac665c2256ae18c6f25ae8c798e4d5)
forme Peano
Les différences divisées peuvent être exprimées comme
![f[x_{0},\ldots ,x_{n}]={\frac {1}{n!}}\int _{{x_{0}}}^{{x_{n}}}f^{ {(n)}}(t)B_{{n-1}}(t)\,dt](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/4ae40d8692899cbc0fdcb156a32205e51c00250b)
où est une B-spline de degré pour les points de données et est la dérivée -ième de la fonction .






C'est ce qu'on appelle la forme Peano des différences divisées et s'appelle le noyau Peano pour les différences divisées, tous deux nommés d'après Giuseppe Peano .

Forme de Taylor
Premier ordre
Si les nœuds sont cumulés, le calcul numérique des différences divisées est inexact, car vous divisez presque deux zéros, chacun avec une erreur relative élevée due à des différences de valeurs similaires . Cependant, nous savons que les quotients de différence se rapprochent de la dérivée et vice versa :
-
pour
Cette approximation peut être transformée en identité chaque fois que le théorème de Taylor s'applique.


Vous pouvez éliminer les puissances impaires de en développant la série de Taylor au centre entre et :



-
, C'est



Ordre supérieur
La série de Taylor ou toute autre représentation avec des séries de fonctions peut en principe être utilisée pour approximer les différences divisées. Les séries de Taylor sont des sommes infinies de fonctions puissance . Le mappage d'une fonction à une différence divisée est une fonctionnelle linéaire . On peut aussi bien appliquer cette fonctionnelle aux fonctions summands.

![f[x_{0},\points ,x_{n}]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/683c749df05d7cf790d0a90a9b90a8e4006d8b5d)
Exprimez la notation de puissance avec une fonction ordinaire :
La série de Taylor régulière est une somme pondérée de fonctions puissance :
Série de Taylor pour les différences divisées :
Nous savons que les premiers termes disparaissent, car nous avons un ordre de différence plus élevé que l'ordre polynomial, et dans le terme suivant la différence divisée est de un :

![{\begin{array}{llcl}\forall j<n&p_{j}[x_{0},\dots ,x_{n}]&=&0\\&p_{n}[x_{0},\dots ,x_ {n}]&=&1\\&p_{{n+1}}[x_{0},\dots ,x_{n}]&=&x_{0}+\dots +x_{n}\\&p_{{ n+m}}[x_{0},\dots ,x_{n}]&=&\sum _{{a\in \{0,\dots ,n\}^{m}{\text{ with } }a_{1}\leq a_{2}\leq \dots \leq a_{m}}}\prod _{{j\in a}}x_{j}.\\\end{array}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/5744582c2f328c1801bd971953ad4f418e94dd9a)
Il s'ensuit que la série de Taylor pour la différence divisée commence essentiellement avec laquelle est également une simple approximation de la différence divisée, selon le théorème de la valeur moyenne pour les différences divisées .

Si nous devions calculer les différences divisées pour les fonctions puissance de la manière habituelle, nous rencontrerions les mêmes problèmes numériques que nous avons rencontrés lors du calcul de la différence divisée de . Ce qui est bien, c'est qu'il existe un moyen plus simple. Ça tiens

![t^{n}=(1-x_{0}\cdot t)\dots \cdot (1-x_{n}\cdot t)\cdot (p_{0}[x_{0},\dots ,x_{ n}]+p_{1}[x_{0},\dots ,x_{n}]\cdot t+p_{2}[x_{0},\dots ,x_{n}]\cdot t^{2 }+\points ).](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/c28497f7cc37231c42f6e0766dac9ac1aa777a90)
Par conséquent, nous pouvons calculer les différences divisées de par une division de séries formelles entières . Voyez comment cela se réduit au calcul successif de puissances lorsque nous calculons pour plusieurs .

![p_{n}[h]](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/a5b14665a90a4b859361d12d54272917d4c20ba5)

Si vous avez besoin de calculer un schéma de différence divisé entier par rapport à une série de Taylor, consultez la section sur les différences divisées de séries entières .
Polynômes et séries entières
Les différences divisées de polynômes sont particulièrement intéressantes, car elles peuvent bénéficier de la règle de Leibniz. La matrice avec


contient le schéma des différences divisées pour la fonction identité par rapport aux nœuds , contient donc les différences divisées pour la fonction puissance avec exposant . Par conséquent, vous pouvez obtenir les différences divisées pour une fonction polynomiale
par rapport au polynôme
en appliquant (plus précisément : sa fonction polynomiale matricielle correspondante ) à la matrice .






-
![={\begin{pmatrix}\varphi (p)[x_{0}]&\varphi (p)[x_{0},x_{1}]&\varphi (p)[x_{0},x_{1 },x_{2}]&\ldots &\varphi (p)[x_{0},\dots ,x_{n}]\\0&\varphi (p)[x_{1}]&\varphi (p) [x_{1},x_{2}]&\ldots &\varphi (p)[x_{1},\dots ,x_{n}]\\\vdots &\ddots &\ddots &\ddots &\vdots \\0&\ldots &0&0&\varphi (p)[x_{n}]\end{pmatrix}}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/e2d023602c65ea4569c811cb08cf09805ba12e81)
C'est ce qu'on appelle la formule d'Opitz .
Considérons maintenant augmenter le degré de à l'infini, c'est-à-dire transformer le polynôme de Taylor en une série de Taylor . Soit une fonction qui correspond à une série entière . Vous pouvez calculer un schéma de différence divisée en calculant la série de matrices correspondante appliquée à . Si les nœuds sont tous égaux, alors est un bloc de Jordan et le calcul se résume à généraliser une fonction scalaire à une fonction matricielle en utilisant la décomposition de Jordan .





Différences en avant
Lorsque les points de données sont distribués de manière équidistante, nous obtenons le cas particulier appelé différences directes . Ils sont plus faciles à calculer que les différences divisées plus générales.
Notez que la "partie divisée" de la différence avant divisée doit toujours être calculée, pour récupérer la différence avant divisée de la différence avant .
Définition
Étant donné n points de données

avec

les différences divisées peuvent être calculées via des différences à terme définies comme


La relation entre les différences divisées et les différences directes est
![{\displaystyle f[x_{0},x_{1},\ldots ,x_{k}]={\frac {1}{k!h^{k}}}\Delta ^{(k)}f( x_{0}).}](/criselda-https-wikimedia.org/api/rest_v1/media/math/render/svg/2877faf8afce76e86dfec5b133eb20230f37c155)
Exemple

Voir également
Les références
-
Louis Melville Milne-Thomson (2000) [1933]. Le calcul des différences finies . Société mathématique américaine. Chapitre 1 : Différences divisées. ISBN 978-0-8218-2107-7.
-
Myron B. Allen ; Eli L. Isaacson (1998). Analyse numérique pour les sciences appliquées . John Wiley & Fils. Annexe A. ISBN 978-1-118-03027-1.
-
Ron Goldman (2002). Algorithmes pyramidaux : une approche de programmation dynamique des courbes et des surfaces pour la modélisation géométrique . Morgan Kaufmann. Chapitre 4 : Interpolation de Newton et triangles de différence. ISBN 978-0-08-051547-2.
Liens externes