• Non ci sono risultati.

Analisi Numerica I Approssimazione polinomiale

N/A
N/A
Protected

Academic year: 2021

Condividi "Analisi Numerica I Approssimazione polinomiale"

Copied!
18
0
0

Testo completo

(1)

Analisi Numerica I Approssimazione polinomiale

Ana Alonso

ana.alonso@unitn.it

15 novembre 2019

(2)

I polinomi

Un polinomio di grado n in Matlab si rapresenta mediante un vettore di n + 1 componenti che contiene i coefficienti del polinomio ordinati da quello di grado n a quello di grado 0.

p(x ) = 3x 4 − 2x 3 + x − 5

>> p = [3 -2 0 1 -5]

I polyval(p,z) calcola il valore di p in uno o pi` u punti.

>> z=[-1 0 1];

>> pz = polyval(p,z)

I roots(p) calcola le radici di p.

I polyder(p) calcola i coefficienti del polinomio derivata di p.

>> dp = polyder(p)

I polyint(p) calcola i coefficienti di una primitiva (quella che si annulla in x = 0) di p.

>> q = polyint(p)

(3)

Esercizio

I Disegnare il grafico del polinomio p(x ) = 3x 4 − 2x 3 + x − 5 nell’intervallo [−1, 1].

I Calcolare

Z 1

−1

p(x ) dx

(4)

Il comando polyfit

I Se x e y sono due vettori di n + 1 componenti, il comando p=polyfit(x,y,n) calcola il polinomio interpolatore dei dati {(x i , y i )} n i =0 .

I Se m 6= n il comando p=polyfit(x,y,m) calcola i coefficienti del polinomio di grado m che meglio approssima i dati

{(x i , y i )} n i =0 nel senso dei minimi quadrati:

p ∈ P m :

n

X

i =0

(p(x i ) − y i ) 2 = min

q∈P

m

n

X

i =0

(q(x i ) − y i ) 2 .

(5)

Esercizio

Data la funzione f (x ) = x x +4

3

+1 disegnare il grafico di f (x ) e

I del polinomio che interpola f (x ) nei nodi x 0 = −1, x 1 = 0, x 2 = 1,

I del polinomio che interpola f (x ) nei nodi x 0 = −1,

x 1 = −1/2, x 2 = 0, x 3 = 1/3, x 4 = 2/3, x 5 = 1,

nell’intervallo [−1, 1].

(6)

Esempio di Runge

Si consideri la funzione f (x ) = 1

1 + x 2 x ∈ I = [−5, 5] . Scrivere un script di Matlab per disegnare:

I la funzione f ,

I il grafico del polinomio Π N f che interpola f in N + 1 punti equispaziati dell’intervallo I .

Si pu` o osservare come

−5≤x≤5 max |f (x) − Π N f (x )| −→ ∞ se N → ∞ .

(7)

Esempio di Runge

fun=@(x) 1./(x.^2+1);

n=input(’Grado del polinomio: ’);

a=-5;b=5;

h=(b-a)/n;

x=[a:h:b];

fx=fun(x);

p=polyfit(x,fx,n);

xx=linspace(a,b);

pxx=polyval(p,xx);

fxx=fun(xx);

plot(xx,fxx,xx,pxx,x,fx,’*’);

legend(’1/(x^2+1)’,’Polinomio intepolatore’,’Dati’);

(8)

Nodi di Chebishev

Nell’intervallo [−1, 1] sono ˆ

x i = − cos  i π N



i = 0, . . . , N .

−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

−0.2 0 0.2 0.4 0.6 0.8 1 1.2

N=6

E in un intervallo generico [a, b]

x i = a + b

2 + b − a

2 x ˆ i i = 0, . . . , N .

(9)

Esempio di Runge

Si consideri di nuovo la funzione f (x ) = 1

1 + x 2 x ∈ I = [−5, 5] . Scrivere un script di Matlab per disegnare:

I la funzione f ,

I il grafico del polinomio b Π N f che interpola f nei N + 1 nodi di Chebishev dell’intervallo I .

Si pu` o osservare come

−5≤x≤5 max |f (x) − b Π N f (x )| −→ 0 se N → ∞ .

(10)

Nodi di Chebishev

fun=@(x) 1./(x.^2+1);

n=input(’Grado del polinomio: ’);

a=-5; b=5;

x=-cos([0:n]*pi/n);

x=(a+b)/2+(b-a)/2*x;

fx=fun(x);

q=polyfit(x,fx,n);

xx=linspace(a,b);

qxx=polyval(q,xx);

fxx=fun(xx);

plot(xx,fxx,xx,qxx,x,fx,’* ’);

legend(’1/(x^2+1)’,’Polinomio interpolatore’,’Dati’);

(11)

Splines

Se x e y sono due vettori di uguale lungheza

>> yy = spline(x,y,xx)

calcola il valore in xx della spline cubica “not-a-knot” (derivata terza continua in x 1 e x N−1 ) e che interpola i dati {(x i , y i )} N i =0 .

>> s = spline(x,y)

restituisce la spline cubica “not-a-knot” che interpola i dati {(x i , y i )} N i =0 come funzione polinomiale a tratti.

Per calcolare il valore della spline cosi costruita in xx si usa il comando

>> yy = ppval(s,xx)

(12)

Esercizio

Per i dati contenuti nella tabella

x

i

0 0.5 1.6 2.9 3.4 4.8 5.2 5.7 6.0

y

i

2.20 2.13 3.32 5.21 5.10 7.05 7.00 8.00 8.25

disegnare il grafico della retta di migliore approssimazione nel senso

dei minimi quadrati, del polinomio interpolatore e della spline

cubica interpolatoria “not-a-knot”.

(13)

Forma di Newton del polinomio interpolatore

Dati {(x i , y i )} N i =0 = {(x i , f (x i ))} N i =0 sia Π m f (x ) il polinomio di grado m che interpola {(x i , y i )} m i =0

Π N f (x ) = Π N−1 f (x ) + q N (x )

I q N (x ) ` e un polinomio di grado N.

