Alcuni esperimenti in Matlab relativi alla teoria degli errori

Documenti analoghi
Alcuni esperimenti in Matlab relativi alla teoria degli errori (corso di Ingegneria dell Energia) 1

Matlab: complessità e stabilità degli algoritmi. Alcuni esempi.

Stabilità : radici secondo grado

Matlab: complessità e stabilità degli algoritmi. Alcuni esempi.

Emma Perracchione A.A. 2018/2019

Note del corso di Laboratorio di Programmazione e Calcolo: Analisi della stabilità e della complessità computazionale di un algoritmo

Sulla propagazione degli errori

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: analisi degli errori

Analisi degli errori

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili, Bisezione

Minimi quadrati in Matlab

Algoritmi stabili e instabili

Francesca Mazzia Dipartimento Interuniversitario di Matematica Università di Bari. MATLAB: analisi degli errori

Metodi iterativi per equazioni nonlineari.

Analisi degli Errori

1. Scrivere il termine generale a n delle seguenti successioni e calcolare lim n a n:

Numeri macchina. Alvise Sommariva. Università degli Studi di Padova Dipartimento di Matematica Pura e Applicata. 6 marzo 2019

Quadratura numerica. Alvise Sommariva. Università degli Studi di Padova Dipartimento di Matematica. 25 maggio 2015

SCILAB: Analisi degli errori

Equazione del calore

Università degli Studi di Verona

Aritmetica di macchina

Laboratorio di Calcolo Numerico Laboratorio 4: Functions. Soluzione di Equazioni non lineari

Raccolta degli Scritti d Esame di ANALISI MATEMATICA U.D. 2 assegnati nei Corsi di Laurea di Fisica, Fisica Applicata, Matematica

Cause di errore. Analisi dell errore. Cause di errore nel calcolo di un espressione razionale. Errore inerente. Esempio

Interpolazione polinomiale.

Laboratorio computazionale numerico Lezione 1

Metodi di Ottimizzazione

Soluzione di Equazioni non lineari

Derivazione numerica 1

Esercizio 1. Errori di cancellazione

Laboratorio di Calcolo Numerico Laboratorio 7: Quadratura numerica

Polinomio di Taylor.

Problema numerico. Relazione funzionale chiara e non ambigua tra dati iniziali e soluzione. Dati iniziali e soluzione sono due vettori finiti x, y.

Problema numerico. Relazione funzionale chiara e non ambigua tra dati iniziali e la soluzione. Dati iniziali e soluzione sono due vettori finiti

n! n n. n=1 an = L [0, + ] Se L = 1 il criterio non dà una risposta e la serie potrebbe sia convergere che divergere. 2 n2. n 1

Esercitazione 2: Errori macchina Stabilità numerica

Esercitazione 2 Numeri finiti e propagazione dell errore

Corso di Matematica per la Chimica

1 n 1. n + 1. n=1 N+1. n=1. n=1 N N + 1.

1 Successioni di funzioni

Analisi Numerica: Introduzione

Integrazione numerica

LABORATORIO DI PROGRAMMAZIONE E CALCOLO

Laboratorio di Calcolo Numerico - Corso di Laurea in Matematica Appello d esame del 12/07/2012

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari

Interpolazione e approssimazione di funzioni

Esame di Calcolo Numerico per Informatica A.A. 2010/11: testo soluzioni Proff. S. De Marchi e M. R. Russo 12 luglio 2011

Metodi Numerici per l Approssimazione degli Zeri di una Funzione

Metodi iterativi per il calcolo approssimato di autovalori

Istituzioni di Matematiche, Integrali fratti. corso di laurea in Scienze geologiche. Mauro Costantini

Integrazione numerica

Interpolazione polinomiale

Minimi quadrati. Ángeles Martínez Calomardo e Alvise Sommariva. 4 dicembre Università degli Studi di Padova

Ricerca di zeri di equazioni non lineari

Integrazione numerica

1 Successioni di funzioni

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 Metodi numerici per equazioni differenziali ordinarie

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 6 Metodi iterativi per sistemi lineari

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 9 Metodi numerici per equazioni differenziali ordinarie

ISTRUZIONI PER LA CONSEGNA DEI FILE MATLAB

