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

Documenti analoghi
Corso di Laurea in Ingegneria Informatica Analisi Numerica

Introduzione al MATLAB c Parte 2

INTRODUZIONE A MATLAB Matrix Laboratory

Documentazione esterna al software matematico sviluppato con MatLab

Criterio del rapporto. Sia n a n una successione in [0, + ) ]0, + ) ]0, 1[ Criterio del rapporto. Sia n a n una successione in ]0, + ).

Equazione di Keplero (eqz. nonlineari).

Classificazione Singolarità isolate, Serie di Laurent, Residui, Teorema dei residui e applicazioni

Massimi e minimi vincolati in R 2 - Esercizi svolti

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Laboratorio 2. Calcolo simbolico, successioni, limiti e derivate

Condizionamento di sistemi lineari.

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Interpolazione ed approssimazione di funzioni

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

CAPITOLO IV RISOLUZIONE DEI SISTEMI LINEARI COL METODO DEI DETERMINANTI

Corso di Analisi Numerica

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Introduzione a Matlab

1 Alcuni criteri di convergenza per serie a termini non negativi

Numeri Complessi. 4. Ricordando che, se z è un numero complesso, zz è un numero reale, mettere sotto la forma. z 2 + 2z + 2 = 0. z 2 + 2z + 6 = 0.

R. Bevilacqua O. Menchi APPUNTI DI CALCOLO NUMERICO

Laboratorio di Elaborazione di Dati, Segnali e Immagini Biomediche (Parte 3)

Introduzione allo Scilab Parte 3: funzioni; vettori.

SIMULAZIONE TEST ESAME - 1

Ripasso di Calcolo Scientifico: Giulio Del Corso

Funzioni definite dall utente: sintassi

Studente: SANTORO MC. Matricola : 528

Esercizi svolti. 1. Si consideri la funzione f(x) = 4 x 2. a) Verificare che la funzione F(x) = x 2 4 x2 + 2 arcsin x è una primitiva di

SUCCESSIONI NUMERICHE

Integrazione numerica

Esercitazioni di Reti Logiche. Lezione 1 Rappresentazione dell'informazione. Zeynep KIZILTAN zkiziltan@deis.unibo.it

MINISTERO DELL'ISTRUZIONE, DELL'UNIVERSITÀ, DELLA RICERCA SCUOLE ITALIANE ALL ESTERO

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

MATEMATICA GENERALE Prova d esame del 18 giugno FILA A

Corso di Calcolo Numerico

u 1 u k che rappresenta formalmente la somma degli infiniti numeri (14.1), ordinati al crescere del loro indice. I numeri u k

Comandi di Input/Output in Matlab

1 Portofoglio autofinanziante

Analisi dei segnali nel dominio della frequenza

Metodi numerici per la risoluzione di equazioni. Equazioni differenziali ordinarie

MATLAB Esercitazione #1: (dominio di Laplace)

Laboratorio di calcolo con Matlab

+ P a n n=1 + X. a n = a m 3. n=1. m=4. Per poter dare un significato alla somma (formale) di infiniti termini, ricorriamo al seguente procedimento:

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

Corso di Analisi Matematica. Polinomi e serie di Taylor

Introduzione al MATLAB c Parte 1

Introduzione a MATLAB

Informatica Teorica. Macchine a registri

Esercizi sulle funzioni classi IV e V (indirizzo afm)

SISTEMI DIGITALI DI CONTROLLO

Metodi per il calcolo di funzioni elementari in alta precisione

Equazioni non lineari

Barriere assorbenti nelle catene di Markov e una loro applicazione al web

Equazioni non lineari

FUNZIONI CONTINUE - ESERCIZI SVOLTI

Geometria Superiore Esercizi 1 (da consegnare entro... )

Laboratorio per l Elaborazione MultiMediale Lezione 1 - Introduzione a Matlab R

ORDINAMENTO 2014 QUESITO 1

Modello Black-Scholes

SISTEMI DI CONTROLLO Ingegneria Meccanica e Ingegneria del Veicolo

Alberi auto-aggiustanti

La trasformata Zeta. Marco Marcon

Command Window e linea di comando di MATLAB

Analisi Matematica 2 per Matematica Esempi di compiti, primo semestre 2011/2012

Lezioni su MATLAB. Ingegneria Civile/Meccanica

Introduzione a MATLAB INTRODUZIONE A MATLAB

Lab. 1 - Introduzione a Matlab

Fondamenti di Automatica. Unità 2 Calcolo del movimento di sistemi dinamici LTI

Introduzione alla programmazione lineare. Mauro Pagliacci

Definizione Dati due insiemi A e B, contenuti nel campo reale R, si definisce funzione reale di variabile reale una legge f : A

Esempi di uso e applicazioni di Matlab e simulink. 1) Uso delle funzioni ode23 e ode45 per l'integrazione di equazioni differenziali con Matlab

Corso di Calcolo Numerico

Studio di funzione. Tutti i diritti sono riservati. E vietata la riproduzione, anche parziale, senza il consenso dell autore. Funzioni elementari 2

