11- introduzione al calcolo numerico n -...
TRANSCRIPT
Introduzione al calcolonumerico
•Derivazione•Integrazione•Soluzione di equazioni
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 2
Derivazione numerica
!
" f (x) #f (x + h) $ f (x)
h
Il calcolo della derivata di una funzione in un punto implica unprocesso al limite che può solo essere approssimato da uncalcolatore. Supponiamo nota la forma funzionale di f(x). Unaprima approssimazione della sua derivata è:
Per h sufficientemente piccolo. Con h molto piccolo peròpuò diventare delicato dal punto di vista numerico calcolarela differenza fra i due numeri a numeratore (molto vicini traloro). Per capire come fare meglio analizziamo lo sviluppo inserie di Taylor di f in un intorno di x…
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 3
Derivazione numerica (II)
)()()(
cui da
...)()()()()(
22
1)()(
36
122
1
hOxfhxf
xfhxfhxfhxfhxf
h
xfhxf+!!+!=
+!!!+!!+!+=+
"+
L’errore fatto sostituendo il rapporto incrementale scritto sopra alposto della derivata di f è dunque di ordine h.Possiamo migliorare le cose notando che:
)()()(
cui da
...)()()()()(
426
12
)()(
36
122
1
hOxfhxf
xfhxfhxfhxfhxf
h
hxfhxf+!!!+!=
+!!!"!!+!"="
""+
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 4
Derivazione numerica (III)Dunque a parità di h l’errore su
)()(3
)2()(4
:cui da
)()()()2(
4
423
2
hOxfhghg
hOxfhxfhg
+!="
+!!!+!=
sarà di ordine h2 e g è quindi una approssimazione migliore di f’.Per fare ancora meglio notiamo che:
)()()()( 4261
2
)()(hOxfhxfhg
h
hxfhxf+!!!+!==
""+
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 5
Derivazione numerica (IV)Risolvendo per f’(x) otteniamo:
)(12
)2()(8)(8)2()( 4hO
h
hxfhxfhxfhxfxf +
+!++!!!="
Questa formula è sensibilmente più accurata e anche più stabilenumericamente. Le formule con le differenze “asimmetriche”andrebbero utilizzate solo nel caso in cui sono definite solo laderivata destra e/o quella sinistra, o si ha una funzione per punti eoccorre calcolare la derivata ad un estremo. Verificare che
)(12
)(21)(32)2(12)4()( 3hO
h
xfhxfhxfhxfxf +
!+++!+="
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 6
Differenze finiteSia xi una sequenza di punti equispaziati a distanza h uno dall’altroe fi i valori assunti dalla funzione f in ciascuno di essi. Utilizzando,come visto, lo sviluppo in serie di Taylor di f si possono ottenere leseguenti tabelle, con un errore O(h2) e O(h4) rispettivamente:
120212
121
1012
)(
3
2
2112
2
!!"""
!""
!"
++!!
i
i
i
iiiii
fh
fh
fh
fffffhO
1163016112
1808112
)(
2
2112
4
!!!""
!!"
++!!
i
i
iiiii
fh
fh
fffffhO
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 7
Integrazione numericaL’integrazione numerica si basa semplicemente sulladefinizione di integrale definito e sulla interpolazione di unafunzione in un certo intervallo con una funzione polinomialedata. Ad esempio se il grado del polinomio è zero si staapprossimando la funzione con una costante e si dovràcalcolare l’area di un rettangolo, se è 1 si sta considerando lafunzione lineare e si dovrà calcolare l’area di un trapezio etc.
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 8
Il metodo dei trapeziCon una approssimazione al primo ordine l’integrale definito diuna generica funzione f si può scrivere:
1))()((2
)()( Iafbf
abdxxf
b
a
=+!
"#
Se l’intervallo [a,b] non è piccolo l’approssimazione lineare puòrisultare troppo rozza: ma sfruttando l’additività dell’integrale sipuò suddividere l’intervallo in n intervalli più piccoli diampiezza h =(b-a)/n. Su ogni intervallino si avrà:
)(2
))()((2
)( 1+
+
+=++!" iiii
hx
x
ffh
hxfxfh
dxxfi
i
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 9
Il metodo dei trapezi (II)Dati n intervallini si ottiene allora la stima dell’integrale data da:
)...22(2
)( 210 nn
b
a
ffffh
Idxxf ++++=!"
Data la funzione f e l’intervallo [a,b] un calcolo dell’integralepotrà essere fatto per via iterativa calcolando la stima Indell’integrale al crescere di n e fermandosi quando due stimesuccessive sono entro una certa tolleranza:
!<"#$ nnsuccn
b
a
IIIdxxf quando )(
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 10
Il metodo dei trapezi (III)Il modo più efficiente di aumentare n è di raddoppiarlo ad ogniiterazione in modo da dover calcolare la funzione ogni voltasolo su metà dei punti, avendola calcolata sull’altra metànell’iterazione precedente:
! "++=
++++=
=#
=#
=
1-2n
dispari
2
210
)(2
)2
...2
(
2/2
;
k
NEWNEWn
n
nn
NEW
hkafhI
I
fff
fhI
hn
abh
n
abh
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 11
Errore di troncamentoValutiamo l’errore commesso nel calcolo dell’integrale usando,al solito, uno sviluppo in serie di Taylor:
)(6)(
2)()(
))(6
)(2
)()(()()(
432
32
00
hOh
xfh
xfhxf
dtxft
xft
xftxfdttxfdxxf
iii
iiii
h
i
hhx
x
i
i
+!!+!+=
=!!!+!!+!+=+= """+
Da confrontare con la regola dei trapezi :
))(2
)()()()((2
))()((2
)(
32
hOh
xfhxfxfxfh
hxfxfh
dxxf
iiii
ii
hx
x
i
i
+!!+!++
=++"#+
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 12
Errore di troncamento (II)L’errore su una singola striscia vale allora:
)(12)( 4
3
hOh
xf i +!!
L’errore sull’integrale è n volte quello su una singola striscia, esiccome n = (b-a)/h si ottiene:
!"
#$%
&==
2
2 1)(su
nOhOIErrore
n
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 13
Il metodo di SimpsonL’approssimazione successiva a quella di una retta è unapolinomiale di secondo grado (parabola). Il metodo di Simpsonusa questa approssimazione per calcolare l’integrale e, comeprevedibile, a parità di numero di strisce n ha un errore ditroncamento inferiore a quello del metodo dei trapezi e pari aO(1/n4).Usiamo un numero pari n di strisce e consideriamo per ognipunto xi quello precedente xi-1 e quello successivo xi+1. Si avrà:
!
f (x)dxxi "h
xi +h
# $h
3( f (xi " h) + 4 f (xi) + f (xi + h)) =
h
3( f i"1 + 4 fi + f i+1)
In =h
3( f
0+ 4 f
1+ 2 f
2+ 4 f
3+ 2 f
4+ ...+ 4 fn"1 + fn )
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 14
Applicazione
0.7992330.7992330.799260100000.7992330.7992330.79950510000.7992330.7992290.8019401000.7992330.7992090.805925400.7992330.7991400.812373200.7992310.7988610.82458110SimpsonTrapezRectN
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 15
Esempio di codice
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 16
continua
)...22(2
)( 210 nn
b
a
ffffh
Idxxf ++++=!"
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 17
continua
!
f (x)dxxi "h
xi +h
# $h
3( f (xi " h) + 4 f (xi) + f (xi + h)) =
h
3( f i"1 + 4 fi + f i+1)
In =h
3( f
0+ 4 f
1+ 2 f
2+ 4 f
3+ 2 f
4+ ...+ 4 fn"1 + fn )
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 18
Soluzione di equazioniSiccome una generica equazione in una variabile reale puòessere messa nella forma
0)( =xf
cercare una soluzione è equivalente a cercare lo zero di unafunzione.
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 19
Metodo della bisezione…(o ricercabinaria)
Se f è continua e lo zero cercato non è un punto di massimo ominimo relativo un metodo molto semplice ma sicuro eaffidabile per trovare la soluzione è quello della bisezione, chericorda molto da vicino l’algoritmo di ricerca binaria.
Individuato un intorno [a,b] dello zero in cui la funzione hasegno opposto si confronta f(a) con f(a+(b-a)/2) e f(b) e sisceglie il “ramo” i cui due estremi abbiano ancora segnoopposto. Si itera il procedimento fino a trovare la soluzionecercata.
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 20
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 21
Metodo di Newton-Raphson
L’idea è di partire da un punto in cui la derivata di f sia nonnulla, usare l’intersezione della tangente al grafico di f conl’asse delle x come prossima stima dello zero e poi iterare.
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 22
Metodo di Newton-Raphson(II)
Ricordando che la tangente al grafico di f in un punto haper coefficiente angolare la derivata prima di f calcolata inquel punto si dimostra facilmente che:
)(
)( 1
i
iii
xf
xfxx
!"=+
Lo zero è stato trovato quando due valori successivi di x, xi+1 exi differiscono tra loro per un valore inferiore all’accuratezzavoluta.
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 23
Metodo di Newton-Raphson(III)
Il metodo di Newton-Raphson è del secondo ordine, nel senso che
2
2cx
)()(
è c a noper x vici quindi e costante)(
)(lim
vale0,f(c) ovvero funzione della zero lo è c se
che dimostrare può si )(
)()( detta
cxKcxg
cx
cxg
xf
xfxxg
!"#!
=!
!
=
$!=
%
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 24
Il metodo della secanteSi parte dalla definizione di derivata
si sostituisce nell’iterazione di Newton-Raphson
La convergenza è migliore del metodo della bisezione , ma non buona come quella di Newton-Raphson (1.62)
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 25
EsempioSupponiamo di voler calcolare
Trovare gli zeri di
Soluzioneiterativa
Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 26
EsempioCalcoliamo √13 = 3.6055513 utilizzando
l’iterazione precedenteScegliamo x0=5 x1=3.8x2= 3.6105263 x3= 3.6055547 x4=3.6055513Con sole 4 iterazioni otteniamo il valore alla
settima cifra decimale !!