07. Teoria dell'approssimazione

7. Teoria dell'approssimazione

La teoria dell'approssimazione è una branchia dell'analisi numerica utile ad approssimare una serie di dati con una funzione di qualche tipo.
Può essere divisa in due macroaree:

data fitting

Si hanno delle misurazioni sperimentali dell'allungamento di una molla:

x 2 3 4 ... 10
F 7.0 8.3 9.4 ... 15.9

Legge di Hooke:
F(x)=k(xl)=kx+kl

type: line
labels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
series:
  - title: x
    data: [3, 4.5, 7.0,8.3, 9.4, 10.2, 11.4 ,12.8, 14.0, 14.2,15.9 ]
tension: 0.2
width: 80%
labelColors: false
fill: false
beginAtZero: false
bestFit: true
bestFitTitle: undefined
bestFitNumber: 0
interpolazione

Braccio robotico deve fare dei fori.
Dobbiamo comunicare:

  • Posizione dei fori
  • Percorso più breve
    Uso polinomi a tratti di grado 3 (Spline)

Approssimazione ai minimi quadrati

Sia φ(x) la funzione approssimante
Vogliamo minimizzare la distanza tra i dati e la funzione approssimante.

Calcolo la distanza come norma Euclidea: scarto quadratico
i=0n(φ(xi)yi)2
Voglio minimizzare lo scarto quadratico

osservazione

Posso anche pesare i dati:

i=0nwi(φ(xi)yi)2

Possibili funzioni approssimanti

Retta

p1(x)=ax+b

2 parametri incogniti: a,b

Polinomi algebrici

Per fenomeni regolari dove non prevediamo grosse variazioni

pm(x)=a0+a1x+a2x2++amxm

m+1 parametri incogniti

Polinomi trigonometrici

TM(x)=a02+k+1M(akcos(kx)+bksin(kx))

2m+1 parametri incogniti

Funzioni lineari logaritmiche

Funzioni esponenziali

Problema fondamentale

Dato il vettore Γ:
Γ=[γ0γM]
di M+1 parametri.

