Sei sulla pagina 1di 21

1.

6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza

Derivata quarta
1.6 Derivazione Esercizi proposti

Funzioni ricorsive

Derivazione di
polinomi
Luca Facchini La derivata prima
Le derivate
successive
Dipartimento di Ingegneria Civile e Ambientale - DICeA Un algoritmo
Università degli Studi di Firenze generale
luca.facchini@unifi.it Un altro esercizio
Introduzione 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza
Come calcolare le derivate Derivata quarta

Il concetto più importante da tenere a mente di tutto quanto esposto Esercizi proposti

nel paragrafo 1.6 dedicato alla derivazione numerica, è come fare per Funzioni ricorsive

calcolare effettivamente le derivate di una funzione. In particolare, Derivazione di


polinomi
dobbiamo sempre far riferimento all’utilizzo di un computer in cui una La derivata prima
qualsiasi funzione viene memorizzata mediante i valori fk che assume su Le derivate
successive
un insieme finito di punti xk ; quindi abbiamo (almeno) due vettori: il Un algoritmo
generale
vettore x e il vettore f . Un altro esercizio

Come conseguenze, in prima battuta abbiamo che:


I le derivate vengono approssimate mediante opportuni rapporti
incrementali;
I dall’analisi dell’errore, è bene che questi rapporti siano costruiti in
maniera simmetrica rispetto al punto in cui vogliamo approssimare
la derivata.
Le derivate prima e seconda - 1 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza

I primi rapporti incrementali Derivata quarta

Esercizi proposti
Supponiamo per semplicità che il vettore delle ascisse x sia costituito da
Funzioni ricorsive
punti equidistanti, cioè che xk+1 − xk = δx (costante). Indicando con
Derivazione di
fk = f (xk ), possiamo definire i rapporti incrementali (centrati su xk ) polinomi
La derivata prima
che approssimano le derivate seguenti: Le derivate
successive
fk+1 − fk−1 Un algoritmo
I derivata prima: f 0 (xk ) ≈ ; generale
2 δx Un altro esercizio
fk+1 − 2 fk + fk−1
I derivata seconda: f 00 (xk ) ≈ ;
δx2
Notiamo subito che il rapporto incrementale che approssima la derivata
seconda corrisponde al rapporto incrementale della derivata prima
calcolato sostituendo alla funzione i rapporti che esprimono la derivata
prima. In parole povere, la derivata seconda è la derivata prima della
derivata prima.
Le derivate prima e seconda - 2 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza

Derivata quarta
I primi rapporti incrementali (continua)
Esercizi proposti

Infatti, svolgiamo i conti: Funzioni ricorsive

Derivazione di
polinomi
fk+1 − fk fk − fk−1 La derivata prima

f 0 (xk+1/2 ) − f 0 (xk−1/2 ) − Le derivate


δx δx successive
f 00 (xk ) ≈ ≈ Un algoritmo
δx δx generale
Un altro esercizio
Da qui si ottiene il rapporto incrementale

fk+1 − 2 fk + fk−1
f 00 (xk ) ≈
δx2
Da notare che con il simbolo f 0 (xk+1/2 ) si è indicato la derivata prima
della funzione f calcolata per x = xk + δx /2, analogamente per
f 0 (xk−1/2 ).
Le derivate terza e quarta - 1 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda
La derivata terza Derivata terza

Analogamente, per la derivata terza possiamo calcolare “la derivata Derivata quarta

prima della derivata seconda” o viceversa, “la derivata seconda della Esercizi proposti

derivata prima”, giungendo allo stesso risultato; svolgiamo i calcoli per Funzioni ricorsive

la derivata prima della derivata seconda: Derivazione di


polinomi
La derivata prima
Le derivate
successive
f 00 (xk+1 ) − f 00 (xk−1 ) Un algoritmo
f 000 (xk ) ≈ ≈ generale
2 δx Un altro esercizio

fk+2 − 2 fk+1 + fk fk − 2 fk−1 + fk−2



δx2 δx2
2 δx
ottenendo infine

fk+2 − 2 fk+1 + 2 fk−1 − fk−2


