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(x−l)=−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)=!00≤k≤M
∂F∂γk={∂F∂γ0=∑i=0n(2(γ0ψ0(xi)+⋯+γMψM(xi)−yi)⋅ψ0(xi))=!0∂F∂γ1=∑i=0n(2(γ0ψ0(xi)+⋯+γMψM(xi)−yi)⋅ψ1(xi))=!0⋮∂F∂γM=∑i=0n(2(γ0ψ0(xi)+⋯+γMψM(xi)−yi)⋅ψM(xi))=!0

Distribuendo la sommatoria, ottengo
∂F∂γk=γ0∑i=0nψ0(xi)ψk(xi)⏟hk1+⋯+γM∑i=0nψM(xi)ψk(xi)−∑i=0nyiψk(xi)=0
da cui definisco una matrice H, simmetrica:
H=[h00h01⋯h0Mh10h11⋯h1M⋮⋮⋱⋮hM0hM1⋯hMM]∈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)0≤j,k≤M=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=b0s2−b1s1s0s2−s12a1=b1s0−b0s1s0s2−s12

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=b0s2−b1s1s0s2−s12a1=b1s0−b0s1s0s2−s12

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(x−l)=kx−kl

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.0⋅20+⋯+15.9=78.60b1=∑i=0nyixi1=7.0⋅2+⋯+15.9⋅10=481

Calcolo i parametri

a0=78.6⋅7−481⋅387⋅38−382≈5.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+1∑i=0nyiak=2n+1∑i=0nyicos⁡(kxi)1≤k≤Mbk=2n+1∑i=0nyisin⁡(kxi)1≤k≤M

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: pn∈Pn 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=f1⋮a0+a1xn+a2xn2+⋯+anxnn=fn

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

V=[1x0x02⋯x0n1x1x12⋯x1n⋮⋮⋮⋱⋮1xnxn2⋯xnn]

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,i≠k

Per cui:

lk(x)=∏i=0,i≠knx−xixk−xi

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,i≠knx−xixk−xi
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)=fx−pn(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(x−xi)

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=0i≠jnx−xjxi−xj

Interpolazione trigonometrica

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

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

Interpolazione Spline

Partizione

partizione ($\delta$)

La partizione Δ di un intervallo [a,b] è un insieme di punti tali che
Δ:a=x0<x1<⋯<xn−1<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 [xi−1,xi],1≤i≤n
  2. Sm(x)∈Cm−1[a,b]⟺Sm(k)(xi−)=Sm(k)(xi+)∀1≤k≤m−1

Spline lineare

S1(x) è un polinomio di grado 1 nei sottointervalli Ti=[xi−1,xi]1≤i≤n tale che

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

Schermata 2023-07-03 alle 18.46.54.png

metodo

Spline lineare interpolante, x∈[xi−1,xi]
S1(x)1hi((xi−x)yi−1+(x−xi−1)yi)


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