SISTEMI DIGITALI DI CONTROLLO

Online Gradient Descent

Corso di Matematica per la Chimica

E solo questione di metodo:

Laboratorio di Matlab

2.5 Stabilità dei sistemi dinamici funzioni di trasferimento, nella variabile di Laplace s, razionali fratte del tipo:

Matematica generale CTF

OFFERTA DI LAVORO. p * C = M + w * L

Laboratorio di Matematica Computazionale A.A Lab. 1 - Introduzione a Matlab

Analisi Mat. 1 - Ing. Inform. - Soluzioni del compito del

x log(x) + 3. f(x) =

LA FUNZIONE INTEGRALE

Complessità Computazionale

Syllabus: argomenti di Matematica delle prove di valutazione

Rappresentazione nello spazio degli stati

Simulink è l ambiente di programmazione grafico associato al MATLAB.

Matlab. Ing. Francesco Licandro. Corso Fondamenti di Telecomunicazioni A.A

3.1 Successioni. R Definizione (Successione numerica) E Esempio 3.1 CAPITOLO 3

MATLAB Analisi di Sistemi LTI

Fondamenti di Automatica

Analisi Matematica I Esercitazioni con MATLAB. Dario Bernardi Stefania Malaguti Chiara Visentin Andrea Corli

Modelli matematici e realtà:

Filtraggio dei dati. bozza bozza bozza

MATLAB (3) - Grafica 2 e 3D

Metodi Stocastici per la Finanza

CALCOLO NUMERICO (C.L. Ing. delle Comunicazioni - AA ) Proff. F. Pitolli, A. Pascarella Progetti

Introduzione agli ambienti

Transcript:

Matlab: complessità e stabilità degli algoritmi. Alcuni esempi. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica Pura e Applicata 21 novembre 2011 Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 1/ 24

Stabilità : radici secondo grado Dato x 2 + 2px q, con p 2 + q 0 eseguiamo un primo algoritmo Matlab che valuta la radice via: y = p + p 2 + q. (1) p 2 + q 0 implica radici reali. Potenzialmente instabile per p q a causa della sottrazione tra p e p 2 + q (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 Matlab: complessità e stabilità degli algoritmi. 2/ 24

Codice stabilità : 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=sqrt (t) ; e l s e f p r i n t f ( \n \t [ RADICI COMPLESSE] ) ; end s1= p+u ; Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 3/ 24

Codice stabilità : algoritmo 2 % ALGORITMO 2 s=pˆ2; t=s+q ; i f t >=0 u=sqrt (t) ; e l s e f p r i n t f ( \n \t [ RADICI COMPLESSE] ) ; end v=p+u ; t1=q/v ; Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 4/ 24

Codice stabilità : stampa risultati f p r i n t f ( \n \t [ALG. 1 ] : %10.19 f,s1) ; f p r i n t f ( \n \t [ALG. 2 ] : %10.19 f,t1) ; i f length (sol ) > 0 & (sol = 0) rerr1 =abs (s1 sol )/abs (sol ) ; rerr2=abs (t1 sol )/abs (sol ) ; f p r i n t f ( \n \ t [REL.ERR.ALG. 1 ] : %2.2e,rerr1 ) ; f p r i n t f ( \n \ t [REL.ERR.ALG. 2 ] : %2.2e,rerr2 ) ; end Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 5/ 24

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 ] [ 1 ] : 0.0000089999999772772 [ALG. 2 ] [ 1 ] : 0.0000090000000000000 [REL.ERR. ] [ ALG. 1 ] : 2.52e 009 [REL.ERR. ] [ ALG. 2 ] : 0.00e+000 Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 6/ 24

Calcolo π 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 = 6s n+1 e { z1 = 1, z 2 = 2 z n+1 = 2 n 1 2 1 1 4 1 n zn 2 che teoricamente convergono a π. (3) Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 7/ 24

Calcolo π Implementiamo poi la 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 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 π). 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. Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 8/ 24

Calcolo π: metodo 1 In 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) ; for n=2:40 s(n+1)=s(n)+(n+1)ˆ( 2) ; u(n+1)=sqrt (6 s(n+1)) ; end rel_err_u=abs (u pi )/ pi ; f p r i n t f ( \n ) ; Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 9/ 24

Calcolo π: metodo 2 % METODO 2. format long z (1) =1; z (2) =2; for n=2:40 c=(4ˆ(1 n) ) (z(n) ) ˆ2; inner_sqrt=sqrt (1 c) ; z(n+1)=(2ˆ(n 0.5) ) sqrt ( 1 inner_sqrt ) ; end rel_err_z=abs (z pi )/ pi ; f p r i n t f ( \n ) ; Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 10/ 24

Calcolo π: metodo 3 % METODO 3. y (1) =1; y (2) =2; for n=2:40 num=(2ˆ(1/2) ) abs (y(n) ) ; c=(4ˆ(1 n) ) (z(n) ) ˆ2; inner_sqrt=sqrt (1 c) ; den=sqrt ( 1+inner_sqrt ) ; y(n+1)=num/den ; end rel_err_y=abs (y pi )/ pi ; Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 11/ 24

