Sei sulla pagina 1di 14

1.3.

3
Approssimazione
di funzioni

Luca Facchini

Introduzione

I polinomi
ortogonali

Analisi della
1.3.3 Approssimazione di funzioni convergenza

Utilizzo dei polinomi ortogonali Note conclusive

Luca Facchini

Dipartimento di Ingegneria Civile e Ambientale - DICeA


Università degli Studi di Firenze
luca.facchini@unifi.it
Introduzione 1.3.3
Approssimazione
di funzioni

Riassunto Luca Facchini

Parlando sempre di approssimazione, ricordiamo che una generica Introduzione


funzione f (x) può essere approssimata dall’espressione I polinomi
ortogonali
Nf
X Analisi della
f˜(x) = αk gk (x) convergenza

Note conclusive
k=1

dove le funzioni gk (x) vengono scelte, mentre i coefficienti αk sono


calcolati risolvendo il sistema lineare

Gα = f

Le componenti dela matrice G sono date dagli integrali


Z
Gh,k = gh (x) gk (x) dx
D

e le componenti del vettore f dagli integrali


Z
fh = f (x) gh (x) dx
D

Infine, D indica l’intervallo dove si vuole calcolare l’approssimazione.


I polinomi ortogonali - 1 1.3.3
Approssimazione
di funzioni

Luca Facchini

Introduzione

I polinomi
La diagonalizzazione di G ortogonali

Analisi della
L’utilizzo dei polinomi ortogonali pk (x) al posto delle potenze della convergenza
variabile x come funzioni gk (x) migliora la qualità dell’approssimazione Note conclusive
e la risolubilità del sistema, in quanto con i polinomi ortogonali la
matrice G risulta diagonale:
Z Z
Gh,k = gh (x) gk (x) dx = ph (x) pk (x) dx = 0 se h 6= k
D D

Il sistema diventa molto più semplice da risolvere: αh = fh /Gh,h e


quindi non ci sono più problemi di malcondizionamento nell’inversione di
G.

Le componenti del vettore f sono sempre date dall’espressione


Z Z
fh = f (x) gh (x) dx = f (x) ph (x) dx
D D
I polinomi ortogonali - 2 1.3.3
Approssimazione
di funzioni

Luca Facchini

Preparazione della function


Introduzione

Per fissare le idee, riprendiamo l’esempio dell’approssimazione della I polinomi


ortogonali
funzione
 x π x π x Analisi della
convergenza
f (x) = 4 exp − sin − 2 cos
4 5 10 Note conclusive

L’intervallo in cui approssimare la funzione f (x) resta sempre [−5 ; 5].

La function che definisce la funzione resta sempre:


function y = funz(x)
%function y = funz(x)
% y = 4*exp(-x/4.0).*sin(pi*x/5.0)-2*cos(pi*x/10)
%
y1 = exp(-x/4.0);
y2 = sin(pi*x/5.0);
y3 = cos(pi*x/10);
y = 4.0*y1.*y2 - 2.0*y3;
end
Per esercizio: Disegna il grafico della funzione fra −5 e 5.
I polinomi ortogonali - 3 1.3.3
Approssimazione
di funzioni

Luca Facchini

Introduzione

I polinomi
ortogonali
Qualche considerazione iniziale
Analisi della
Prima di tutto dobbiamo scegliere quale famiglia di polinomi convergenza

utilizzeremo; nell’esempio che segue verranno impiegati i polinomi di Note conclusive


(k)
Legendre PL (x), che sono generalmente i più semplici.

I polinomi di Legendre, come abbiamo visto nella lezione relativa, sono


ortogonali nell’intervallo [−1, 1], infatti
Z 1
(h) (k)
PL (x) PL (x) dx = 0 se h 6= k
−1

Nell’esempio che stiamo esaminando l’intervallo è più grande: [−5, 5].

La prima operazione da fare è quindi un cambio di variabile per


riportare l’intervallo [−5, 5] all’intervallo [−1, 1]. Questo si può fare
definendo una variabile ξ ∈ [−1, 1] e ponendo x = 5 ξ ⇒ dx = 5 dξ e,
viceversa, ξ = x/5 ⇒ dξ = dx/5.
I polinomi ortogonali - 4 1.3.3
Approssimazione
di funzioni

Utilizzo dei polinomi Luca Facchini

(k−1)
Prendiamo la generica funzione gk (x) = PL [ξ(x)]. Introduzione

I polinomi
Quindi: ortogonali

Analisi della
1. la prima funzione sarà identicamente uguale ad 1: convergenza
(0)
g1 (ξ) = PL (ξ) = 1 (che è il primo polinomio di Legendre) Note conclusive
(1)
2. g2 (ξ) = PL (ξ) = ξ
(2)
3. g3 (ξ) = PL (ξ) = (3ξ 2 − 1)/2
4. e così via. . .
Dobbiamo modificare la function della lezione precedente in modo da
utilizzare i primi Nf polinomi ortogonali.
Le uniche componenti di G non nulle sono quelle diagonali che valgono
Z 5 Z 1 h i2
(h−1)
Gh,h = gh2 (x) dx = 5 PL (ξ) dξ
−5 −1

e anche
Z 5 Z 1
(k−1)
fk = f (x) gk (x) dx = 5 f (5 ξ) PL (ξ) dξ
−5 −1
I polinomi ortogonali - 5 1.3.3
Approssimazione
di funzioni

Luca Facchini

Introduzione

I polinomi
ortogonali

Analisi della
convergenza

Note conclusive
Fai da te. . .
Il calcolo dei polinomi di Legendre è ricorsivo e quindi non è semplice
come quello delle potenze di x, ma dato che la matrice G stavolta è
diagonale possiamo semplicemente calcolare un vettore g le cui
componenti memorizzano le componenti sulla diagonale principale di G
e quindi si può evitare il doppio ciclo “for” necessario prima per
calcolare tutti gli elementi Gh,k .