Successioni ricorsive

Esercizi Elaborato (versione )

Laboratorio 3. Integrazione numerica

METODI NUMERICI - II canale (A.A )

Metodi di Iterazione Funzionale

Prove d esame Esercizi con Matlab

Esercitazione 1: Errori macchina

Algebra lineare numerica in Matlab

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Laboratorio di Analisi Numerica Lezione 1

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 12 Metodi numerici per equazioni differenziali ordinarie

g(x) = arctan(1.5x 0.1)

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

Serie di funzioni: esercizi svolti

Corso di Calcolo Numerico

Calcolo Numerico - Prova Matlab 19 luglio 2013

ANALISI MATEMATICA 1 Commissione F. Albertini, V. Casarino e M. Motta Ingegneria Gestionale, Meccanica, Meccatronica, Vicenza

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 10

PROVA PRATICA di CALCOLO NUMERICO Prof. S. De Marchi Verona, 19 dicembre 2006

Calcolo Numerico per Ingegneria. Corso estivo di Bressanone. Prof. L. Bergamaschi SOLUZIONE DELLA PROVA SCRITTA del

Successioni numeriche (II)

Corso di Matematica per la Chimica

CALCOLO NUMERICO Laurea di base in Ingegneria Elettronica, delle Comunicazioni

Esercizi su polinomio di Taylor, metodi numerici per il calcolo di zeri di funzione e iterazioni di punto fisso

Integrazione numerica

Corso di laurea in Informatica Calcolo Numerico Prof.ssa L. D Amore 12 Dicembre 2008 Esercizi di riepilogo tipo prova d esame

Corso di Matematica per la Chimica

SERIE NUMERICHE FAUSTO FERRARI

Laboratorio di Calcolo Numerico

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Transcript:

Alcuni esperimenti in Matlab relativi alla teoria degli errori Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica Pura e Applicata 3 gennaio 2019 Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 1/ 22

Stabilità : radici secondo grado Problema. Dato x 2 + 2 px q, con p 2 + q 0 implementare alcuni algoritmi in Matlab che valutino la radice positiva mediante la formula y = p + p 2 + q. (1) Osserviamo che p2 + q 0 implica radici reali. La valutazione diretta (1) è potenzialmente instabile per p q a causa della sottrazione tra p e p 2 + q (fenomeno della cancellazione). Valutiamo radice con un secondo algoritmo stabile via razionalizzazione di (1): y = p + p 2 + q = ( p + p 2 + q)(p + p 2 + q) (p + p 2 + q) = q (p + p 2 + q) (2) Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 2/ 22

Stabilità : radici secondo grado Algoritmo 1. Salviamo il seguente codice in radicesecgrado.m. p =1000; q =0.018000000081; sol =0.9 10ˆ( 5) ; % ALGORITMO 1 s=p ˆ 2 ; t=s+q ; i f t >=0 u=s q r t ( t ) ; e l s e f p r i n t f ( \n \t [ RADICI COMPLESSE ] ) ; end s1= p+u ; Algoritmo 2. Di seguito, sullo stesso file scriviamo il secondo algoritmo, come descritto in (2), % ALGORITMO 2 s=p ˆ 2 ; t=s+q ; i f t >=0 u=s q r t ( t ) ; e l s e f p r i n t f ( \n \t [ RADICI COMPLESSE ] ) ; end v=p+u ; t1=q/v ; e infine, stampiamo risultati ed errori relativi. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 3/ 22

Stabilità : radici secondo grado % Soluzione f o r n i t a dal primo algoritmo. f p r i n t f ( \n \t [ ALG. 1 ] : %10.19 f, s1 ) ; % Soluzione f o r n i t a dal secondo algoritmo. f p r i n t f ( \n \t [ ALG. 2 ] : %10.19 f, t1 ) ; i f l e n g t h ( sol ) > 0 & ( sol = 0) % E r r o r e r e l a t i v o d e l primo a l g o r i t m o. rerr1 =abs (s1 sol ) /abs ( sol ) ; % E r r o r e r e l a t i v o d e l secondo a l g o r i t m o. rerr2=abs (t1 sol ) /abs ( sol ) ; % Stampa r i s u l t a t i. f p r i n t f ( \n \t [ REL. ERR. ALG. 1 ] : %2.2 e, rerr1 ) ; f p r i n t f ( \n \t [ REL. ERR. ALG. 2 ] : %2.2 e, rerr2 ) ; end f p r i n t f ( \n \n ) ; Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 4/ 22