f 000 (xk ) ≈
2 δx3
Le derivate terza e quarta - 2 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza
La derivata quarta
Derivata quarta

Riportiamo infine i calcoli per la derivata quarta, calcolata come “la Esercizi proposti

derivata seconda della derivata seconda”: Funzioni ricorsive

Derivazione di
polinomi
La derivata prima
f 00 (xk+1 ) − 2 f 00 (xk ) + f 00 (xk−1 )
f 0000 (xk ) ≈ ≈ Le derivate
successive
δx2 Un algoritmo
generale
fk+2 − 2 fk+1 + fk fk+1 − 2 fk + fk−1 fk − 2 fk−1 + fk−2 Un altro esercizio
−2 +
δx2 δx2 δx2

δx2
ottenendo infine

fk+2 − 4 fk+1 + 6 fk − 4 fk−1 + fk−2


f 0000 (xk ) ≈
δx4
Le derivate successive si ottengono con lo stesso criterio.
Esercizi proposti 1.6 Derivazione

Luca Facchini

Introduzione
Esercizio Le derivate prima
e seconda
Riprendi la function funz.m che calcolava il valore di
Derivata terza
 x π x π x
Derivata quarta
f (x) = 4 exp − sin − 2 cos
4 5 10 Esercizi proposti

Scrivi un programma che calcoli le derivate di questa funzione fino alla Funzioni ricorsive

derivata quarta nell’intervallo [−5, 5] e che poi ne mostri il grafico. Derivazione di


polinomi
Confronta il grafico ottenuto con quello delle derivate esatte date dalle La derivata prima
Le derivate
espressioni successive
Un algoritmo
x generale
e− 4 h π x  π x i π π x
f 0 (x) = 4π cos − 5 sin + sin Un altro esercizio

5 5 5 5 10

f 00 (x) =
x
e− 4 h π x  π x i
+ 16π 2 − 25 sin

− · 40π cos +
100 5 5
2
π π x
+ cos
50 10
Esercizi proposti 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
Esercizio (continua) e seconda

Derivata terza

Derivata quarta

Esercizi proposti
000
f (x) = Funzioni ricorsive
x
e− 4 h π x  π x i Derivazione di
300π − 64 π 3 cos + 240π 2 − 125 sin
 
+ polinomi
2000 5 5 La derivata prima
3 Le derivate
π  π x successive
− sin Un algoritmo
500 10 generale
Un altro esercizio

1280 π 3 − 2000 π − x4 π x
f 0000 (x) = e cos +
40000 5
4 2
256 π − 2400 π + 625 − x4 π x
+ e sin +
40000 5
4
π π x
− cos
5000 10
Il calcolo ricorsivo delle derivate successive alla seconda - 1 1.6 Derivazione

Luca Facchini

Definizione ricorsiva di una funzione Introduzione


Da quanto detto finora, si può ben immaginare che il calcolo delle Le derivate prima
e seconda
derivate successive alla seconda può essere impostato ricorsivamente
Derivata terza
secondo uno schema del genere:
Derivata quarta
1. Programma la funzione da derivare nella function funz.m Esercizi proposti
2. Immetti N = ordine della derivata da calcolare; Funzioni ricorsive

3. se N = 1 calcola il rapporto incrementale Derivazione di


polinomi
La derivata prima
fk+1 − fk−1
f 0 (xk ) ≈ Le derivate
successive
2 δx Un algoritmo
generale
Un altro esercizio
4. se N = 2 calcola il rapporto incrementale
fk+1 − 2 fk + fk−1
f 00 (xk ) ≈
δx2
5. se N > 3 allora calcola il rapporto incrementale che approssima la
derivata prima di f (N −1) :
(N −1) (N −1)
fk+1 − fk−1
f (N ) (xk ) ≈
2 δx
Il calcolo ricorsivo delle derivate successive alla seconda - 2 1.6 Derivazione

Luca Facchini

Definizione ricorsiva di una funzione (continua) Introduzione

Quindi, il calcolo della derivata N -esima implica il calcolo della derivata Le derivate prima
e seconda
(N − 1)-esima e così via; questo suggerisce di definire una function per Derivata terza
il calcolo della derivata N -esima che richiama se stessa per il calcolo Derivata quarta
della derivata (N − 1)-esima in questo modo: Esercizi proposti

