Scrittura dei polinomi interpolanti in funzione dei polinomi nodali[modifica | modifica wikitesto]
Definizione 5.1
Definisco
polinomio nodale
Cerchiamo una scrittura equivalente dei polinomi interpolanti:


e tenendo conto dell'espressione di

:

Osservo che:

e valutando in

:

quindi, tornando all'espressione del polinomio interpolante:


Poniamo

dove

.
Ci si chiede qual è il costo computazionale della valutazione di

in un

assegnato. Sono necessarie:
sottrazioni per calcolare
(al denominatore)
sottrazioni per calcolare gli
nella produttoria, e questo equivale a calcolare le entrate della matrice
con 0sulla diagonale principale, tale che
.
operazioni per calcolare gli
, in particolare per calcolare ogni
, una volta che gli
sono noti, sono necessari solo
prodotti. Siccome gli
sono
ho in totale
operazioni.
addizioni (defivano dalla sommatoria) e
moltiplicazioni per calcolare
, divisione tra due numeri già noti,
operazioni per la valutazione del polinomio nodale di cui già conosco i fattori.
più una quantità trascurabile dell'ordine di
operazioni.
Mi chiedo quanto costa calcolare il polinomio interpolante in un nuovo punto
, dopo aver effettuato il calcolo descritto sopra. Le operazioni riferite ai punti 2 e 3 (calcolo completo degli
) sono indipendenti dal punto in cui si valuta il polinomio, e non vanno
ripetute a ogni passaggio. Ci hanno quindi solo
operazioni additive e
moltiplicative.
Rispetto alla risoluzione del sistema delle
equazioni nelle
incognite (come nella dimostrazione 1), dove la fattorizzazione LU richiede
operazioni, si risparmiano operazioni.
Supponiamo di aggiungere un nuovo punto
ai dati: si vuole calcolare un nuovo polinomio interpolante di grado
.
Gli
sono già stati calcolati, si ha che il nuovo polinomio è:
![{\displaystyle p_{n+1}(x)=w_{n+2}(x)*[\sum _{i=0}^{n}({\frac {z_{i}^{(n+1)}}{x-x_{i}}})+{\frac {z_{n+1}^{(n+1)}}{x-x_{n+1}}}]}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/fc49a30450ad69a58bae4754f57ababeaca01a93)

, quindi

Inoltre

e si ricava che
![{\displaystyle p_{n+1}(x)=w_{n+1}(x)*(x-x_{n+1})*[\sum _{i=0}^{n}({\frac {z_{i}^{(n)}}{(x-x_{i})(x_{i}-x_{n+1})}})+{\frac {z_{n+1}^{(n+1)}}{x-x_{n+1}}}]}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/69659cd3facad2372776bcc7ff44c81a0188a048)
quindi le operazioni totali in più, avendo già calcolato

, sono una Sottrazione per

,

sottrazioni per

,

moltiplicazioni per

,

addizioni per la sommatoria,

moltiplicazioni per

, 2 operazioni per l'ultimo termine.
In totale ho
addizioni e
moltiplicazioni.
Il polinomio interpolante è unico ma ci sono diverse riscritture. La forma di Newton permette di calcolare i polinomi interpolanti aumentando le operazioni additive e diminuendo quelle moltiplicative.
Il polinomio interpolante

viene riscritto in funzione della base dei polinomi nodali, ponendo

Gli