I q N (x i ) = 0 per i = 0, 1, . . . , N − 1.

Quindi

q N (x ) = α(x − x 0 )(x − x 1 ) . . . (x − x N−1 ) .

I α ` e il coefficiente di grado N nel polinomio Π N f (x ).

I Si chiama N-esima differenza divisa di Newton e si indica

f [x 0 , x 1 , . . . , x N ]

(14)

Forma di Newton del polinomio interpolatore

Chiaramente

f [x 0 , x 1 , . . . , x N ] = f (x N ) − Π N−1 f (x N ) (x N − x 0 )(x N − x 1 ) . . . (x x − x N−1 ) ma si usa una formula ricorsiva pi` u efficiente.

f [x 0 , x 1 , . . . , x N ] = f [x 1 , . . . , x N ] − f [x 0 , x 1 , . . . , x N−1 ]

x N − x 0 .

(Questo perch´ e

Π

0,1,...,N

f (x ) = x − x

0

x

N

− x

0

Π

1,...,N

f (x ) + x − x

N

x

0

− x

N

Π

0,...,N−1

f (x ) .)

(15)

Forma di Newton del polinomio interpolatore

Abbiamo visto che

Π N f (x ) = f [x 0 , x 1 , . . . , x N ](x −x 0 )(x −x 1 ) . . . (x −x N−1 )+Π N−1 f (x ) ma questa formula vale anche per Π N−1 f (x ) quindi

Π

N

f (x ) = f [x

0

, x

1

, . . . , x

N

](x − x

0

)(x − x

1

) . . . (x − x

N−1

) +f [x

0

, x

1

, . . . , x

N−1

](x − x

0

)(x − x

1

) . . . (x − x

N−2

) + · · · + f [x

0

, x

1

](x − x

0

) + f [x

0

]

e f [x 0 ] = y 0 .

(16)

Tabella delle differenze divise

x

0

f [x

0

]

x

1

f [x

1

] f [x

0

, x

1

] =

f [xx1]−f [x0]

1−x0

x

2

f [x

2

] f [x

1

, x

2

] =

f [xx2]−f [x1]

2−x1

f [x

0

, x

1

, x

2

] =

f [x1,xx2]−f [x0,x1]

2−x0

x

3

f [x

3

] f [x

2

, x

3

] =

f [xx3]−f [x2]

3−x2

f [x

1

, x

2

, x

3

] =

f [x2,xx3]−f [x1,x2]

3−x1

f [x

0

, x

1

, x

2

, x

3

]

(17)

Forma di Newton del polinomio interpolatore

Π 0,1,2,3 f (x ) = f [x 0 ] + (x − x 0 )f [x 0 , x 1 ] + (x − x 0 )(x − x 1 )f [x 0 , x 1 , x 2 ] +(x − x 0 )(x − x 1 )(x − x 2 )f [x 0 , x 1 , x 2 , x 3 ]

= f [x

0

] + (x − x

0

) f [x

0

, x

1

] + (x − x

1

) 

f [x

0

, x

1

, x

2

] + (x − x

2

)f [x

0

, x

1

, x

2

, x

3

] 

Algoritmo di Horner

c

1

= f [x

0

], c

2

= f [x

0

, x

1

], c

3

= f [x

0

, x

1

, x

2

], c

4

= f [x

0

, x

1

, x

2

, x

3

].

Pz = c

4

fori = 3 : −1 : 1

Pz = c

i

+ (z − x

i −1

) Pz

end

(18)

Differenze divise

La seguente funzione calcola il valore in z del polinomio che interpola i dati {(x i , y i )} n i =1 usando la forma di Newton del polinomio interpolatore e l’algoritmo di Horner.

function Pz=interpol(x,y,z) n=length(x);

A=zeros(n,n);

% Costruzione della tabella A(:,1)=y;

for j=2:n

A(j:n,j)=(A(j:n,j-1)-A((j:n)-1,j-1))./(x(j:n)-x((j:n)-(j-1)))’;

end

% Horner Pz=A(n,n);

for k=n-1:-1:1

Pz=A(k,k)+(z-x(k)).*Pz;

end

Riferimenti

Documenti correlati

Questo teorema asserisce che la soluzione ai minimi quadrati L m di grado m, su un set di nodi sufficientemente fitti, dar´a uniformemente una buona appros- simazione della funzione

Non deve sorprendere la prima colonna, visto che stiamo approssimando un polinomio di grado 30 con altri di grado minore... Questa tecnica permette in qualche senso di evidenziare

Basandoci sulle formule di quadratura gaussiane, possiamo introdurre questa formula di cubatura sul toro e dimostrare il seguente risultato:

Il caso più semplice corrisponde a funzioni lineari a tratti (polinomi di primo grado in ciascun sotto-intervallo). Talvolta funziona meglio del

Algebra lineare numerica: teorema fondamentale di invertibilit` a e appli- cazioni (teorema di Gershgorin sulla localizzazione degli autovalori); metodi iterativi per sistemi

• Elementi di analisi numerica per modelli differenziali: differenze finite per problemi ai valori iniziali e al contorno, stabilit`a e convergenza, il metodo delle linee per

Nei punti P1 e P2 (figura 4.28), posti rispettivamente a valle e a monte della struttura, le oscillazioni corrispondono in fase e ampiezza, con qualche diffe- renza sui

Prevede di scrivere una matrice dove è una matrice triangolare superiore e le sono le matrici elementari di Gauss che ogni volta “azzerano l’i-esima colonna al di sotto della