Funzioni ricorsive
function y = deriv(x,N);
Derivazione di
dx = 0.01; polinomi
if N == 1, La derivata prima
Le derivate
y = (funz(x+dx) - funz(x-dx))/2.0/dx; successive
Un algoritmo
elseif N == 2, generale
Un altro esercizio
y = (funz(x+dx) - 2.0 * funz(x) + funz(x-dx))/dx^2;
else
y = (deriv(x+dx,N-1) - deriv(x-dx,N-1))/2.0/dx;
end
end

Da notare l’uso delle istruzioni if . . . elseif . . . else . . . end:


definiscono una serie di istruzioni che vengono eseguite alternativamente
a seconda del valore di N , e traducono in linguaggio MatLab i punti 3,
4 e 5 della slide precedente.
La derivata di un polinomio - 1 1.6 Derivazione

Luca Facchini

Introduzione
Un modo alternativo per calcolare la derivata
Le derivate prima
e seconda
Un’altra considerazione molto importante è che la derivata è un
Derivata terza
operatore lineare (vedi il primo paragrafo delle dispense). Quando
Derivata quarta
siamo in grado di definire una base per lo spazio delle funzioni in cui
Esercizi proposti
operiamo, la derivata (come tutti gli operatori lineari) ammette una
Funzioni ricorsive
rappresentazione matriciale.
Derivazione di
Per fissare le idee, il polinomio polinomi
La derivata prima
3 2 Le derivate
p(x) = 2 x + 3 x + x − 1 successive
Un algoritmo
 t generale
può essere rappresentato dal vettore −1 1 3 2 quando si Un altro esercizio

definisce la base dello spazio dei polinomi come 1 x x2 x3 .




La derivata prima D è un operatore lineare; vediamo come opera sugli


elementi della base:
  t

 D[1] = 0 ⇒ D[1] = 0 0 0 0
  t
D[x] = 1 ⇒ D[x] = 1 0 0 0

t
D[x2 ] = 2 x ⇒ D[x2 ] = 0 2 0 0



 t
D[x3 ] = 3 x2 ⇒ D[x3 ] = 0 0 3 0
 
La derivata di un polinomio - 2 1.6 Derivazione

Luca Facchini

Un modo alternativo (continua) Introduzione

Le derivate prima
Se mettiamo tutti questi vettori che abbiamo trovato nelle colonne di e seconda

una matrice otteniamo la rappresentazione matriciale della derivata Derivata terza

prima (nello spazio dei polinomi di terzo grado): Derivata quarta

  Esercizi proposti
0 1 0 0 Funzioni ricorsive
0 0 2 0 
D=  Derivazione di
0 0 0 3  polinomi
La derivata prima
0 0 0 0 Le derivate
successive
Un algoritmo
Guarda caso, se utilizziamo la rappresentazione vettoriale (chiamiamola generale
 t Un altro esercizio
p) del “nostro” polinomio, cioè p = −1 1 3 2 e la
moltiplichiamo per la matrice D otteniamo
    
0 1 0 0 −1 1
(1)
0 0 2 0  1  6
p = Dp =      =  
0 0 0 3  3  6
0 0 0 0 2 0

che è la rappresentazione vettoriale del polinomio p1 (x) = 1 + 6 x + 6 x2


che a sua volta è proprio la derivata prima di p(x).
La derivata seconda di un polinomio 1.6 Derivazione

Luca Facchini

Introduzione
La derivata della derivata. . . Le derivate prima
e seconda
La derivata seconda può essere considerata, come abbiamo detto più
Derivata terza
volte, la derivata della derivata, quindi possiamo dire che la
Derivata quarta
rappresentazione vettoriale della derivata seconda è ottenibile come
Esercizi proposti
    
0 1 0 0 1 6 Funzioni ricorsive

(2) (1)
0 0 2 0 6 12 Derivazione di
p = Dp =      =   polinomi
0 0 0 3 6  0  La derivata prima
0 0 0 0 0 0 Le derivate
successive
Un algoritmo
generale
cioè il polinomio p2 (x) = 6 + 12 x che è la derivata seconda di p(x). Un altro esercizio