Lo [[#Scarto quadratico]] è
σ2=i=0n(φ(xi)yi)=i=0n((γ0ψ0(xi)+γ1ψ1(xi)++γMψM(xi))yi)2
Le incognite sono i parametri γ.

L'obiettivo è minimizzare rispetto ai parametri la funzione:
σ2=F(γ0,γ1,,γM)
Procedo al calcolo della derivata:
Fγk(γ0,γ1,,γM)=!00kM
Fγk={Fγ0=i=0n(2(γ0ψ0(xi)++γMψM(xi)yi)ψ0(xi))=!0Fγ1=i=0n(2(γ0ψ0(xi)++γMψM(xi)yi)ψ1(xi))=!0FγM=i=0n(2(γ0ψ0(xi)++γMψM(xi)yi)ψM(xi))=!0

Distribuendo la sommatoria, ottengo
Fγk=γ0i=0nψ0(xi)ψk(xi)hk1++γMi=0nψM(xi)ψk(xi)i=0nyiψk(xi)=0
da cui definisco una matrice H, simmetrica:
H=[h00h01h0Mh10h11h1MhM0hM1hMM]R(M+1)×(M+1)
le cui entrate sono:
hij=i=0nψi(xi)ψj(xi)
Posso quindi costruire la matrice V di seguito e porre H=VTV:
V=[ψ0(x0)ψ1(x0)ψM(x0)ψ0(x1)ψ1(x1)ψM(x1)ψ0(xn)ψ1(xn)ψM(xn)]R(n+1)×(M+1)

Calcolo l'Hessiana
Hess=(2Fγjγk)0j,kM=2H
Rispetto alla derivata prima, i Γ tali che la derivata prima fa 0 sono punti di minimo se:

Polinomio Algebrico ai minimi quadrati

definisco il polinomio:
PM=a0+a1x++aMxM=γ0ψ0(x)+γ1ψ1(x)++γMψM(x)

si ha quindi che ψk(x)=xk

gli elementi della matrice H sono:
hjk=i=0nψj(xi)ψk(xi)=i=0nxijxik=i=0nxij+k=sj+k
Termine noto:
bk=i=0nyiψk(xi)=i=0nyixik

Retta di regressione M = 1

[[#Polinomio Algebrico ai minimi quadrati]] di grado 1
r(x)=a0+a1x
si ha
HΓ=B[h00h01h10h11][a0a1]=[b0b1][s0s1s1s2][a0a1]=[b0b1]

dove
a0=b0s2b1s1s0s2s12a1=b1s0b0s1s0s2s12

metodo

Retta di regressione:

r(x)=a0+a1x

Elementi matrice H:

hjk=i=0nψj(xi)ψk(xi)=i=0nxijxik=i=0nxij+k=sj+k

Termine noto B:

bk=i=0nyiψk(xi)=i=0nyixik

Coefficienti:

a0=b0s2b1s1s0s2s12a1=b1s0b0s1s0s2s12

Costruire la retta di regressione per le seguenti misurazioni:

i 0 1 2 3 4 5 6
xi 2 3 4 5 6 8 10
Fi 7.0 8.3 9.4 11.3 12.3 14.4 15.9
F(x)=k(xl)=kxkl

In questo caso a1=k
n=7
Calcolo

s0=i=0nxi0=7s1=i=0nxi1+0=2+3+4+5+6+8+10=38s2=i=0nxi2+0=4+9+16+25+36+64+100=254

per cui:

H=[73838254]

Calcolo il termine noto:

b0=i=0nyixi0=7.020++15.9=78.60b1=i=0nyixi1=7.02++15.910=481

Calcolo i parametri

a0=78.67481387383825.049=kla1=1.1383=k
type: line
labels: [2,3,4,5,6,8,10]
series:
  - title: Forza
    data: [7.0,8.3,9.4,11.3,12.3,14.4,15.9]
tension: 0.2
width: 80%
labelColors: false
fill: false
beginAtZero: false
bestFit: false
bestFitTitle: Retta di regressione
bestFitNumber: 0

Approssimazione trigonometrica

Ha periodo T=2π

La funzione approssimante è una funzione del tipo:

TM(x)=a02+k+1M(akcos(kx)+bksin(kx))

Dobbiamo determinare i coefficienti ak,bk: 2M+1 coefficienti incogniti.

metodo

Funzione approssimante:
TM(x)=a02+k+1M(akcos(kx)+bksin(kx))

Coefficienti:
a0=2n+1i=0nyiak=2n+1i=0nyicos(kxi)1kMbk=2n+1i=0nyisin(kxi)1kM

Interpolazione

interpolazione

Un tipo di approssimazione tale che la funzione approssimante fn rispetta la proprietà:
fn(xi)=fi
dove fi sono i valori disponibili ed assunti da una funzione f nei nodi xi

Interpolazione polinomiale

Siano assegnati i valori {fi} che una funzione f, di una variabile reale x, assume in n+1 nodi distinti {xi},i=.0,1,...,n.
Il problema dell'interpolazione polinomiale consiste nella determinazione di un polinomio di grado minimo che passi per i punti Pi(xi,fi),i=0,1,...,n. Essondo i punti n+1, è sufficiente un polinomio di grado n: pnPn che risulti:

pn(xi)=fii=0,1,...,n

Si ha che il generico polinomio di grado n è

pn=a0+a1x+a2x2++anxn

Per la determinazione dei coefficienti ci si riduce al sistema:

{a0+a1x0+a2x02++anx0n=f0a0+a1x1+a2x12++anx1n=f1a0+a1xn+a2xn2++anxnn=fn

dal quale otteniamo la matrice dei coefficienti (di questo sistema), detta matrice di Vandermonde:

V=[1x0x02x0n1x1x12x1n1xnxn2xnn]

Questa matrice, nella base dei monomi, può risultare mal condizionata. Si preferisce quindi usare una forma diversa del polinomio, i #Polinomi di base di Lagrange.

Polinomi di base di Lagrange

Si tratta di n+1 polinomi di grado n che chiameremo {li(x)}:

l0(x),l1(x),...,ln(x)Pn

ognuno dei quali soddisfa la seguente proprietà:

lk(xi)=δki={1,i=k0,ik

Per cui:

lk(x)=i=0,iknxxixkxi

Si può a questo punto scrivere il polinomio interpolatore come:

pn(x)=f0l0(x)+f1l1(x)++fnln(x)

In breve:

metodo

Costruisco i polinomi di Lagrange:
lk(x)=i=0,iknxxixkxi
Scrivo il polinomio interpolatore come:
pn(x)=f0l0(x)+f1l1(x)++fnln(x)

esempio

❗❗❗❗❗❗❗❗❗❗❗❗
❗❗❗ COMPLETARE ❗❗❗
❗❗❗❗❗❗❗❗❗❗❗❗

Errore di interpolazione

Nell'interpolazione ci sono 2 sorgenti di errore:

Definito pn il polinomio interpolatore ideale calcolato in corrispondenza ai valori esenti da errori.

pn=f(x0)l0(x)+f(x1)l1(x)++f(xn)ln(x)

e pn il polinomio interpolatore trovato:

pn(x)=f0l0(x)+f1l1(x)++fnln(x)

definiamo l'errore di interpolazione come segue:

errore di interpolazione ($e_{int}(x)$)

Eint(x)=fxpn(x)==f(x)pn(x)En(x)+pn(x)pn(x)En(x)=En(x)+En(x)
dove

  • En(x)= Errore di troncamento
  • En(x)= Errore di propagazione

Per cui è ovvio che, dalla ##disuguaglianza triangolare

maggiorazione errore totale

|EnTOT(x)||En(x)|+|En(x)|

Errore di troncamento (interpolazione)
En(x)=Πn(x)f(n+1)(ξ(x))(n+1)!ξ(x)[x0,x]

con Πn(x) polinomio nodale

Πn(x)=i=0n(xxi)

Dell'errore di troncamento, possiamo dare la seguente maggiorazione:

errore di propagazione

|En(x)||Πn(x)|maxx0,xn|f(n+1)(x)|(n+1)!

Errore di propagazione (interpolazione)
errore di propagazione

|En(x)|εi=0n|li(x)|=εΛ(x)
dove

  • ε= l'errore sui dati
  • li(x)= è l'i-esimo polinomio in base di Lagrange
  • Λ(x)= è la funzione di Lebesgue
    ricordo:
    li(x)=j=0ijnxxjxixj

Interpolazione trigonometrica

metodo
  • Nodi: {xi,yi}0in
    xi=i2πn+1

Polinomio interpolatore trigonometrico
Tn(x)=a02+k=0n2(akcos(kx)+bksin(kx))
Coefficienti:
ak=2n+1i=0nyicos(kxi)0kn2bk=2n+1i=0nyisin(kxi)1kn2

Interpolazione Spline

Partizione

partizione ($\delta$)

La partizione Δ di un intervallo [a,b] è un insieme di punti tali che
Δ:a=x0<x1<<xn1<xn=b

Funzione Spline

funzione spline

La funzione Spline di grado m associata alla partizione Δ è Sm(x) dove

  1. Sm(x) è un polinomio di grado m nei sotto-intervalli [xi1,xi],1in
  2. Sm(x)Cm1[a,b]Sm(k)(xi)=Sm(k)(xi+)1km1

Spline lineare

S1(x) è un polinomio di grado 1 nei sottointervalli Ti=[xi1,xi]1in tale che

S1(xi)=S1(xi+) S1(xi)=yi

Schermata 2023-07-03 alle 18.46.54.png

metodo

Spline lineare interpolante, x[xi1,xi]
S1(x)1hi((xix)yi1+(xxi1)yi)


Base lagrangiana:
Bl(x)={1hl(xxl1),xl1xxl1hl(xl+1xl),xlxxl+10,Altrove
Per cui la spline lineare interpolante in base lagrangiana diventa:
S1(x)=i=0nyiBi(x)