This table gives some values of an unknown function f ( x ) {\displaystyle f(x)} .
Plot of the data points as given in the table.
x {\displaystyle x} | f ( x ) {\displaystyle f(x)} | ||||
---|---|---|---|---|---|
0 | 0 | ||||
1 | 0 | ., | 8415 | ||
2 | 0 | . | 9093 | ||
3 | 0 | . | 1411 | ||
4 | −0 | . | 7568 | ||
5 | −0 | . | 9589 | ||
6 | −0 | . | 2794 |
Interpolation provides a means of estimating the function at intermediate points, such as x = 2.5 {\displaystyle x=2.5} .,
nous décrivons certaines méthodes d’interpolation, différant par des propriétés telles que: la précision, le coût, le nombre de points de données nécessaires et la douceur de la fonction interpolante résultante.
constante par morceaux interpolationEdit
constante par morceaux interpolation, ou le plus proche voisin de l’interpolation.
La méthode d’interpolation la plus simple consiste à localiser la valeur de données la plus proche et à attribuer la même valeur., Dans les problèmes simples, il est peu probable que cette méthode soit utilisée, car l’interpolation linéaire (voir ci-dessous) est presque aussi facile, mais dans l’interpolation multivariée de dimension supérieure, cela pourrait être un choix favorable pour sa rapidité et sa simplicité.,règlement prend deux points de données, dire (xa,ya) et (xb,yb), et l’interpolant est donnée par:
y = y + ( y b − y a ) x − x a x b − x au point ( x , y ) {\displaystyle y=y_{un}+\left(y_{b}-y_{a}\right){\frac {x-x_{a}}{x_{b}-x_{a}}}{\text{ au point }}\left(x,y\right)}
y − y y b − y a = x − x a x b − x a {\displaystyle {\frac {y-y_{a}}{y_{b}-y_{a}}}={\frac {x-x_{a}}{x_{b}-x_{a}}}}
y − y x − x a = y b − y a x b − x a {\displaystyle {\frac {y-y_{a}}{x-x_{a}}}={\frac {y_{b}-y_{a}}{x_{b}-x_{a}}}}
l’interpolation Linéaire est rapide et facile, mais il n’est pas très précis., Un autre inconvénient est que l’interpolant n’est pas différentiable au point xk.
L’erreur suivante estimation montre que l’interpolation linéaire n’est pas très précis. Désignez la fonction que nous voulons interpoler par g, et supposons que x se trouve entre xa et xb et que g est deux fois différentiable en continu. Alors l’erreur d’interpolation linéaire est
| F ( x ) − g ( x ) | ≤ c ( x b − x a ) 2 où C = 1 8 max R ∈ | g » ( r ) | . {\displaystyle |f(x)-g(x)|\leq C(x_{b}-x_{a})^{2}\quad {\text{où}}\quad C={\frac {1}{8}}\max _{r\in }|g »(r)|.,}
en mots, l’erreur est proportionnelle au carré de la distance entre les points de données. L’erreur dans certaines autres méthodes, y compris l’interpolation polynomiale et l’interpolation spline (décrite ci-dessous), est proportionnelle aux puissances plus élevées de la distance entre les points de données. Ces méthodes produisent également des interpolants plus lisses.,
Polynôme interpolationEdit
Plot de données avec l’interpolation polynomiale appliquée
l’interpolation Polynomiale est une généralisation de l’interpolation linéaire. Notez que l’interpolant linéaire est une fonction linéaire. Nous remplaçons maintenant cet interpolant par un polynôme de degré supérieur.
considérez à nouveau le problème donné ci-dessus. Le polynôme de sixième degré suivant passe par tous les sept points:
f (x ) = − 0.,0001521 x 6 – 0,003130 x 5 + 0,07321 x 4 − 0,3577 x 3 + 0,2255 x 2 + 0,9038 x. {\displaystyle f(x)=-0.0001521 x^{6}-0.003130 x^{5}+0.07321 x^{4}-0.3577 x^{3}+0.2255 x^{2}+0.9038 X.}
en remplaçant x = 2.5, on trouve que f(2.5) = ~0.59678.
généralement, si nous avons n points de données, il y a exactement un polynôme de degré au plus n−1 passant par tous les points de données. L’erreur d’interpolation est proportionnelle à la distance entre les points de données et la puissance n. de plus, l’interpolant est un polynôme et donc infiniment différentiable. , Ainsi, nous voyons que l’interpolation polynomiale surmonte la plupart des problèmes de l’interpolation linéaire.
cependant, l’interpolation polynomiale présente également quelques inconvénients. Le calcul du polynôme d’interpolation est coûteux en calcul (voir complexité de calcul) par rapport à l’interpolation linéaire. De plus, l’interpolation polynomiale peut présenter des artefacts oscillatoires, en particulier aux points d’extrémité (voir le phénomène de Runge).
l’interpolation polynomiale peut estimer les maxima et les minima locaux qui sont en dehors de la plage des échantillons, contrairement à l’interpolation linéaire., Par exemple, l’interpolant ci-dessus a un maximum local en x ≈ 1.566, f(x) ≈ 1.003 et un minimum local en x ≈ 4.708, f(x) ≈ -1.003. Cependant, ces maxima et minima peuvent dépasser la plage théorique de la fonction—par exemple, une fonction qui est toujours positive peut avoir un interpolant à valeurs négatives, et dont l’inverse contient donc de fausses asymptotes verticales.
plus généralement, la forme de la courbe résultante, en particulier pour des valeurs très élevées ou basses de la variable indépendante, peut être contraire au bon sens, c’est-à-dire, à ce que l’on sait du système expérimental qui a généré les points de données. Ces inconvénients peuvent être réduits en utilisant l’interpolation spline ou en limitant l’attention aux polynômes de Chebyshev.
Spline interpolationEdit
Plot de données avec interpolation spline appliquée
Rappelez-vous que l’interpolation linéaire utilise une fonction linéaire pour chacun des intervalles ., Interpolation Spline utilise des polynômes de degré dans chacun des intervalles, et choisit les morceaux de polynômes tels qu’ils s’intègrent bien ensemble. La fonction résultante est appelée spline.
Par exemple, la spline cubique naturelle est cubique par morceaux et différentiable deux fois en continu. De plus, sa dérivée seconde est nulle aux points d’extrémité. La spline cubique naturelle interpolant les points dans le tableau ci − dessus est donnée par
f ( x) = {−0,1522 x 3 + 0,9937 x , si x∈, − 0,01258 x 3 − 0,4189 x 2 + 1,4126 x − 0,1396 , si x ∈ , 0,1403 x 3 − 1,3359 x 2 + 3,2467 x-1.,3623 , if x ∈ , 0.1579 x 3 − 1.4945 x 2 + 3.7225 x − 1.8381 , if x ∈ , 0.05375 x 3 − 0.2450 x 2 − 1.2756 x + 4.8259 , if x ∈ , − 0.1871 x 3 + 3.3673 x 2 − 19.3370 x + 34.9282 , if x ∈ . {\displaystyle f(x)={\begin{cases}-0.1522x^{3}+0.9937x,&{\text{if }}x\in ,\\-0.01258x^{3}-0.4189x^{2}+1.4126x-0.1396,&{\text{if }}x\in ,\\0.1403x^{3}-1.3359x^{2}+3.2467x-1.3623,&{\text{if }}x\in ,\\0.1579x^{3}-1.4945x^{2}+3.7225x-1.8381,&{\text{if }}x\in ,\\0.05375x^{3}-0.2450x^{2}-1.2756x+4.,8259,&{\text{si }}x\in ,\\-0.1871 x^{3}+3.3673 x^{2}-19.3370 x+34.9282,&{\text{si }}x\in .\end{cas}}}
Dans ce cas, nous obtenons f(2.5) = 0.5972.
comme l’interpolation polynomiale, l’interpolation spline entraîne une erreur plus petite que l’interpolation linéaire, tandis que l’interpolant est plus lisse et plus facile à évaluer que les polynômes de haut degré utilisés dans l’interpolation polynomiale. Cependant, la nature globale des fonctions de base conduit à un mauvais conditionnement., Ceci est complètement atténué en utilisant des splines de support compact, telles que celles implémentées dans Boost.Math et discuté dans Kress.