Calcolo π: plots % SEMILOGY PLOT. semilogy (1: length (u),rel_err_u, k.,... 1: length (z),rel_err_z, m+,... 1: length (y),rel_err_y, ro ) ; Di seguito digitiamo sulla shell di Matlab/Octave >> pigreco Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 12/ 24

Plot 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 Matlab: complessità e stabilità degli algoritmi. 13/ 24

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 (probabilmente per questioni di arrotondamento). Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 14/ 24

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). integrando per parti ( 1 I n+1 = e 1 x n+1 e x 1 0 (n + 1) 0 = 1 (n + 1)I n. 0 ) x n e x dx I n > 0, decrescente e si prova che I n 0 come 1/n. Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 15/ 24

Problema. Calcoliamo I n per n = 1,...,99: mediante la successione in avanti { I0 = e 1 (e 1 1) I n+1 = 1 (n + 1)I n. (5) mediante la successione all indietro { t1000 = 0 t n 1 = (1 t n )/n. Si noti che se I n+1 = 1 (n + 1)I n allora I n = (1 I n+1 )/(n + 1) e quindi I n 1 = (1 I n )/n. Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 16/ 24

Successioni ricorrente in Matlab Scriviamo il codice in un file succricorrente.m. % SUCCESSIONE RICORRENTE. c l e a r a l l ; % SUCCESSIONE s n. s (1)=exp( 1) ; for n=1:99 s(n+1)=1 (n+1) s(n) ; end % SUCCESSIONE t n. M=1000; t=zeros (M,1) ; % INIZIALIZZAZIONE t. for n=m: 1:2 j=n 1; t(j)=(1 t(n) )/n ; end Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 17/ 24

Successioni ricorrente in Matlab % PLOT SEMI LOGARITMICO. c l f ; semilogy (1: length (s), abs (s), k,... 1: length (s), abs (t (1: length (s) ) ) ) ; Di seguito digitiamo sulla shell di Matlab/Octave >> succricorrente Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 18/ 24

Plot risultati 10 150 10 100 10 50 10 0 10 50 0 20 40 60 80 100 Figura: Grafico che illustra i valori assoluti assunti dalla successione in avanti (in nero) e all indietro (in rosa magenta). Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 19/ 24

Commento successione ricorrente. La successione in avanti amplifica gli errori. Infatti se I 0 = I 0 + ǫ allora I n+1 = 1 (n + 1)I n I 1 I 2 I 3 I 4 = 1 I 0 = 1 (I 0 + ǫ) = I 1 ǫ = 1 2I 1 = 1 2(I 1 ǫ) = I 2 + 2 1 ǫ = 1 3I 2 = 1 3(I 2 + 2ǫ) = I 3 3 2 1 ǫ = 1 4I 3 = 1 4(I 3 + 3ǫ) = I 4 4 3 2 1 ǫ e in generale I n = I n + ( 1) n n! ǫ. con il termine n! ǫ che tende velocemente a + al crescere di n. Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 20/ 24

Commento successione ricorrente. La successione all indietro smorza gli errori. Infatti, se I m = I m + ǫ e allora I n 1 = (1 I n )/n I m 1 = (1 I m )/m = (1 (I m + ǫ))/m = I m ǫ/m I m 2 = (1 (I m 1 + ǫ/m))/(m 1) = I m 2 ǫ/((m 1) m)... k I m k =... = I m k ǫ/ (m s) con il termine ǫ/ k crescere di k. s=0 s=0 (m s) che tende velocemente a 0 al Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 21/ 24

Complessità : 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 Matlab: complessità e stabilità degli algoritmi. 22/ 24

Complessità : algoritmo di Horner. In Matlab avremo allora function s=algoritmo1 (a,x) xk=1; s=a (1) ; for i=2: length (a) xk=xk x ; s=s+a(i) xk ; end e function s=algoritmo2 (a,x) L=length (a) ; s=a(l) ; % COMPONENTE a n IMMAGAZZINATA IN a (n+1). for i=l 1: 1:1 s=a(i)+x s ; end Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 23/ 24

Complessità : algoritmo di Horner. Se lanciamo il codice demo horner per la valutazione di p(x) = 1 + 2 x + 3 x 2 + 4 x 3 in x = π c l e a r a l l ; a=[1 2 3 4 ] ; x=pi ; y1=algoritmo1 (a,x) ; y2=algoritmo2 (a,x) ; format long ; y1 y2 otteniamo >> demo_horner ans = 1.609171052316469e+02 y1 = 1.609171052316469e+02 y2 =1.609171052316469 e+02 >> Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 24/ 24

Complessità : algoritmo di Horner. La differenza sta nella complessità computazionale e non nel risultato numerico. Il primo codice richiede 2n moltiplicazioni e n somme, mentre il secondo algoritmo n moltiplicazioni e n somme. Alvise Sommariva Matlab: complessità e stabilità degli algoritmi. 25/ 24