Interpolazione spline: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0.8
 
(28 versioni intermedie di 21 utenti non mostrate)
Riga 1:
L''''interpolazione spline''' in [[analisi numerica]] è un particolare metodo di [[interpolazione (matematica)|interpolazione]] chebasato si serve disulle [[funzione spline|funzioni spline]]. Si tratta di uno strumento dell'[[analisi numerica]] utilizzato in molti campi applicativi (ad esempio in [[fisica]] o [[statistica]]). A differenza dell'[[interpolazione polinomiale]], che utilizza un unico polinomio per approssimare la funzione su tutto l'intervallo di definizione, l'interpolazione spline è ottenuta suddividendo l'intervallo in più sotto-intervalli ( I<sub>''k''</sub>=[''x''<sub>''k''</sub>,''x''<sub>''k+1''</sub>] con ''k=1,...,N-1'') e scegliendo per ciascuno di essi un polinomio di grado d (di solito piccolo). Verrà poi imposto che due polinomi successivi si saldino in modo liscio, cioè osservando la [[funzione continua|continuità]] didelle qualcheprime d-1 [[derivataderivate]]. La funzione che si ottiene con un procedimento di questo genere si chiama '''funzione spline'''. L'[[interpolazione lineare]], che utilizza una [[funzione lineare]], ossia un polinomio di grado 1, su ogni sotto-intervallo può essere considerata un caso particolare di interpolazione spline.
 
== Esempio ==
Di una funzione di variabile reale ''f'' nota in altra sede, si supponga di conoscere i valori che tale funzione assume solo in un insieme di ''N'' punti. Si indichino con ''x<sub>k</sub>'', ''k'' = 1, ... ''N'' i nodi nei quali sono noti i valori della funzione ''f''. In ognuno dei nodi la funzione assumerà valore ''f''(''x<sub>k</sub>)'').
 
[[Immagine:Interpolation Data.svg|thumb|Diagramma dei punti dati]]
Presentiamo qui un esempio. In particolare si abbiano i punti dati dalla seguente tabella:
{|
 
|
{|{{prettytable|width=150px|align=|text-align=center |font-size=}}
{|class="wikitable" style="width:150px;text-align:center;"
!''x'' || ''f''(''x'')
|-
Riga 13 ⟶ 14:
|-
|1
|0.,8415
|-
|2
|0.,9093
|-
|3
|0.,1411
|-
|4
|&minus;0.−0,7568
|-
|5
|&minus;0.−0,9589
|-
|6
|&minus;0.−0,2794
|}
|[[Immagine:Interpolation Data.svg|thumb|Diagramma dei punti dati]]
|}
 
Nel nostro caso ''N=7'';
''x''<sub>''1''</sub>=0,''x''<sub>''2''</sub>=1,...,''x''<sub>''7''</sub>=6.
 
Un esempio di '''funzione spline''' è la '''spline naturale cubica'''. Questa '''funzione spline''' è a tratti una cubica e due volte differenziabile nell'intero intervallo. Inoltre, la relativa derivata seconda è zero nei punti finaliestremi.
In ogni intervallo I<sub>''k''</sub> la funzione assume la forma:
:<math>f(I_kx)=a_k x^3+b_k x^2+c_k x+d_k, \ x\in I_k</math>
 
La spline naturale cubica che interpola i punti nella tabella qui sopra è così definita
 
:<math> f(x) = \left\{ \begin{matrix}
-0.{,}1522 x^3 + 0.{,}9937 x, & \mbox{se } x \in [0,1], \\
-0.{,}01258 x^3 - 0.{,}4189 x^2 + 1.{,}4126 x - 0.{,}1396, & \mbox{se } x \in [1,2], \\
0.{,}1403 x^3 - 1.{,}3359 x^2 + 3.{,}2467 x - 1.{,}3623, & \mbox{se } x \in [2,3], \\
0.{,}1579 x^3 - 1.{,}4945 x^2 + 3.{,}7225 x - 1.{,}8381, & \mbox{se } x \in [3,4], \\
0.{,}05375 x^3 -0.{,}2450 x^2 - 1.{,}2756 x + 4.{,}8259, & \mbox{se } x \in [4,5], \\
-0.{,}1871 x^3 + 3.{,}3673 x^2 - 19.{,}3370 x + 34.{,}9282, & \mbox{se } x \in [5,6]. \\
\end{matrix} \right. </math>
 
Se per ogni nodo <math>x_k</math> è nota non solo f(<math>f(x_k)</math>), ma anche f'(<math>f'(x_k)</math>), è possibile costruire una '''funzione spline''' che è di classe <math>C^{1}</math>[<math>x_1</math>,<math> x_N]</math>], cioè una funzione che nell'intervallo [:<math>[:x_1</math>,<math>x_N]</math>] è continua, derivabile con derivata prima continua.
 
Consideriamo la funzione nota per punti introdotta nella tabella precedente. Se si suppone che in ogni punto <math>x_k</math>, ''k = 1, ..., N'',</math> tale che :<math>f'(x_k)=0</math>, in ogni intervallo <math>I_k</math> la funzione <math>f(I_k)</math> deve soddisfare 4 condizioni:
:<math>a_k x_k^3+b_k x_k^2+c_k x_k+d_k=f(x_k)</math>
:<math>a_{k+1} x_{k+1}^3+b_{k+1} x_{k+1}^2+c_{k+1} x_{k+1}+d_{k+1}=f(x_{k+1})</math>
:<math>3a_k x_k^2+2b_k x_k+c_k=0</math>
:<math>3a_{k+1} x_{k+1}^2+2b_{k+1} x_{k+1}+c_{k+1}=0</math>
 
In tal modo possiamo ottenere un sistema lineare <math>Ax=b</math> di quattro equazioni in 4 incognite così definito:
 
'''Matrice:matrice dei coefficienti''':
 
:<math> A = \left[ \begin{matrix}
Riga 68 ⟶ 70:
\end{matrix} \right]</math>
 
'''Vettore:vettore dei termini noti''':
 
:<math> b = \left[ \begin{matrix}
Riga 77 ⟶ 79:
\end{matrix} \right] </math>
 
'''Vettore:vettore delle incognite''':
 
:<math> x = \left[ \begin{matrix}
Riga 84 ⟶ 86:
c(k)\\
d(k)
\end{matrix} \right]. </math>
 
==Proprietà==
La funzione interpolante ottenuta con la interpolazione spline, rispettoè allapiù interpolante''liscia'' ottenutadi quelle ottenute con l'interpolazionealtri lineare,metodi come(ad quella ottenutaesempio con la l'[[interpolazione polinomiale]], presenta errori inferiori ed è più liscia), nel senso che è la funzione interpolante con ''[[funzione spline|''curvatura media minima'']]''.
 
Inoltre, l'interpolante spline risulta più facile da valutare dei polinomi di grado elevato richiesti dalla interpolazione polinomiale e non soffre del [[fenomeno di Runge]].
 
PeròTuttavia, se i dati da interpolare hanno conformazioni particolari (ad esempio formano dei gradini), la spline interpolante può essere soggetta al [[fenomeno di Gibbs]], ampie oscillazioni in vicinanza di un gradino. Per ovviare a questo problema vengono utilizzate le ''smoothing spline'' o le ''tension spline''.
 
{|
|[[Immagine:InterpolazioneSpline.png |thumb |350px|leftupright=1.6| Interpolazione spline dei punti dell'esempio precedente]]
 
|[[Immagine:GibbsXspline.png|thumb |right |350pxupright=1.6| Interpolazione con spline lineare e cubica di un "gradino" - Fenomeno di Gibbs]]
|}
<br clear=all>
 
==Storia e interpretazione fisica==
[[Immagine:Interpolazione-Spline-IAC-anni-30.jpg|thumb|right|400pxupright=1.8|Pesi utilizzati per fissare le spline]]
Originariamente le spline (in italiano "flessibili") erano degli strumenti da disegno formati da lunghe fettucce elastiche tenute ferme nei punti di interpolazione da dei grossi pesi. Il significato originale della parola inglese ''spline'' è appunto ''striscia di legno o metallo''.
 
Nell'immagine accanto sono visibili alcuni di questi pesi e l'uso che se ne faceva negli anni '30 presso l'[[Istituto per le Applicazioni del Calcolo|IAC]].
Riga 110 ⟶ 112:
Globalmente la fettuccia si dispone in modo da minimizzare l'energia elastica:
 
:<math>\ \Bigleft( \int \left| f''(x) \right|^2\,dx \Bigright)^{1/2}</math>
 
il che può essere interpretato geometricamente dicendo che minimizza la curvatura media.
Riga 117 ⟶ 119:
 
Le ''smoothing spline'' corrispondono alla possibilità di non vincolare strettamente la fettuccia a passare per i punti di interpolazione, ma permettere un aggiustamento regolato dal gancio posto all'estremità del peso.
 
== Collegamenti esterni ==
 
*[https://people.scs.fsu.edu/~burkardt/f_src/spline/spline.html Libreria pubblica] di programmi Fortran90 per l'interpolazione spline
 
*[http://pages.cs.wisc.edu/~deboor/ Carl de Boor] pagina personale con ricca bibliografia sulle spline e interessanti [http://pages.cs.wisc.edu/~deboor/draftspline.html immagini].
 
==Voci correlate==
* [[Funzione spline]]
* [[Spline quadratica]]
* [[Smoothing]]
 
== Collegamenti esterni ==
*[http://tools.timodenk.com/cubic-spline-interpolation Strumento online per l'interpolazione cubica spline con visualizzazione e codice sorgente JavaScript]
*[httpshttp://people.scs.fsu.edu/~burkardt/f_src/spline/spline.html Libreria pubblica] {{Webarchive|url=https://web.archive.org/web/20080929151906/http://people.scs.fsu.edu/~burkardt/f_src/spline/spline.html |date=29 settembre 2008 }} di programmi Fortran90 per l'interpolazione spline
*[http://pages.cs.wisc.edu/~deboor/ Carl de Boor] pagina personale con ricca bibliografia sulle spline e interessanti [http://pages.cs.wisc.edu/~deboor/draftspline.html immagini].
 
{{portale|matematica}}
 
[[Categoria:Interpolazione]]
 
[[de:Spline-Interpolation]]
[[en:Spline interpolation]]
[[hu:Köbös spline interpoláció]]
[[pl:Interpolacja funkcjami sklejanymi]]
[[zh:样条插值]]