Esercizio: Prendendo esempio dalla lezione sui polinomi ortogonali e il


loro calcolo, e dalla lezione precedente sull’approssimazione, elabora un
programma che calcola l’approssimazione della funzione data con i primi
Nf polinomi ortogonali di Legendre.
Analisi della convergenza - 1 1.3.3
Approssimazione
di funzioni

Luca Facchini

Introduzione

I polinomi
ortogonali

Analisi della
convergenza

Note conclusive

Convergenza dei polinomi di Legendre


Se hai fatto l’esercizio prescritto nella slide precedente, la function che
segue non sarà difficile da comprendere; se invece non l’hai ancora
fatto. . . beh prima di tutto una “tirata di orecchi” virtuale non te la leva
nessuno.
Anche se ti consiglio di fare l’esercizio prima di continuare con la
lezione, se comunque decidi di continuare a leggere la lezione, la
function seguente ti potrà servire da “ispirazione” per fare l’esercizio.
Analisi della convergenza - 2 1.3.3
Approssimazione
di funzioni

Luca Facchini

Convergenza dei polinomi di Legendre Introduzione

La function seguente è la modifica delle precedenti function che I polinomi


ortogonali
fornivano la distanza relativa dell’approssimazione f˜(x) dalla funzione
Analisi della
data f (x) (continua nella slide seguente). convergenza

Note conclusive

function y = distanza_3(Nf)
%function y = distanza_3(Nf)
% fornisce la distanza fra la funzione f e la sua
% approssimazione ft in funzione del numero Nf di
% funzioni utilizzato nella combinazione lineare;
% le funzioni utilizzate sono i primi Nf polinomi
% ortogonali di Legendre.
%
global x fx dx Nx
G = zeros(Nf,1);
f = zeros(Nf,1);
Analisi della convergenza - 3 1.3.3
Approssimazione
di funzioni
(continua dalla slide precedente)
Luca Facchini

Introduzione

I polinomi
%% calcolo dei polinomi e loro memorizzazione ortogonali
% inizializza la matrice dove memorizza Analisi della
% i polinomi (per colonne): convergenza

PL= zeros(Nx+1,Nf); Note conclusive

xi = x/5; % definizione dell’ascissa dei polinomi


dxi= dx/5;
Pkm1 = zeros(size(xi)); % definizione del polinomio (k-1=-1)
Pk = ones(size(xi)); % definizione del polinomio (k=0)
PL(:,1) = Pk; % definizione della prima colonna della matrice dei polinomi
for k=0:Nf-2; % inizio del ciclo di calcolo dei polinomi
% Calcolo ricorsivo del polinomio (k+1):
Pkp1 = (2*k+1).*xi.*Pk/(k+1) - k*Pkm1/(k+1);
PL(:,k+2) = Pkp1; % aggiornamento della matrice dei polinomi
Pkm1 = Pk; % aggiornamento del polinomio (k-1)
Pk = Pkp1; % aggiornamento del polinomio (k)
end

Continua nella slide seguente. . .


Analisi della convergenza - 4 1.3.3
Approssimazione
di funzioni
(continua dalla slide precedente)
Luca Facchini

Introduzione

I polinomi
ortogonali

%% Analisi della
convergenza
% Calcola gli integrali che danno il sistema lineare: Note conclusive
for h=1:Nf,
gh = PL(:,h); % richiama l’(h-1)-esimo polinomio
G(h) = 5*trapz(gh.*gh)*dxi;
f(h) = 5*trapz(fx.*gh)*dxi;
end
%%
alpha = f./G; % calcola i coefficienti
tf = PL*alpha;% calcola l’approssimazione
%%
% Calcola la distanza relativa fra l’approssimazione e la funzione:
y = sqrt(trapz((fx-tf).^2)*dx)/sqrt(trapz(fx.^2)*dx);
end
Analisi della convergenza - 5 1.3.3
Approssimazione
di funzioni
La qualità dell’approssimazione ottenuta è sempre valutabile disegnando
il grafico della distanza relativa, che in questo caso risulta (in scala Luca Facchini

semilogaritmica) Introduzione

I polinomi
ortogonali

Analisi della
convergenza

Note conclusive
Analisi della convergenza - 6 1.3.3
Approssimazione
di funzioni
La figura seguente riporta il confronto fra la distanza relativa ottenuta
con le potenze di x e con i polinomi di Legendre; i polinomi di Legendre Luca Facchini

si attestano su una distanza relativa che è un ordine di grandezza Introduzione


superiore a quella ottenuta con le potenze di x. L’algoritmo che utilizza I polinomi
i polinomi ortogonali, però, è molto più veloce dell’altro. ortogonali

Analisi della
convergenza

Note conclusive
Note conclusive 1.3.3
Approssimazione
di funzioni
Per esercizio Luca Facchini

Prova a scrivere un programma che disegni il grafico mostrato nella


Introduzione
slide precedente.
I polinomi
ortogonali

Analisi della
Qualche commento convergenza

In base alla figura che riporta il confronto della convergenza ottenuta Note conclusive

con le potenze di x e con i polinomi di Legendre, sembra che i polinomi


di Legendre si comportino “peggio” delle potenze di x.

Questa differenza è frutto anche della precisione delle formule di


integrazione utilizzate, che sono basate sulla formula dei trapezi.
Su questo argomento si tornerà in seguito a proposito delle formule di
integrazione numerica.

Per esercizio, si provi a modificare il programma in modo da utilizzare


un numero maggiore di 5000 punti di integrazione e si commentino i
risultati.