Da quanto detto si capisce che la derivata seconda di un polinomio di


terzo grado può essere espressa dalla matrice
 
0 0 2 0
(2) 2
0 0 0 6
D =D·D=D =  
0 0 0 0
0 0 0 0

e così via. . .
Un algoritmo generale 1.6 Derivazione

Luca Facchini

Cosa succede con polinomi di grado n?


Introduzione
Se abbiamo fra le mani un polinomio di grado n, vuol dire che stiamo Le derivate prima
e seconda
operando in un sottospazio vettoriale di dimensione n + 1 la cui base è
1 x x2 . . . xn−1 xn Derivata terza

Derivata quarta
Se cerchiamo la rappresentazione matriciale della derivata prima,
Esercizi proposti
dobbiamo vedere come questo operatore agisce sugli elementi della
Funzioni ricorsive
base: abbiamo che D[xh ] = h xh−1 per cui, mettendo insieme i vettori
Derivazione di
rappresentativi delle derivate degli elementi della base, si ottiene una polinomi
matrice quadrata di n + 1 righe e n + 1 colonne siffatta: La derivata prima
Le derivate
  successive
0 1 0 0 ... 0 0 Un algoritmo
generale
0 0 2 0 . . . 0 0 Un altro esercizio
 
0 0 0 3 . . . 0 0
. . . .. .. 
 
D =  .. .. .. . . . . . . . . 
 
0 0 0 0 . . . n − 1 0 
 
0 0 0 0 . . . 0 n
0 0 0 0 ... 0 0

ottenibile con l’istruzione D = diag([1:n],1);


La matrice che rappresenta la derivata h-esima si ottiene con Dh = D^h;
ATTENZIONE: Dh = D^h; e NON Dh = D.^h;
La derivata del polinomio interpolante - 1 1.6 Derivazione

Luca Facchini

Introduzione
Esercizio
Le derivate prima
e seconda
Riprendi il programma che interpolava le coppie di dati
Derivata terza

Derivata quarta
k xk yk
Esercizi proposti
1 0.50 -0.6916 Funzioni ricorsive
2 1.00 -0.6689 Derivazione di
polinomi
3 1.50 -0.5777 La derivata prima
4 2.00 -0.3785 Le derivate
successive
5 2.50 -0.0948 Un algoritmo
generale
6 3.00 0.1890 Un altro esercizio
7 3.50 0.3762
8 4.00 0.3769
9 4.50 0.1002
10 5.00 -0.4674

e calcola, con la regola esposta nelle slides precedenti, le sue derivate


fino alla derivata quarta.
Prova a fare da solo questo esercizio, poi confronta il tuo elaborato con
il listato riportato nelle slides seguenti.
La derivata del polinomio interpolante - 2 1.6 Derivazione

Luca Facchini
Un esempio di programma
Introduzione

Le derivate prima
clear all e seconda
close all Derivata terza
clc Derivata quarta
%% Esercizi proposti
dati = [0.50 -0.6916 Funzioni ricorsive
1.00 -0.6689 Derivazione di
polinomi
1.50 -0.5777 La derivata prima
2.00 -0.3785 Le derivate
successive
2.50 -0.0948 Un algoritmo
generale
3.00 0.1890 Un altro esercizio
3.50 0.3762
4.00 0.3769
4.50 0.1002
5.00 -0.4674];
%%
x = dati(:,1); % estrae la prima colonna della mtrice "dati"
y = dati(:,2); % estrae la seconda colonna della mtrice "dati"
plot(x,y,’o’);grid
xlabel(’MISURE X’); ylabel(’MISURE Y’);
La derivata del polinomio interpolante - 3 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda
Un esempio di programma (continua) Derivata terza

Derivata quarta

%% Esercizi proposti

n = length(x); % numero di coppie di dati Funzioni ricorsive

V = zeros(n); % si inizializza V piena di zeri Derivazione di