Stabilità : radici secondo grado, test. Come previsto, il secondo algoritmo si comporta notevolmente meglio del primo, che compie un errore relativo dell ordine di circa 10 9. Infatti: >> radicesecgrado [ ALG. 1 ] : 0.0000001000007614493 [ ALG. 2 ] : 0.0000001000000000000 [ REL. ERR. ALG. 1 ] : 7. 6 1 e 06 [ REL. ERR. ALG. 2 ] : 1. 3 2 e 16 >> Seppure l errore relativo sembri piccolo, è significativo e non è dovuto al problema ma esclusivamente all algoritmo utilizzato. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 5/ 22

Calcolo di π Eseguiamo un codice Matlab che valuti le successioni {u n}, {z n}, definite rispettivamente come s 1 = 1, s 2 = 1 + 1 4 u 1 = 1, u 2 = 1 + 1 4 s n+1 = s n + 1 (n+1) 2 u n+1 = 6 s n+1 e { z1 = 1, z 2 = 2 z n+1 = 2 n 2 1 1 1 4 1 n zn 2 che teoricamente convergono a π. Implementiamo poi una terza successione, diciamo {y n}, che si ottiene razionalizzando (3), cioè moltiplicando numeratore e denominatore di z n+1 = 2 n 1 2 1 1 4 1 n zn 2 (3) per 1 + 1 4 1 n z 2 n e calcoliamo u m, z m e y m per m = 2, 3,..., 40 (che teoricamente dovrebbero approssimare π). Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 6/ 22

Calcolo di π. La prima successione. Infine disegniamo in un unico grafico l andamento dell errore relativo di u n, z n e y n rispetto a π aiutandoci con l help di Matlab relativo al comando semilogy. Di seguito scriviamo un implementazione di quanto richiesto commentando i risultati. Si salvi in un file pigreco.m il codice % SEQUENZE CONVERGENTI PI GRECO. % METODO 1. s (1) =1; u (1) =1; s ( 2 ) =1.25; u ( 2 )=s ( 2 ) ; f o r n =2:40 s (n+1)=s (n)+(n+1)ˆ( 2) ; u ( n+1)=s q r t (6 s ( n+1) ) ; end rel_err_u=abs (u pi ) / pi ; f p r i n t f ( \n ) ; Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 7/ 22

Calcolo di π. La seconda successione. Sempre sullo stesso file, scriviamo il codice relativo alla seconda successione, % METODO 2. format long z (1) =1; z (2) =2; f o r n =2:40 c=(4ˆ(1 n ) ) (z(n) ) ˆ 2 ; inner_sqrt=s q r t (1 c ) ; z ( n+1)=(2ˆ(n 0.5) ) s q r t ( 1 inner_sqrt ) ; end rel_err_z=abs (z pi ) / pi ; f p r i n t f ( \n ) ; Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 8/ 22

Calcolo di π. La terza successione. Di seguito, implementiamo la terza successione % METODO 3. y (1) =1; y (2) =2; f o r n =2:40 num =(2ˆ(1/2) ) abs (y(n) ) ; c=(4ˆ(1 n ) ) (z(n) ) ˆ 2 ; inner_sqrt=s q r t (1 c ) ; den=s q r t ( 1+inner_sqrt ) ; y ( n+1)=num / den ; end rel_err_y=abs (y pi ) / pi ; e infine i relativi grafici % SEMILOGY PLOT. s e m i l o g y ( 1 : l e n g t h ( u ), rel_err_u, k.,... 1 : l e n g t h ( z ), rel_err_z, m+,... 1 : l e n g t h ( y ), rel_err_y, r o ) ; Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 9/ 22

Calcolo di π. Risultati. Per concludere si digiti nella command window pigreco. Nella figura descriviamo i risultati. 10 0 10 5 10 10 10 15 0 5 10 15 20 25 30 35 40 45 Figura: Grafico che illustra le 3 successioni, rappresentate rispettivamente da., + e o. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 10/ 22

Calcolo di π. La prima successione. Discussione risultati. La prima successione converge molto lentamente a π, la seconda diverge mentre la terza converge velocemente a π. Per alcuni valori {z n} e {y n} coincidono per alcune iterazioni per poi rispettivamente divergere e convergere a π. Tutto ciò è naturale poichè le due sequenze sono analiticamente (ma non numericamente) equivalenti. Dal grafico dell errore relativo, la terza successione, dopo aver raggiunto errori relativi prossimi alla precisione di macchina, si assesta ad un errore relativo di circa 10 15 (dovuti alla precisione di macchina). Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 11/ 22

Una successione ricorrente. Consideriamo la successione {I n} definita da 1 I n = e 1 x n e x dx (4) n = 0: I 0 = e 1 1 0 ex dx = e 1 (e 1 1) = 1 e 1 ; integrando per parti 1 ) I n+1 = e (x 1 n+1 e x 1 0 (n + 1) x n e x dx = 1 (n + 1) I n. In particolare I 1 = 1 I n = 1 (1 e 1 ) = e 1. I n > 0, decrescente e si prova che I n 0 come 1/n. Si noti che se I n+1 = 1 (n + 1) I n allora e quindi I n 1 = (1 I n)/n. 0 I n = (1 I n+1)/(n + 1) 0 Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 12/ 22

Una successione ricorrente. Calcoliamo I n per n = 1,..., 99: mediante la successione in avanti { s1 = e 1 = I 1 s n+1 = 1 (n + 1) s n I n+1 (5) con n = 1,..., 98; mediante la successione all indietro { t1000 = 0 t n 1 = (1 t n)/n I n 1. con n = 1000, 999,..., 2. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 13/ 22

Una successione ricorrente. Scriviamo il codice in un file succricorrente.m. % c a n c e l l i a m o v a r i a b i l i e f u n z i o n i p r e c e d e n t e m e n t e d e f i n i t e. c l e a r a l l ; % s u c c e s s i o n e s n. s (1)=exp( 1) ; % v a l o r e che a p p r o s s i m a $I 1$ f o r n =1:99 % v a l o r e che a p p r o s s i m a $ I {n+1}$ s ( n+1)=1 (n+1) s ( n ) ; end % s u c c e s s i o n e t n. M =1000; t=z e r o s ( 1, M ) ; % i n i z i a l i z z a z i o n e t come v e t t o r e r i g a. f o r n=m: 1:2 % v a l o r e che a p p r o s s i m a $ I {n 1}$ t (n 1)=(1 t (n) ) /n ; end % p l o t s e m i l o g a r i t m i c o c l f ; s e m i l o g y ( 1 : l e n g t h ( s ), abs ( s ), k,... 1 : l e n g t h ( s ), abs ( t ( 1 : l e n g t h ( s ) ) ), m ) ; l e g e n d ( s, t ) Quindi digitiamo sulla shell di Matlab/Octave succricorrente. Otteniamo il grafico in figura, che mostra come la prima successione non converge a 0 per una cattiva propagazione degli errori, mentre la seconda, quella all indietro fornisce buoni risultati. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 14/ 22

Una successione ricorrente. 10 160 10 140 s t 10 120 10 100 10 80 10 60 10 40 10 20 10 0 10-20 0 10 20 30 40 50 60 70 80 90 100 Figura: Grafico che illustra i valori assoluti assunti dalla successione in avanti (in nero) e all indietro (in rosa magenta). Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 15/ 22

Una successione ricorrente. Commento. Osserviamo per prima cosa che exp( 1) non è un numero macchina e quindi verrà approssimato, compiendo un certo errore assoluto ɛ exp( 1) eps 8.2e 17 (ricordare la definizione di precisione di macchina). La successione in avanti amplifica gli errori. Infatti se I 1 = I 1 + ɛ allora I n+1 = 1 (n + 1)I n I 2 = 1 2I 1 = 1 2(I 1 ɛ) = I 2 + 2 1 ɛ I 3 = 1 3I 2 = 1 3(I 2 + 2ɛ) = I 3 3 2 1 ɛ I 4 = 1 4I 3 = 1 4(I 3 + 3ɛ) = I 4 4 3 2 1 ɛ e in generale I n = I n + ( 1) n n! ɛ ovvero I n I n = n! ɛ con il termine n! ɛ che tende velocemente a + al crescere di n. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 16/ 22

Una successione ricorrente Commento. La successione all indietro invece smorza gli errori. Infatti, se I m = I m + ɛ e I n 1 = (1 I n)/n allora si vede con qualche conto che I m 1 = I m 1 ɛ/m I m 2 = I m 2 ɛ/((m 1) m)... I m k = I m k ɛ/ ovvero si compie un errore assoluto I m k I m k = ɛ/ k (m s) s=0 k (m s) con il termine ɛ/ k s=0 (m s) che tende velocemente a 0 al crescere di k. s=0 Si tenga conto che relativamente all esperimento I 1000 9.980049850517696e 04 Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 17/ 22

Una successione ricorrente. Commento. Di conseguenza I 999 I 999 9e 04/1000 = 9e 07, I 998 I 998 ɛ/(999 1000) 9e 10, I 997 I 997 ɛ/(998 999 1000) 9e 13, I 996 I 996 ɛ/(997 998 999 1000) 9e 16, e quindi già I 996 è calcolato con estrema accuratezza. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 18/ 22

L algoritmo di Horner. Ci poniamo il problema di valutare il polinomio in un punto x. Osserviamo che p(x) = a 0 + a 1 x +... + a n x n (6) p(x) = a 0 + x (a 1 + x (a 2 +... + x (a n 1 + x a n))) (7) Supponiamo sia a = (a 0,..., a n) il vettore di dimensione n + 1 delle componenti del polinomio. Possiamo valutare il polinomio tramite i seguenti due algoritmi, il primo che valuta direttamente il polinomio secondo quanto descritto in (6), il secondo che effettua la stessa operazione come descritto in (7) calcolando dapprima s 1 = a n 1 + x a n, poi s 2 = a n 2 + x s 1 e così via. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 19/ 22

L algoritmo di Horner. Di seguito salviamo nella function algoritmo horner il codice c l e a r a l l ; % i l p o l i n o m i o 1+2x+3xˆ2+4x ˆ3 e c o d i f i c a t o con [1 2 3 4 ]. a=[1 2 3 4 ] ; x=p i ; y1=algoritmo1 (a, x ) ; y2=algoritmo2 (a, x ) ; f p r i n t f ( \n \t a l g o r i t m o 1 : %1.15 e, y1 ) ; f p r i n t f ( \n \t a l g o r i t m o 2 : %1.15 e, y2 ) ; f p r i n t f ( \n \n ) ; Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 20/ 22

L algoritmo di Horner. Di seguito, sempre in algoritmo horner scriviamo le function algoritmo1 f u n c t i o n s=algoritmo1 (a, x ) xk =1; s=a (1) ; f o r i=2: l e n g t h (a) xk=xk x ; s=s+a ( i ) xk ; end e la function algoritmo2 f u n c t i o n s=algoritmo2 (a, x ) L=l e n g t h ( a ) ; s=a (L) ; % COMPONENTE a n IMMAGAZZINATA IN a (n+1). f o r i=l 1: 1:1 s=a ( i )+x s ; end Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 21/ 22

L algoritmo di Horner. Matlab permette di scrivere all interno di una function, nel nostro caso algoritmo horner altre functions utilizzato dallo stesso, ovvero algoritmo1, algoritmo2. Nota. Si osservi che questo non vale per uno script Matlab che non sia una function. Quindi lanciamo il codice algoritmo horner per la valutazione di p(x) = 1 + 2 x + 3 x 2 + 4 x 3 in x = π e ricaviamo >> algoritmo_horner algoritmo 1 : 1.609171052316469 e+02 algoritmo 2 : 1.609171052316469 e+02 >> La differenza sta nella complessità computazionale e non nel risultato numerico. Il primo algoritmo richiede 2n moltiplicazioni e n somme. Il secondo algoritmo richiede n moltiplicazioni e n somme. Alvise Sommariva Alcuni esperimenti in Matlab relativi alla teoria degli errori 22/ 22