vengono posti uguali alla differenza divisa di ordine k.
Definizione 5.2
Si indica con
la differenza divisa di ordine
(
nodi).
La differenza divisa si definisce induttivamente, ponendo:
![{\displaystyle f[x_{0}]=f(x_{0}){\hbox{per definizione}}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/c879a49fac56148d0ef3d482ae66d81376dc9354)
![{\displaystyle f[x_{0},x_{1}]={\frac {f(x_{1})-f(x_{0})}{x_{1}-x_{0}}}\quad {\hbox{rapporto incrementale}}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/e3cb3a8b6efb8c953af4db4c3633f498b2461dba)
![{\displaystyle f[x_{0},\dots ,x_{k}]={\frac {f[x_{1},\dots ,x_{k}]-f[x_{0},\dots ,x_{k-1}]}{x_{k}-x_{0}}}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/cfb2988af0154fa652c8f8134dcb05375a2beab3)
Vogliamo dimostrare che
![{\displaystyle p_n(x) = f[x_0]+ f[x_0,x_1]*(x-x_0)+ f[x_0,x_1,x_2]*(x-x_0)*(x-x_1)+\dots+ f[x_0,x_1,\dots,x_n)*(x-x_0)*(x-x_1)*(x-x_{n-1})}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/15a7519e592a737c5011c588980ee923b6e98d77)
è un polinomio interpolante, dimostriamo prima il lemma di Neville.
Lemma 5.1 (formula di Neville)
Dato
un insieme di indici, e definendo
il polinomio valutato nei nodi
per
, si ha che:

è un polinomio interpolante.
Dimostrazione
Il lemma dà una rappresentazione ricorsiva del polinomio interpolante.
- Per calcolare l'espressione di
si tiene conto che il termine
è nullo, quindi rimane
- Valutando invece
si annulla il secondo termine, e rimane:

- per un generico
, si ha:


Ho quindi verificato tutte le condizioni di interpolazione.
Teorema 5.3 (dimostrazione della forma di Newton)
![{\displaystyle p_n(x) = f[x_0]+ f[x_0,x_1]*(x-x_0)+ f[x_0,x_1,x_2]*(x-x_0)*(x-x_1)+\dots+f[x_0,x_1,\dots,x_n]*(x-x_0)*\dots*(x-x_{n-1})}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/26fd77408e6aa2eb42dc70b6d1debf85a70750d9)
è un polinomio interpolante.
Dimostrazione
Dimostro l'asserto per induzione.
- Se
, ottengo che
, per definizione.
- Per ipotesi induttiva, assumo che sia vero che il polinomio di Newton è il polinomio interpolante per il grado
rispetto alla base nodale, e lo dimostroper
.
- Supponiamo che
sia il polinomio interpolante di grado
rispetto alla base delle
date dai polinomi nodali di indice
, allora possiamo scriverlo come:
voglio dimostrare che
.Considero la formula di interpolazione di Neville. Allora
Dall'iptesi di induzione segue che:#*
è il polinomio interpolante di grado
sui nodi
, e per ipotesi di induzione il coefficiente
del termine di grado massimo è
.#*
è il polinomio interpolante rispetto ai nodi
e il coefficiente
del suo termine di grado massimo è
.Quindi, nel polinomio
, in base alla formula di Neville e a quanto osservato, il coefficiente del termine di grado massimo è:
![{\displaystyle = \frac{1*f[x_1, \dots, x_n]-1*f[x_0,\dots,x_{n-1}]}{x_n-x_0} = f[x_0,\dots,x_n] \quad \hbox{per definizione}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/2dddffd951cd4ab4189f01a021035ae1d3d9777f)
La differenza divisa non dipende dall'ordine dei punti, infatti, confrontando la scrittura del polinomio interpolante in forma di Newton e di Lagrange, per il coefficiente
si ha:
![{\displaystyle a_n = f[x_0,\dots,x_n] = \sum_{i=0}^n \frac{f(x_i)}{p_{n+1}'(x_i)}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/78c729ccd119cb8b55838b15db0b7fc2133abaa2)
siccome nella sommatoria non c'è dipendenza dall'ordine dei punti, anche la differenza divisa non ne dipende in aritmetica esatta.
Considero i due vettori colonna
e
dove
. L'algoritmo alla Neville porta alla costruzione di una matrice triangolare inferiore A, dove le entrate sono determinate nel seguente modo:





Ad esempio, presi 6 punti

la matrice che risulta dall'algoritmo di Neville è:
![{\displaystyle {\begin{array}{ccccccc}x_{0}&f(x_{0})&&&&&\\x_{1}&f(x_{1})&f[x_{1},x_{0}]&0&0&0&0\\x_{2}&f(x_{2})&f[x_{2},x_{1}]&f[x_{2},x_{1},x_{0}]&0&0&0\\x_{3}&f(x_{3})&f[x_{3},x_{2}]&f[x_{3},x_{2},x_{1}]&f[x_{3},\dots ,x_{0}]&0&0\\x_{4}&f(x_{4})&f[x_{4},x_{3}]&f[x_{4},x_{3},x_{2}]&f[x_{4},\dots ,x_{1}]&f[x_{4},\dots ,x_{0}]&0\\x_{5}&f(x_{5})&f[x_{5},x_{4}]&f[x_{5},x_{4},x_{3}]&f[x_{5},\dots ,x_{2}]&f[x_{5},\dots ,x_{1}]&f[x_{5},x_{0}]\end{array}}}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/ef58c372f296ff08aa4ab2f8b46a4d3beb8a6ae8)
Il ciclo viene fatto a ritroso perché, calcolando la triangolare
inferiore con la colonna partendo dal basso, si possono sovrascrivere direttamente i vettori. In questo algoritmo,
l'entrata

diventa la differenza divisa tra gli elementi

e

, per ogni j.
Numero di operazioni effettuate: per ogni elemento faccio una divisione e due sottrazioni, e
la triangolare inferiore ha
elementi, quindi vengono effettuate
operazioni additive e
operazioni moltiplicative.
Per la valutazione del polinomio di Newton in un punto
si usa l'algoritmo di Horner:
Ad esempio, nel caso di un polinomio di grado 3, il polinomio di Newton si rappresenta come:

Raccolgo

tra gli ultimi tre addendi:
![{\displaystyle p_{n}=a_{0}+(x-x_{0})*[a_{1}+a_{2}(x-x_{1})+a_{3}(x-x_{1})(x-x_{2})]}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/3a5463cf53c14e61d51bf966ed7cac406c460565)
Poi raccolgo

tra gli ultimi due addendi:
![{\displaystyle p_{n}=a_{0}+(x-x_{0})*[a_{1}+(x-x_{1})*[a_{2}+(x-x_{2})*a_{3}]]}](//restbase.wikitolearn.org/it.wikitolearn.org/v1/media/math/render/svg/0bbe83fe6a7e2b3f9c2d69915c4dbbf7c0572cea)
e per eseguire le operazioni parto dall'ultima parentesi.
Tuttavia le operazioni necessarie per la valutazione del polinomio in un punto sono di più rispetto a quelle del polinomio di Lagrange.