11- introduzione al calcolo numerico n -...

26
Introduzione al calcolo numerico •Derivazione •Integrazione •Soluzione di equazioni

Upload: hathuan

Post on 23-Feb-2019

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

Introduzione al calcolonumerico

•Derivazione•Integrazione•Soluzione di equazioni

Page 2: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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…

Page 3: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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+!!!+!=

+!!!"!!+!"="

""+

Page 4: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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+!!!+!==

""+

Page 5: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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 +

!+++!+="

Page 6: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

Page 7: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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.

Page 8: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

Page 9: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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 )(

Page 10: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

Page 11: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

+!!+!++

=++"#+

Page 12: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

Page 13: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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 )

Page 14: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

Page 15: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 15

Esempio di codice

Page 16: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 16

continua

)...22(2

)( 210 nn

b

a

ffffh

Idxxf ++++=!"

Page 17: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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 )

Page 18: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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.

Page 19: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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.

Page 20: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 20

Page 21: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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.

Page 22: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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.

Page 23: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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

!"#!

=!

!

=

$!=

%

Page 24: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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)

Page 25: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

Corso di Informatica AA. 2007-2008 Introduzione al Calcolo Numerico 25

EsempioSupponiamo di voler calcolare

Trovare gli zeri di

Soluzioneiterativa

Page 26: 11- Introduzione al calcolo numerico n - people.na.infn.itpeople.na.infn.it/~itaco/informatica/old/Lezione_8.pdf · Corso di Informatica AA. 2007-2008 Introduzione al 4Calcolo Numerico

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 !!