polinomi
V(:,1) = ones(size(x)); % prima colonna della matrice di Vandermonde
La derivata prima
Le derivate
for h=1:n-1 successive
% h-esima colonna di V Un algoritmo
generale
V(:,h+1) = x.^h; Un altro esercizio

end
a = V\y; a0 = a(length(a):-1:1); % calcola i coefficienti del polinomio
xx = linspace(0.5,5,100); % insieme dei punti di calcolo
yy0 = polyval(a0,xx); % valori del polinomio interpolante
figure(2);
plot(xx,yy0,x,y,’ro’);grid
legend(’polinomio interpolante’,’dati iniziali’,2);
La derivata del polinomio interpolante - 4 1.6 Derivazione

Luca Facchini

Introduzione
Un esempio di programma (continua)
Le derivate prima
e seconda

%% Derivata terza

% Definizione operatore derivata prima: Derivata quarta

D1 = diag([1:9],1); % questa istruzione equivale alle Esercizi proposti

% seguenti righe commentate: Funzioni ricorsive

% D1 = [0 1 0 0 0 0 0 0 0 0 Derivazione di
polinomi
% 0 0 2 0 0 0 0 0 0 0 La derivata prima
Le derivate
% 0 0 0 3 0 0 0 0 0 0 successive
% 0 0 0 0 4 0 0 0 0 0 Un algoritmo
generale
% 0 0 0 0 0 5 0 0 0 0 Un altro esercizio

% 0 0 0 0 0 0 6 0 0 0
% 0 0 0 0 0 0 0 7 0 0
% 0 0 0 0 0 0 0 0 8 0
% 0 0 0 0 0 0 0 0 0 9
% 0 0 0 0 0 0 0 0 0 0];
D2 = D1*D1; % operatore derivata seconda
D3 = D1*D2; % operatore derivata terza
D4 = D2*D2; % operatore derivata quarta
La derivata del polinomio interpolante - 5 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza

Derivata quarta

Esercizi proposti

Funzioni ricorsive
Un esempio di programma (continua) Derivazione di
polinomi
La derivata prima
Le derivate
a1 = D1*a; a1 = a1(length(a1):-1:1); % coeff. der. prima successive
a2 = D2*a; a2 = a2(length(a2):-1:1); % coeff. der. seconda Un algoritmo
generale
a3 = D3*a; a3 = a3(length(a3):-1:1); % coeff. der. terza Un altro esercizio

a4 = D4*a; a4 = a4(length(a4):-1:1); % coeff. der. quarta


yp1 = polyval(a1,xx); % calcolo polinomio derivata prima
yp2 = polyval(a2,xx); % calcolo polinomio derivata seconda
yp3 = polyval(a3,xx); % calcolo polinomio derivata terza
yp4 = polyval(a4,xx); % calcolo polinomio derivata quarta
La derivata del polinomio interpolante - 6 1.6 Derivazione

Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza
Un esempio di programma (continua) Derivata quarta

Esercizi proposti
%% Funzioni ricorsive
figure(3) Derivazione di
polinomi
plot(x,y,’ro’,xx,yy0,... La derivata prima
xx,yp1,... Le derivate
successive
xx,yp2,... Un algoritmo
generale
xx,yp3,... Un altro esercizio
xx,yp4);grid
legend(’Dati’,’Polinomio’,...
’Derivata prima’,...
’Derivata seconda’,...
’Derivata terza’,...
’Derivata quarta’)
axis([0.5 5 -2 2])
La derivata del polinomio interpolante - 7 1.6 Derivazione

Il risultato dovrebbe essere questo: Luca Facchini

Introduzione

Le derivate prima
e seconda

Derivata terza

Derivata quarta

Esercizi proposti

Funzioni ricorsive

Derivazione di
polinomi
La derivata prima
Le derivate
successive
Un algoritmo
generale
Un altro esercizio

PER ESERCIZIO: modifica la function funz.m in modo che renda i


valori del polinomio interpolante e controlla questi risultati con quelli
dati da deriv.m

La differenza (notevole) è che questi sono risultati esatti basati su


calcoli simbolici, mentre deriv.m calcola rapporti incrementali e quindi
approssimazioni (e infatti oltre un certo ordine N non funziona più. . . )

Potrebbero piacerti anche