Metodi numerici e Teoria degli errori 2 Metodi numerici e Teoria degli errori 0 Sommario degli argomenti • Modelli matematici • Conoscenza numerica di numeri e funzioni: generalit`a • Successioni definite per ricorrenza. Esempi: – Somma e prodotto di n numeri. – Progressioni aritmetiche e geometriche. • Procedimenti di successive approssimazioni – Il calcolo della derivata • Conoscenza numerica di un numero – Il calcolo di π. • Conoscenza numerica di una funzione – Il calcolo di sin x – Il calcolo di ln x. • Teoria degli errori – – – – – – Errore assoluto e errore relativo Errore di troncamento Errore di arrotondamento Errore di propagazione: schema NONOR Stima degli indici di condizionamento mediante il calcolo delle derivate parziali. Propagazione dell’errore: esempi ∗ Propagazione dell’errore nella somma e nel prodotto di n numeri. ∗ Propagazione dell’errore nel calcolo del polinomio di secondo grado. – Condizionamento e stabilit`a • Analisi di un metodo numerico: convergenza ed errore – Analisi della convergenza e stima dell’errore nel calcolo di π 3 4 1 Introduzione Con il termine “Analisi Numerica” si intende lo sviluppo e lo studio di procedure che permettono di risolvere un problema mediante una sequenza di operazioni aritmetiche. In genere `e coinvolta una gran quantit`a di calcoli, che rende di fatto inattuabili le procedure in assenza di opportuni strumenti di calcolo. La realizzazione di un metodo numerico richiede quindi l’ausilio di uno strumento di calcolo. La sequenza ordinata di operazioni che conducono alla soluzione del problema prende il nome di “algoritmo”. 2 Modello matematico In presenza di un problema che trova origine nella realt`a sensibile, il primo passo da affrontare nella ricerca di una soluzione `e la traduzione del problema stesso in “modello matematico”. Con tale termine si intende il processo che, attraverso l’interpretazione del problema porta alla riformulazione dello stesso mediante linguaggio e formule puramente matematici. Realizzata tale formulazione si procede a definire delle strategie risolventi o degli algoritmi, che a partire dalla situazione iniziale producano una soluzione matematica del problema stesso. I problemi creati nell’ambito della modellistica matematica non sono quasi mai risolvibili per via analitica, per tanto `e necessario formulare per essi opportune procedure che determinano la soluzione per via approssimata. Nella maggior parte dei casi la soluzione di un modello porta alla stesura di diverse procedure risolventi; l’analista numerico non si limita alla realizzazione dell’algoritmo risolvente ma studia quale tra gli algoritmi sia il pi` u “efficiente”. L’efficienza di un algoritmo si stabilisce sulla base del numero di operazioni richieste, del tempo necessario ad arrivare alla soluzione, della quantit`a di memoria usata (nel caso di uso di un computer), mentre altri importantissimi parametri nella definizione del miglior algoritmo sono la “stabilit`a” e la “convergenza”, parametri strettamente connessi al concetto di “errore” Metodi numerici sono utilizzati anche nei casi in cui esiste la soluzione analitica del modello formulato, ma risultano particolarmente importanti quando il problema, anche semplice, non ammette una soluzione analitica. Ad esempio `e noto che la lunghezza di una arco della curva y = sin(x), si ottiene dal calcolo dell’integrale definito Z πp 1 + cos2 (x) dx, 0 per il quale non esiste una soluzione in forma chiusa. Per calcolare la lunghezza dell’arco si applicano tecniche standard che permettono di calcolare il valore di un integrale definito qualunque sia la funzione integranda purch`e sia integrabile e sia noto il valore che essa assume in opportuni punti dell’intervallo di 2. Modello matematico 5 definizione. Le sole operazioni richieste sono le quattro operazioni aritmetiche e precedure di confronto, cio`e esattamente le operazioni che un computer `e in grado di effettuare. Una soluzione fornita in analisi numerica `e sempre numerica; una soluzione analitica in genere `e data in termini di funzioni matematiche di cui `e di solito immediato analizzare il comportamento; ci`o in generale non `e vero per soluzioni numeriche. Una soluzione numerica `e accettabile quando teoricamente l’approssimazione pu`o essere resa accurata quanto si vuole e quando `e possibile in ogni istante sapere di quanto la soluzione approssimata differisca dalla soluzione esatta. Normalmente per raggiungere un elevato livello di accuratezza `e necessario coinvolgere una gran mole di calcoli, poich`e ciascuna operazione effettuata `e generalmente affetta da “errore”, in eleborazioni molto complesse l’effetto di tali errori pu`o essere pesante e influire sulla bont`a della soluzione, pertanto lo studio degli errori e le varie fonti di errori in un calcolo costituiscono un capitolo fondamentale per avvicinarsi alle tecniche dell’Analisi Numerica. Di fronte a un problema scientifico da risolvere, di norma si procede attraverso i seguenti passi: • definizione del problema; • formulazione di un modello matematico; • stesura di un algoritmo risolvente il modello stesso; • esecuzione dell’algoritmo (in genere questo passo consiste nella traduzione dell’algoritmo stesso in un linguaggio di programmazione e nell’esecuzione del codice ottenuto); • analisi e interpretazione dei risultati ottenuti. Esempio 1. • Definizione del problema Si vuole calcolare la lunghezza di una arco della curva y = sin(x); • formulazione di un modello matematico Il modello `e rappresentato dall’integrale Z πp I= 1 + cos2 (x) dx; 0 • stesura di un algoritmo risolvente il modello stesso; Nell’intervallo [0, π] si considerano i punti xj = 0 + jh, h = 0, 1, . . . , n, equidistanti a passo h e il valore dell’integrale `e approssimato dal valore I¯ = h n−1 X f (xk+1 ) + f (xk ) k=0 2 n−1 i X hh f (xk ) ; f (x0 ) + f (xn ) + 2 = 2 k=1 6 • esecuzione dell’algoritmo traduzione dell’algoritmo in un linguaggio di programmazione ed esecuzione del codice; • analisi e interpretazione dei risultati ottenuti; si controlla il risultato ottenuto e se ne analizza l’attendibilit`a. Ad esempio si pu` o ¯ pensare di calcolare pi` u valori di I per valori diversi di h, sempre pi` u piccoli, e confrontare i risultati ottenuti. Lo studio completo di un metodo numerico, oltre ai passi descritti nel paragrafo precedente, deve comprendere uno studio teorico della convergenza. Tale studio `e connesso alla definizione di “errore”. 3 Conoscenza numerica di numeri e funzioni Scopo del Calcolo Numerico `e la conoscenza numerica di numeri e funzioni. Tale conoscenza si acquisisce attraverso gli strumenti del calcolo numerico • metodi numerici o algoritmi (software) • mezzi di calcolo (hardware) I due strumenti non sono indipendenti: spesso gli algoritmi sono in funzione dei mezzi di calcolo. Un metodo numerico `e un procedimento che, con un numero finito di operazioni elementari, fornisce teoricamente la soluzione esatta, o la soluzione approssimata con indicazione della precisione, del problema. Gli strumenti alla base di un metodo numerico sono • formule ricorrenti; • procedimenti di successive approssimazioni. 4. Formule ricorrenti 4 7 Formule ricorrenti Una formula ricorrente `e un legame tra termini successivi di una particolare sequenza di elementi (numeri, funzioni, polinomi, etc.), che consente il calcolo di quantit`a successive in funzione di quantit`a precedentemente calcolate. ( t0 assegnato ricorrente a un passo tk = f (tk−1 ) ( t0 , t1 , . . . , tp−1 assegnati tk = f (tk−1 , tk−1 , . . . , tk−p ) k = p, p + 1, . . . ricorrente a p passi Esempio 2. Formula ricorrente ad un passo a a>0 t0 = 2 a 1 tk−1 + k = 1, 2, . . . tk = 2 tk−1 tk → √ a Esempio 3. Formula ricorrente a 2 passi (sequenza di Fibonacci) ( F0 = F1 = 1 Fk = Fk−1 + Fk−2 k = 2, 3, . . . Esempio 4. Somma di n numeri. Si vuole calcolare la somma S = a1 + a2 + . . . + an = n X ai i=1 ai ∈ R. Si trasforma il problema in forma ricorrente, ponendo S1 = a1 S2 = a1 + a2 = S1 + a1 .. . Sk = (a1 + a2 + . . . + ak−1 ) + ak = Sk−1 + ak , k = 2, . . . , n da cui si ricava S = Sn , si calcola cio`e la somma S richiesta mediante la sequenza ricorrente ad un passo S1 = a1 Sk = Sk−1 + ak k = 2, . . . , n 8 Se inoltre si pone S0 = 0, la sequenza diventa S0 = 0 Sk = Sk−1 + ak k = 1, . . . , n L’algoritmo espresso dalla precedente formula ricorrente presenta il vantaggio di essere facilmente programmabile 5 Procedimenti di successive approssimazioni Un procedimento di successive approssimazioni consiste nel sostituire il problema originario con una sequenza di problemi approssimanti, facilmente e comunque risolvibili. In sostanza il procedimento di successive approssimazioni `e l’analogo del passaggio al limite, quando si lavora con variabile discreta anzich´e continua. L’enorme mole di calcoli coinvolta rende un procedimento di successive approssimazioni di fatto eseguibile solo con opportuni mezzi di calcolo. Esempio 5. Derivata di una funzione reale. Sia y = f (x) una funzione derivabile in x. La sua derivata nel punto x `e data da f (x + h) − f (x) dy = lim . h→0 dx h Si vuole ora trasformare questo calcolo in un procedimento di successive approssimazioni, facendo uso cio`e di variabili discrete. Si indica con hk una successione di incrementi (variabili discrete) e si calcolano i relativi rapporti incrementali (∆y)k f (x + hk ) − f (x) = ∆xk hk xk = x + hk . (∆y)k dy sono successive approssimazioni della derivata . Se f (x) ∆xk dx `e continua nell’intervallo che contiene x, per k sufficientemente grande si pu`o ritenere (∆y)k che sia una “buona” approssimazione della derivata. ∆xk Se hk+1 < hk , i termini Esempio 6. Il metodo di Archimede per il calcolo di π (discusso in seguito). 6 Conoscenza numerica di numeri Un numero `e conosciuto numericamente, se si dispone della sua scrittura decimale, ossia della sua rappresentazione in base 10. Da questo punto di vista, potrebbero essere noti 6. Conoscenza numerica di numeri 9 solo i numeri razionali, per cui, in generale, ci si accontenta della conoscenza di un certo numero di cifre decimali, con indicazione della precisione e = 2.7183 ± 10−4 , π = 3.14 ± 10−2 ma, ricordando che π ≈ 3.14159265, sar`a anche vero π = 3.142735 ± 10−2 . Diremo quindi che un numero `e conosciuto numericamente se `e noto il numero di cifre decimali esatte, supponendo di disporre di un procedimento che teoricamente consente di calcolare un numero qualsiasi di cifre decimali con indicazione della precisione raggiunta (nel secondo esempio sei cifre decimali con un errore sulla terza (10−2 )). Esempi: • Radici di equazioni o di sistemi di equazioni: data una funzione f , trovare x ∈ C I tale che f (x) = 0; • Sistemi lineari: dati A ∈ IRn×n e b ∈ IRn trovare x ∈ IRn tale che Ax = b; • Polinomi: dato x¯ ∈ IR calcolare P (¯ x) = a0 x¯n + a1 x¯n−1 + . . . + an ; • Autovalori: trovare λ ∈ C I per il quale esiste x ∈ IRn , x 6= 0, tale che Ax = λx, n×n A ∈ IR ; 1 1 • Successioni e serie: γ = lim 1 + + . . . + − log n ; n→∞ 2 n α= ∞ X (−1)n n=0 1 ; (2n + 1)! ∞ X 1 ; β= n2 n=1 • Integrali: 1 α1 = Z 2.7 α2 = Z 1.2 α3 = Z √ 1 + x3 dx; 0 2 e−x dx; 1 ex sin 3xdx; 0.5 α4 = Z Z D x2 + y 2 dxdy. 10 6.1 Il metodo di Archimede per il calcolo di π Il simbolo π indica il rapporto costante tra la lunghezza della circonferenza e il suo diametro. Uno dei primi risultati significativi sul calcolo effettivo di π `e dovuto ad Archimede. Egli riusc`ı a dimostrare che 10 1 22 223 =3+ <π <3+ = 71 71 7 7 approssimando la lunghezza della circonferenza con il perimetro di poligoni regolari iscritti e circoscritti. Il perimetro di un poligono inscritto `e sempre minore della lunghezza della circonferenza che a sua volta `e minore del perimetro del poligono circoscritto. Quindi se pi , pc , C indicano rispettivamente le misure dei perimetri del poligono inscritto, circoscritto e della circonferenza si ha pi < C < pc C , dove r `e la misura del raggio si trova la relazione 2r pc pi <π< = πc πi = 2r 2r cio`e πi `e un’approssimazione per difetto di π, cos`ı come πc lo `e per eccesso. Naturalmente l’approssimazione sar`a tanto migliore, quanto pi` u grande `e il numero dei lati del poligono. Il problema quindi si riconduce a calcolare il perimetro dei poligoni inscritti e circoscritti al cerchio, in funzione del raggio. Sostituendo nella formula π = Teorema 1 Se ln indica il lato del poligono regolare di n lati inscritto in una circonferenza di raggio 1 (per semplicit`a) il lato del poligono di 2n lati, l2n , `e dato da q p l2n = 2 − 4 − ln2 (6.1) Dimostrazione. In riferimento alla figura 1, dato AB = ln si vuole ricavare BH = l2n . H l 2n A B C l n 1 O Figura 1 Applicando il teorema di Pitagora al triangolo BHC 2 2 BH = BC + HC 2 ⇒ 2 l2n 2 ln + HC 2 = 2 6. Conoscenza numerica di numeri 11 D’altra parte HC 2 = (OH − OC)2 = (1 − OC)2 = 1 + OC 2 − 2OC 2 ln 2 2 2 OC = AO − AC = 1 − 2 quindi 2 l2n 2 2 ln ln 2 = + HC = + 1 + OC 2 − 2OC = 2 2 2 2 p ln ln = +1+1− − 2OC = 2 − 2OC = 2 − 4 − ln2 2 2 da cui la tesi. Il teorema 1, noto il lato di un qualsiasi poligono inscritto (poligono iniziale), consente di calcolare il lato di tutti i poligoni inscritti, il cui numero dei lati `e multiplo, secondo una potenza di 2, del numero di lati del poligono iniziale. Ad esempio, ricordando che il lato dell’esagono inscritto in una circonferenza `e uguale al raggio della circonferenza stessa, si ha (per semplicit`a di calcolo scegliamo di lavorare con la circonferenza di raggio 1) l6 l12 l24 l48 =1 p √ = 2− 3 q p √ = 2− 2+ 3 r q p √ = 2 − 2 + 2 + 3. Se π1,n `e l’approssimazione di π relativa al poligono inscritto di n lati si trova π1,n = nln <π 2 Per calcolare il lato del poligono circoscritto vale il seguente Teorema 2 Se ln indica il lato del poligono regolare di n lati inscritto in una circonferenza di raggio 1, il lato Ln del poligono circoscritto di uguale numero di lati `e dato da Ln = p 2ln 4 − ln2 (6.2) Dimostrazione. In riferimento alla figura 2, dato AB = ln si vuole ricavare T V = Ln (si considera sempre la circonferenza di raggio 1). 12 B T Ln ln H A O V C Figura 2 Considerando il triangolo OAT si ha AT · OA = AH · OT da cui ponendo x = AT e ricordando che OA = 1 OT = 2x x AT · OA = . = ln AH ln 2 D’altra parte applicando ancora il teorema di Pitagora al triangolo OAH e osservando ln che AH = , si trova 2 s 2 ln OH = 1 − 2 e quindi 2x T H = OT − OH = − ln s 2 ln . 1− 2 In riferimento ora al triangolo rettangolo AT H AT 2 = AH 2 + T H 2 ⇒ x2 da cui s 2 2 2 2x ln ln + − 1− = = 2 ln 2 s 2 ln2 4x 4x2 ln2 ln − = + 2 + 1− 1− 4 ln 4 ln 2 4 2x p − 1 x2 − 4 − ln2 + 1 = 0 2 ln ln Moltiplicando per ln2 ambo i membri l’espressione diventa p 2 p 2 2 2 2 2 4 − ln x − 2xln 4 − ln + ln = x 4 − ln − ln = 0 da cui x= p ln , 4 − ln2 7. Conoscenza numerica di funzioni 13 ed essendo Ln = 2x la tesi Ln = p 2ln . 4 − ln2 Segue dal teorema 2 che, se π2,n `e l’approssimazione di π relativa al poligono circoscritto di n lati, si ha π < π2,n = nLn nln =p 2 4 − ln2 Dalle espressioni ricavate per π1,n e π2,n si trova π1,n = nln nln = π2,n <π< p 2 4 − ln2 Su tale relazione si pu`o costruire un algoritmo che calcola π, teoricamente con la precisione voluta, ma in pratica dipendente dalla precisione di macchina e da problemi di instabilit`a numerica. 7 Conoscenza numerica di funzioni Diremo che una funzione `e conosciuta numericamente se `e noto, nel senso precisato riguardo ai numeri, il valore che essa assume in ogni punto dell’insieme di definizione. Esistono, nella pratica, tre situazioni familiari: • funzione assegnata mediante una tavola o un algoritmo gi`a disponibile in macchina: `e il caso delle funzioni ”elementari”, xα α ∈ IR, log x, sin x, cos x, . . .e in tal caso si dir`a che si dispone di una pseudo-conoscenza esplicita; • funzione assegnata mediante uno sviluppo in serie di funzioni elementari: f (x) = ∞ X an un (x) n=0 (es. sviluppo in serie di Taylor se le derivate successive di f (x) sono funzioni elementari oppure sviluppi trigonometrici etc.) allora f (x) `e conosciuta numericamente se `e noto un numero finito di f (x) = an (supponendo di poterne conoscere un numero qualsiasi). • funzione assegnata per punti: in tal caso per il calcolo della funzione in un punto diverso da quelli noti si proceder`a per interpolazione. 14 Accanto a queste funzioni, che possono ritenersi pi` u o meno note esplicitamente, esistono numerosi esempi di funzioni assegnate implicitamente, il cui calcolo `e da analizzare: funzioni speciali: 1 • funzione errore erf (x) = √ 2π Z x 2 e−t dt; 0 • funzione Γ (x); • funzioni di Bessel ; • funzioni di Legendre, etc.; equazioni differenziali; equazioni a derivate parziali; equazioni integrali; problemi di minimizzazione. 7.1 Un metodo numerico per il calcolo di sin t (Algoritmo A) Si vuole ora costruire un metodo numerico che dato l’angolo t, calcoli il valore approssimato di sin t. Tale metodo `e denominato algoritmo A per distinguerlo da un altro algoritmo, presentato in seguito, che risolve lo stesso problema e che sar`a indicato come algoritmo T. A s t B H O 1 D S C Figura 3 Si considera l’arco corrispondente all’angolo t, identificato anche con t; il metodo consiste nel passare dalla corda s sottesa all’arco t, alla corda S sottesa all’arco 2t. In tal modo se si immagina di dividere l’arco 2t in 2n parti uguali, con n sufficientemente grande, si pu`o considerare la lunghezza dell’arco “uguale” alla lunghezza della corda. Usando questa come corda di partenza si itera il procedimento “di raddoppio” fino a calcolare la corda S, che risulta essere 2 sin t e che si ottiene esattamente dopo n “raddoppi”. Dalla figura 3, applicando il teorema di Pitagora al triangolo BAD, si trova √ √ AB = BD 2 − s2 = 4 − s2 , inoltre √ 2 areaABD = AD · AB = s 4 − s2 7. Conoscenza numerica di funzioni 15 (per semplicit`a di calcolo si considera una circonferenza di raggio 1). D’altra parte 2 areaABD = 2AH = 2 sin t = S, quindi in definitiva 7.2 √ S = 2 sin t = s 4 − s2 Un metodo numerico per il calcolo di sin t (Algoritmo T) Questo algoritmo (dovuto a Tolomeo) si basa su considerazioni analoghe al precedente, solo che in questo caso si divide l’arco t in 3n parti uguali, e si passa dalla corda s sottesa all’arco t, alla corda S sottesa all’arco 3t. A s D S d t O 1 C H B Figura 4 Si considera l’arco corrispondente all’angolo t, identificato anche con t; il metodo consiste nel passare dalla corda s sottesa all’arco t, alla corda S sottesa all’arco 3t. In tal modo se si immagina di dividere l’arco 3t in 3n parti uguali, con n sufficientemente grande, si pu`o considerare la lunghezza dell’arco “uguale” alla lunghezza della corda. Usando questa come corda di partenza si itera il procedimento “di triplicazione” fino a calcolare la corda S, che risulta essere 2 sin t e che si ottiene esattamente dopo n “triplicazioni”. L’algoritmo T si basa sul seguente Teorema 3 (di Tolomeo) In un trapezio isoscele il prodotto delle diagonali `e pari alla somma dei prodotti dei lati opposti. In riferimento alla figura 4, il teorema di Tolomeo afferma che d2 = s2 + sS. Dimostrazione. AB + DC S+s = 2 2 Applicando il teorema di Pitagora al triangolo AHC 2 S+s 2 2 2 2 d = AC = AH + HC = + HC 2, 2 AH = Osservando che HB = S−s AB − DC = 2 2 16 e applicando il teorema di Pitagora al triangolo BHC 2 S−s 2 2 2 2 HC = BC − HB = s − 2 quindi 2 d = S+s 2 2 + HC 2 = = S+s 2 2 2 +s − S−s 2 2 = S 2 sS s2 S 2 sS s2 + + + s2 − + − 4 2 4 4 2 4 cio`e in definitiva d2 = s2 + sS D’altra parte d risulta essere la corda sottesa all’arco 2s e quindi, ricordando l’algoritmo A, d 2 = s2 4 − s2 . Uguagliando i due risultati si trova s2 + sS = s2 4 − s2 . cio`e 3s2 − s4 = 3s − s3 s che `e la formula che permette di passare dalla corda s, sottesa all’arco t, alla corda S, sottesa all’arco 3t. S= 8 Teoria degli errori La presenza di errori numerici dipende dall’uso dell’approssimazione per rappresentare operazioni e quantit`a matematiche ”esatte“, e ci`o `e dovuto prevalentemente all’uso di un’aritmetica finita, propria degli strumenti di calcolo. Altre fonti di errore possono verificarsi a prescindere da quelli dovuti all’uso del calcolatore. 8.1 Sorgenti di errore I risultati numerici possono essere influenzati da diversi tipi di errori • Errori inerenti: – errori nei dati iniziali: i dati iniziali di un problema sono generalmente il risultato di misurazioni sperimentali. Essi possono essere dovuti alla sensibilit`a dello strumento di misurazione o al verificarsi di eventi “imprevedibili” nel corso della misurazione. Possono essere controllati sottoponenedo il modello a molti test e verificando la sensibilit`a della soluzione rispetto a variazioni degli input; 8. Teoria degli errori 17 – semplificazioni introdotte nel modello: il modello di norma non rappresenta esattamente la situazione reale. • Errori acquisiti: – errori di troncamento: sono relativi al metodo di approssimazione usato e generalmente corrispondono al troncamento di un procedimento di successive approssimazioni. In ogni caso vanno analizzati relativamente ad ogni metodo utilizzato; – errori di arrotondamento: sono dovuti alla rappresentazione dei numeri in macchina; – errori di propagazione: sono dovuti alla rappresentazione dei numeri e dipendono dall’accumulo degli errori di arrotondamento nel corso di un processo di calcolo. 8.2 Errore assoluto e errore relativo Dati due numeri reali α e β, se β `e un’approssimazione di α, si definisce in prima istanza come errore la quantit`a E = |α − β| . Tale definizione non `e per`o sufficiente a dare un’indicazione della bont`a dell’approssimazione ricavata. Infatti siano a) α = 1986 b) α = 10 β = 1985 β=9 E = |α − β| = 1 E = |α − β| = 1. In entrambi i casi l’errore vale 1, ma l’approssimazione nel secondo caso `e molto meno accettabile che nel primo, (l’errore `e dello stesso ordine di grandezza dei dati). Per avere una stima pi` u significativa si rende necessaria una definizione di errore che tenga conto del rapporto tra l’errore stesso e i dati in esame. Definizione 1. Siano α, β ∈ IR e β ≈ α. Si definisce errore assoluto la quantit`a Eα = |α − β| . Si definisce invece errore relativo la quantit`a REα = |α − β| |α| o equivalentemente, poich´e in generale non `e noto |α| ed essendo β un’approssimazione di α, quindi dello stesso ordine di grandezza, REα = |α − β| . |β| 18 Tali definizione hanno un valore puramente teorico essendo generalmente non noto il valore esatto. Negli esempi considerati per l’errore relativo si ottengono le quantit`a a) RE = 1/1986 ' 5 ∗ 10−4 b) RE = 1/10 = 1 ∗ 10−1 . Risulta ora chiaro che nel secondo caso l’errore relativo `e molto pi` u grande che nel primo. 8.3 Errore di troncamento L’errore di troncamento `e caratteristico del particolare metodo utilizzato, e dipende dal troncamento di un processo infinito. Esempio 7. Si vuole approssimare ex mediante il polinomio cubico p3 (x) = 1 + x x2 x3 + + . 1! 2! 3! Il calcolo esatto di ex richiede il calcolo di una serie infinita x e = p3 (x) + ∞ X xk k=4 k! . L’errore commesso `e dovuto al troncamento della serie infinita e pu`o essere ridotto aumentando il numero di termini coinvolti nell’approssimazione, ma mai annullato. 8.4 Numeri e calcoli in virgola mobile La natura stessa dei numeri impone di operare con un numero finito di cifre. Al fine di poter esprimere la precisione con la quale `e stato effettuato un calcolo, conviene fissare a priori l’aritmetica finita, secondo cui operare. A tal proposito si osserva che ogni numero decimale pu`o essere espresso nella forma x = a · 10c con |a| < 10. 354 = 3.54 · 102 ; 254.7 = 2.547 · 102 ; 50.78 = 5.078 · 10 0.0071 = 7.1 · 10−3. Inoltre si pu`o scegliere opportunamente il valore di c in modo tale che risulti 10−1 = 1 ≤ |a| < 100 = 1. 10 354 = 0.354 · 103 ; −50.78 = −0.5078 · 102 0.0095 = 0.95 · 10−2 ; −0.00295 = −0.295 · 10−2 . (8.1) 8. Teoria degli errori 19 Tale operazione pu`o essere definita in un sistema di numerazione in base b qualsiasi. Infatti, ogni numero pu`o essere espresso, in base b, sempre nella forma x = a · bc (8.2) con |a| < b, e si pu`o fare in modo che b−1 ≤ |a| < 1. Ci`o consente di dare la seguente definizione: Definizione 2. Un numero espresso nella forma x = a · 10c o pi` u in generale, nella forma x = a · bc con |a| < b, dicesi in virgola mobile (floating point). Se inoltre b−1 ≤ |a| < 1 il numero dicesi in virgola mobile normalizzata; a si dice mantissa e c caratteristica del numero dato. Utilizzando la rappresentazione in virgola mobile, normalmente, si fissa a priori il numero, m, di cifre della mantissa, ed il numero, n, di cifre per la caratteristica, cio`e |a| = 0.α1 α2 . . . αm 0 ≤ αi ≤ 9, c k ∈ {1, . . . , n} . = β1 . . . βk α1 6= 0, in base b = 10 Fissati i numeri m ed n, cio`e il numero di cifre della mantissa e della caratteristica, e quindi rappresentando i numeri in virgola mobile, si fissa l’aritmetica finita in cui operare. Lavorando in aritmetica finita sorge il seguente problema. Sia, ad esempio, m = 4, cio`e 4 cifre di mantissa, si eseguono i seguenti calcoli (nel sistema decimale) a) x = 0.4326 · 103 , y = 0.5129 · 102 , b) x = 0.6123 · 104 , y = 0.5243 · 104 , z =x·y = 0.22188054 · 105 z = x + y = 0.11366 · 105 . In entrambi i casi il risultato contiene pi` u di quattro cifre di mantissa. Qual `e allora il risultato nell’aritmetica finita considerata (m = 4 cifre di mantissa)? La risposta sar`a data nel prossimo paragrafo. 8.5 Errore di arrotondamento Nei calcolatori digitali i numeri sono rappresentati in virgola mobile normalizzata con un numero fissato di cifre per la mantissa e la caratteristica; ne segue che l’insieme dei numeri rappresentabili esattamente in una macchina calcolatrice `e finito. Tale insieme sar`a indicato con A. Se un numero reale x non appartiene ad A, occorrer`a considerare un valore che sar`a indicato con f l (x), tale f l (x) ≈ x e f l (x) ∈ A. 20 Si suppone di disporre di una macchina con m cifre di mantissa e c di caratteristica. Sia x ∈ IR e x ∈ / A (x ha un espressione decimale con pi` u di m cifre di mantissa). x pu`o essere scritto come x = a · bt , b−1 < |a| < 1 e a = ±0.α1 α2 . . . αm αm+1 . . . 0 ≤ αi ≤ b − 1, ∀i e α1 6= 0. Sia a0 definito da ±0.α1 α2 . . . αm b 0 < αm+1 ≤ b c − 1 2 a0 = b ±0.α1 α2 . . . αm + b−m αm+1 ≥ b c 2 cio`e si considerano solo le prime m cifre del numero con la m-esima inalterata o aumentata di 1, a seconda del valore della m + 1-esima. Ad esempio, in base b = 10, l’m-esima cifra di mantissa αm rimane inalterata se αm+1 < 5 ed `e aumentata di 1 se αm+1 ≥ 5. Se si pone `e evidente che f l (x) ∈ A. f l (x) = a0 · bt Esempio 8. Supponendo di lavorare in virgola mobile con 4 cifre di mantissa x1 = 0.789435 f l (x1 ) = 0.7894 x2 = 4.59431 · 102 f l (x2 ) = 0.4594 · 103 x3 = 0.968781 f l (x3 ) = 0.9688 x4 = 86943.8 f l (x4 ) = 0.8694 · 105 L’errore che si commette sostituendo al valore esatto x, il valore “arrotondato” ad m cifre di mantissa, f l (x), `e detto errore di arrotondamento Ricordando la definizione di errore relativo si verifica che b b x − f l (x) b c b−(m+1) b c b−(m+1) b ≤ 2 −1 = b c b−m < 2 x |a| b 2 Se si pone ν = b 2b c b−m , si ottiene f l (x) = x (1 + ε) , con |ε| < ν. Il numero ν `e detto precisione di macchina e nel sistema decimale vale 5 · 10−m . In base 10 quindi l’arrotondamento induce un errore relativo per il quale vale la maggiorazione x − f l (x) (m cifre di mantissa) (8.3) ≤ 5 · 10−m REx = x In alcuni casi casi, pu`o verificarsi che anche dopo l’arrotondamento f l (x) ∈ / A. 8. Teoria degli errori 21 Esempio 9. Dato x = 0.999998 · 1099 (base decimale), si vuole determinare f l (x) in un’aritmetica finita con 5 cifre di mantissa e 2 di caratteristica. x = 0.999998 · 1099 =⇒ f l (x) = 0.10000 · 10100 ∈ / A. f l (x) ∈ / A, essendo espresso con 3 cifre di caratteristica. In questi casi si ha un fenomeno di sovraesponenziazione detto (overflow). In modo analogo si possono avere casi di sottoesponenziazione (underflow) Sull’insieme dei numeri macchina, sottoinsieme dei numeri reali, si devono ridefinire le operazioni aritmetiche, infatti anche se gli operandi sono numeri macchina il risultato pu`o non esserlo. Definiamo le quattro operazioni elementari macchina x ⊕ y = f l (x + y) , x y = f l (x − y) , x ⊗ y = f l (x ∗ y) , x y = f l (x/y) . dove f l indica l’arrotondamento floating-point. ` importante osservare che E Osservazione 1. Per le operazioni in aritmetica finita (virgola mobile e numero di cifre fissato per la mantissa e la caratteristica) gran parte delle propriet`a dell’aritmetica nel campo reale, ad esempio la propriet`a associativa o distributiva, possono non essere pi` u valide. Esempio 10. Eseguendo i calcoli in virgola mobile non valgono le consuete leggi associative della somma e del prodotto (a + b) + c = 6 a + (b + c) a · (b · c) 6 = (a · b) · c. Dati a = 17.6, b = 3.81, c = 2.736, si vuole calcolare s =a+b+c con tre cifre di mantissa. e z = a·b·c 22 a + b = 17.6 + 3.81 = 21.41 ≈ 0.214 · 102 s = (a + b) + c = 0.214 · 102 + 0.274 · 10 ≈ 0.241 · 102 b + c = 3.81 + 2.736 = 6.546 ≈ 0.655 · 10 s = a + (b + c) = 17.6 + 6.55 = 24.15 ≈ 0.242 · 102 . s = 0.241 · 102 6= 0.242 · 102 = s. a · b = 17.6 · 3.81 ≈ 0.671 · 102 z = (a · b) · c = 67.1 · 2.736 ≈ 0.184 · 103 b · c = 3.81 · 2.736 ≈ 0.104 · 102 z = a · (b · c) = 17.6 · 10.4 ≈ 0.183 · 103 . z = 0.184 · 103 6= 0.183 · 103 = z. 8.6 Errore di propagazione L’errore di propagazione `e il pi` u pericoloso, esso `e generato dal “propagarsi” di errori esistenti quando il dato `e coinvolto in ulteriori operazioni. Se un errore sui dati iniziali tende a crescere quando il metodo procede, anche di fronte alla convergenza teorica del metodo, il risultato finale sar`a del tutto inattendibile. Quando un metodo tende ad amplificare gli errori, esso `e detto instabile, di contro ad un metodo stabile che mantiene costante il limite dell’errore nel corso dell’esecuzione. Si suppone di dover eseguire un calcolo i cui dati di partenza siano affetti da errori inerenti o acquisiti e si analizzano gli effetti di tali errori nel calcolo successivo. Innanzi tutto si esamina il caso delle quattro operazioni elementari: addizione, sottrazione, moltiplicazione, divisione. A tale proposito, siano x e y due numeri reali e x1 , y1 le relative approssimazioni e si suppone, inizialmente, che le operazioni +,−,·,/ si effettuino senza arrotondamento. Dopo le operazioni, per l’errore assoluto si ha 8. Teoria degli errori 23 Addizione Ex+y = (x + y) − (x1 + y1 ) = (x − x1 ) + (y − y1 ) = Ex + Ey Sottrazione Ex−y = (x − y) − (x1 − y1 ) = (x − x1 ) − (y − y1 ) = Ex − Ey Moltiplicazione Exy = xy − x1 y1 = (x1 + Ex )(y1 + Ey ) − x1 y1 = = x1 y1 + Ex y1 + Ey x1 + Ex Ey − x1 y1 ∼ = Ex y1 + Ey x1 dove, essendo Ex e Ey quantit`a molto piccole, si suppone che il loro prodotto sia trascurabile rispetto alle quantit`a stesse Divisione Ex/y = xy1 − yx1 (x1 + Ex ) y1 − (y1 + Ey ) x1 x x1 − = = = y y1 yy1 (y1 + Ey ) y1 x1 y1 + Ex y1 − x1 y1 − x1 Ey ∼ Ex y1 − Ey x1 Ey 1 se = 2 Ey y1 y1 2 y1 1 + y1 Molto spesso, per`o, dopo l’operazione il risultato dovr`a essere arrotondato. Basta pensare che lavorando con m cifre di mantissa, il numero di cifre del prodotto di due numeri `e compreso tra 2m − 1 e 2m, e analogamente per le altre operazioni. Pertanto, le formule precedenti devono essere modificate con l’aggiunta di un termine che esprima l’errore di arrotondamento nell’operazione effettuata. Se si indica con α, σ, β, δ gli errori di arrotondamento rispettivamente per le operazioni +,−,·,/ si ottengono le formule = Addizione Ex+y = Ex + Ey + α Sottrazione Ex−y = Ex − Ey + σ Moltiplicazione Exy = Ex y1 + Ey x1 + β Divisione Ex/y = 1 [Ex y1 − Ey x1 ] + δ. y12 ` utile osservare che l’errore di arrotondamento non dipende dalla particolare operazione, E nel senso che l’arrotondamento deve essere effettuato indipendentemente da come `e stato ottenuto il numero. Poich´e l’errore relativo `e spesso pi` u significativo dell’errore assoluto, occorre determinarne le formule per le quattro operazioni. Usando la relazione REx⊕y = Ex⊕y x1 ⊕ y1 ove ⊕ indica una qualsiasi delle quattro operazioni, che lega l’errore assoluto all’errore 24 relativo, si possono facilmente scrivere le formule per l’errore relativo. (1) (2) REx+y = REx REx−y = REx RExy (3) (4) (5) (6) y1 x1 + REy + x1 + y1 x1 + y1 x1 −y1 + REy + x1 − y1 x1 − y1 α addizione σ sottrazione = REx 1 + REy 1 + β moltiplicazione REx/y = REx 1 + REy (−1) + δ divisione N O N O R Le colonne (2), (3), (4), (5), (6), sono state indicate con le lettere N,O,N,O,R per indicare Numero, Operazione, Numero, Operazione, Rounding (arrotondamento). • La colonna (1) contiene l’errore nell’operazione x ⊕ y; • le colonne (2) e (4) contengono, rispettivamente l’errore relativo su x e su y; • le colonna (3) e (5) contengono i termini che si riferiscono all’operazione che si sta compiendo (indici di condizionamento); • la colonna (6) contiene l’errore di arrotondamento relativo all’operazione x ⊕ y. Osservando le colonne (3) e (5) si constata che nell’addizione, nella moltiplicazione e nella divisione il fattore moltiplicativo (detto anche indice di condizionamento) non supera in modulo l’unit`a. Quindi gli errori relativi su x e y non sono amplificati nell’operazione. Ci`o non avviene nella sottrazione, in cui almeno uno dei fattori `e, in modulo, maggiore di 1. Conseguentemente, uno degli errori relativi sar`a aumentato dall’operazione. Tale aumento `e tanto maggiore quanto pi` u x `e vicino ad y. Esempio 11. Dati x = 0.5628 · 104 e y = 0.5631 · 104 , si vuole calcolare z = x − y con quattro cifre di mantissa e dare anche un limite per l’errore relativo RE. La soluzione `e z = −0.0003 · 104 Da REz = passando al valore assoluto si ha |REz | ≤ | x y REx − REy , x−y x−y y x ||REx | + | ||REy |. x−y x−y Supponendo x e y arrotondati a cinque cifre di mantissa, cio`e, (8.4) 8. Teoria degli errori 25 REx ≤ 0.5 · 10−4 = 0.005% REy ≤ 0.5 · 10−4 = 0.005% e sostituendo nella (8.4) si trova 5628 + 5631 ≤ 5 · 10−5 · 4 · 103 = 0.2 = 20%. REz ≤ 5 · 10−5 3 Quindi anche se x e y hanno limiti dell’errore relativo molto piccoli, il risultato z = x − y pu`o avere un limite dell’errore relativo molto grande. Conseguentemente supponendo di proseguire i calcoli moltiplicando z per 0.7259 · 104 , si ottiene come risultato 0.21777 · 105 che sembra avere cinque cifre di precisione; in realt` a solo due sono significative, come si pu`o vedere effettuando con cinque cifre di mantissa il calcolo x · 0.7259 · 104 − y · 0.7259 · 104 . Per stimare l’andamento dell’errore di propagazione in una generica operazione si considera un problema tipo definito da y = ϕ(x), con ϕ1 (x1 , . . . , xn ) .. 1 n ϕ : D → Rm , ϕ(x) = , ϕ ∈ C (D), D ∈ R . . ϕm (x1 , . . . , xn ) Se x˜ ≈ x, cio`e x˜ `e un’approssimazione di x, si definiscono y˜ = ϕ(˜ x) soluzione sui dati approssimati ∆xi = x˜i − xi , ∆yi = y˜i − yi errore assoluto su ciascuna componente δxi = errore relativo per ciascuna componente. x˜i − xi y˜i − yi , δyi = xi yi Sviluppando in serie con arresto ai termini del primo ordine si trova l’espressione dell’errore assoluto su ciascuna componente della soluzione n X n ∂ϕi (x) X ∂ϕi (x) ∆yi = y˜i − yi = ϕi (˜ x) − ϕ(x) ≈ (˜ xj − xj ) = ∆xj . ∂xj ∂xj j=1 j=1 ∂ϕi (x) indicano come l’errore sulla componente xj del dato si amplifica sulla ∂xj componenete yi del risultato. Se yi 6= 0, i = 1, . . . , m e xj 6= 0, i = 1, . . . , n, le quantit`a Le quantit`a δyi ≈ n X xj ∂ϕi (x) δxj . ϕ (x) ∂x i j j=1 26 rappresentano gli errori relativi su ciascuna componente della soluzione. I fattori moltiplicativi presenti nella formula sono detti indici di condizionamento del problema. Se l’indice di condizionamento risulta, in modulo, < 1, l’errore sull’operando non viene amplificato. Nel caso delle quattro operazioni aritmetiche, gli indici di condizionamento sono sempre < 1, tranne che nella sottrazione. Questo fenomeno `e noto come cancellazione numerica, esso rende di fatto la sottrazione l’operazione numericamente pi` u instabile, cio`e pi` u pericolosa relativamente alla propagazione dell’errore. Nella realizzazione di un algoritmo `e necessario evitare la sottrazione di numeri quasi uguali, riscrivendo quando possibile le espressioni in una forma, matematicamente equivalente, che non contiene operazioni di tale tipo; ad esempio, espressioni del tipo a(b − c) o (a − b)/c possono essere scritte rispettivamente come ab − ac e a/c − b/c, se b ≈ c e a≈b. 8.7 Propagazione degli errori in semplici espressioni aritmetiche Si analizza, ora, attraverso degli esempi, la propagazione degli errori in semplici espressioni aritmetiche applicando i risultati del paragrafo precedente. Esempio 12. Si vuole calcolare la somma dei numeri reali a0 , a1 , a2 , a3 che hanno errori relativi RE0 , RE1 , RE2 , RE3 . L’errore di arrotondamento nella k−esima somma verr` a indicato con αk . Si calcola la somma richiesta, S, facendo uso dell’espressione seguente S = {[(a0 + a1 ) + a2 ] + a3 } Per ottenere l’espressione dell’errore relativo in S, si applica lo schema NONOR, visto nel paragrafo precedente, iniziando dalle parentesi pi` u interne. REs = RE0 | a0 a1 + RE1 + α1 a0 + a1 a0 + a1 N O · |N {z N O R } a0 + a1 a2 · + RE2 + α2 · a0 + a1 + a2 a0 + a1 + a2 O {z N O N a0 + a1 + a2 a3 + RE3 + α3 a0 + a1 + a2 + a3 a0 + a1 + a2 + a3 O N O R } R Questa espressione pu`o assumere un aspetto pi` u semplice usando le somme parziali S1 = a0 + a1 , Infatti S2 = a0 + a1 + a2 , S3 = a0 + a1 + a2 + a3 . 8. Teoria degli errori REs = 27 RE0 a0 + RE1 a1 + α1 S1 S1 S1 RE2 a2 + α2 S2 S2 RE3 a3 + α3 S3 + + S2 S2 S3 S3 Per calcolare l’errore assoluto, tenendo conto che Es = S · REs e che S3 = S, si ottiene Es = RE0 a0 + RE1 a1 + α1 S1 + RE2 a2 + α2 S2 + RE3 a3 + α3 S3 = = 3 X REk ak + 3 X αk Sk (8.5) k=1 k=0 Se |REk | < k · 10−m con k ≥ 5 e |αk | ≤ 5 · 10−m , dalla (8.5) ! 3 3 X X |Es | ≤ k |ak | + |Sk | 10−m k=0 k=1 Generalizzando questo risultato si pu`o affermare che l’errore che si commette calcolando n X la somma S = ak con errori relativi REk nel termine ak ed errore di arrotondamento k=0 αk nella k−esima addizione `e espresso da Es = n X k=0 REk ak + n X αk Sk k=1 ove Sk = a0 + a1 + · · · + ak . Tale errore soddisfa certamente la relazione seguente |Es | ≤ n X k=0 |REk ||ak | + n X k=1 |αk ||Sk | (8.6) Siano i numeri ak tutti dello stesso segno e siano ordinati in uno dei seguenti modi (1) |a0 | ≤ |a1 | ≤ |a2 | ≤ · · · ≤ |an | (2) |a0 | ≥ |a1 | ≥ |a2 | ≥ · · · ≥ |an |, allora le somme parziali Sk , in modulo, sono pi` u piccole per il primo ordinamento rispetto al secondo; conseguentemente anche il limite (8.6) `e pi` u piccolo per il primo ordinamento. Per questa ragione, dovendo sommare una sequenza di numeri di grandezza variabile (ma dello stesso segno) conviene sommarli in ordine di grandezza dal pi` u piccolo al pi` u grande. Esempio 13. Siano a0 , a1 , a2 i coefficienti del polinomio P2 (x) = a0 x2 + a1 x + a2 . Se RE0 , RE1 , RE2 , REx , sono rispettivamente gli errori relativi in a0 , a1 , a2 , x,si vuole calcolare l’espressione dell’errore per P2 (x). 28 Il polinomio P2 (x) pu`o essere scritto nella forma P2 (x) = {[a0 x + a1 ]x + a2 } (8.7) Se con αk e µk si indicano rispettivamente gli errori relativi di arrotondamento nella k−esima addizione e moltiplicazione, l’espressione dell’errore per la (8.7) secondo lo schema NONOR `e a1 a0 x + RE1 + α1 ) · 1+ REP = ((RE0 · 1 + REx · 1 + µ1 ) · a0 x + a1 a0 x + a1 (a0 x + a1 )x a2 +REx · 1 + µ2 ] + RE2 + α2 } . P2 (x) P2 (x) Eseguendo i calcoli si trova (RE0 + REx + µ1 )a0 x + RE1 a1 + (α1 + REx + µ2 )(a0 x + a1 ) · a0 x + a1 (a0 x + a1 )x RE2 a2 + α2 P2 (x) · + P2 (x) P2 (x) REP = e quindi moltiplicando per P2 (x) e raccogliendo i termini simili EP = a0 x2 (RE0 + REx + µ1 + α1 + REx + µ2 + α2 ) + a1 x(RE1 + α1 + REx + µ2 + α2 )+ +a2 (RE2 + α2 ) . Se |REk |, |αk | e |µk | sono limitati da 5 · 10−m si ottiene il limite |EP | ≤ 7|a0 x2 | + 5|a1 x| + 2|a2 | · 5 · 10−m . (8.8) Si nota che il limite (8.8) `e tanto pi` u piccolo quanto pi` u piccolo `e |x|. 9 Condizionamento e stabilit` a Dato un problema, per quanto riguarda la propagazione degli errori si pu`o distinguere in: • comportamento del problema; • comportamento dell’algoritmo risolvente. Nel primo caso, nell’ipotesi di essere in grado di risolvere esattamente il problema, si studia come eventali perturbazioni nei dati iniziali si ripercuotono sui risultati. La caratterizzazione di un problema rispetto ad un tipo di comportamento `e indicata con il termine condizionamento; in particolare parleremo di problema bencondizionato se le perturbazioni sui dati non influenzano significativamente i risultati, malcondizionato altrimenti. Per caratterizzare il comportamento di un algoritmo invece si usa il termine stabilit` a; un algoritmo sar`a detto stabile se la successione delle operazioni non amplifica eccessivamente gli errori di arrotondamento, instabile altrimenti. La distinzione tra condizionamento e stabilit`a `e fondamentale: 9. Condizionamento e stabilit`a 29 • per un problema bencondizionato `e possibile in generale costruire algoritmi stabili; • la stabilit`a di un algoritmo `e inutile in presenza di un problema malcondizionato. Esempio 14. Un tipico problema malcondizionato `e il calcolo delle radici di un polinomio. Dato il polinomio di grado n Pn (x) = xn + a1 xn−1 + . . . + an−1 x + an , se z `e una radice di Pn , si ha Pn (z) = z n + a1 z n−1 + . . . + an−1 z + an = 0 Considerando il primo membro come funzione dei coefficienti ai , si pu`o scrivere Pn (z) = f (a1 , a2 , . . . , an ) . In corrispondenza di una variazione dei coefficienti ∆ai , i = 1, 2, . . . , n si avr`a ! n X ∂f ∂z ∂z ∂f ∆ai + ∆a1 + . . . + ∆an ∆f ≈ ∂ai ∂z ∂a1 ∂an i=1 in cui i coefficienti sono stimati nel punto a = a1 + ∆a1 , . . . , an + ∆an . Indicando con ∂z ∂z ∆z = ∆a1 + . . . + ∆an ∂a1 ∂an la variazione complessiva della radice, prodotta dall’alterazione dei coefficienti, soddisfa la relazione n X ∂f ∆z = 0 z n−i ∆ai + ∂z i=1 Se si varia un solo coefficiente, ad esempio il k−esimo, di una quantit`a ∆ak , si ha una variazione sulle radici di ∆z ∆ak =A z ak con A=− ak z n−k ∂f z ∂z Il coefficiente A pu`o essere grande se, ad esempio, • z `e grande; ∂f ∂f `e piccolo, come nel caso di radici “vicine” ( = 0 nel caso di radici multiple). ∂z ∂z Nel caso in cui A `e grande, a piccole variazioni di un solo coefficiente possono corrispondere grandi variazioni delle radici. • Definizione 3. Un procedimento numerico, o algoritmo, si dice numericamente stabile quando, al crescere del numero dei passi, l’errore si mantiene limitato. Se questo non succede l’algoritmo si dir`a (numericamente) instabile 30 L’instabilit`a numerica `e una caratteristica dell’algoritmo: per la soluzione dello stesso problema possono esistere procedimenti stabili ed altri instabili. Esempio 15. Gli integrali In = Z 1 xn ex dx, n = 0, 1, . . . 0 possono essere calcolati tramite la formula ricorrente I0 = e − 1 e In = 1 − nIn−1 , (9.1) n = 1, 2, . . . Indicando con Ik il valore esatto, con Ik0 il valore calcolato e con ek = Ik0 − Ik il corrispondente errore, si ha I00 = I0 + e0 I 0 = 1 − I 0 = 1 − (I0 + e0 ) = I1 − e0 1 0 I 0 = 1 − 2I 0 = 1 − 2I1 + 2e0 = I2 + 2e0 2 1 ... quindi e1 = −e0 , e2 = 2e0 , e3 = −3!e0 , e in generale en = (−1)n n!e0 , n > 0. Il fattoriale cresce molto rapidamente, perci`o, anche se e0 `e piccolo, l’errore aumenta rapidamente al crescere di n, lim |en | = +∞ e lo schema risulta instabile. n→∞ Non `e detto per`o che per questo si debba rinunciare a calcolare il valore dell’integrale con un formula ricorrente! Osservando che lim In = 0, si pu`o porre n→∞ IN0 = 0, commettendo un errore e0N , per N abbastanza grande, ad esempio N = 10 o N = 15, e ricavare lo schema seguente 0 IN = 0 0 1 − Im+1 0 Im = , m = N, N − 1, . . . , 1 m+1 Per l’errore, con le stesse convenzioni di prima, si ha Ik0 = Ik + eN . Poich´e 1 − (IN + eN ) 1 − IN eN 1 − IN0 = = − , IN0 −1 = N N N N 10. Precisione di macchina eN = IN0 − IN eN −1 = IN0 −1 − IN −1 = eN eN −2 = N (N − 1) .. . 31 1 − IN eN − − IN −1 N N = −IN eN = , N (cfr. (9.1)) In questo caso l’errore viene rapidamente abbattuto e lo schema risulta stabile. Se il valore ottenuto per I0 `e sufficientemente accurato, tutti i valori precedenti vengono accettati, altrimenti si ricomincia ponendo IN0 0 = 0, con N 0 > N. 10 Precisione di macchina Quando si lavora in aritmetica finita `e importante sapere qual `e la pi` u piccola differenza tra due numeri che la macchina `e in grado di riconoscere, o qual `e il pi` u piccolo numero considerato diverso da zero. Tale quantit`a `e detta ε macchina o precisione di macchina. Esso fornisce una misura precisa di quante cifre significative sono possibili nella rappresentazione floating-point di un numero. L’ε macchina varia da calcolatore a calcolatore, cio`e dipende dall’aritmetica finita che ciascuna macchina usa. 11 Analisi di un metodo numerico: convergenza, errore di troncamento e di arrotondamento Lo studio completo di un metodo numerico, oltre alla descrizione ed eventuale codifica dell’algoritmo, necessita, se basato su un procedimento di successive approssimazioni, di una accurata analisi del comportamento. In particolare si devono realizzare: a) analisi della convergenza teorica; b) analisi della convergenza numerica; c) analisi dell’errore (detto di troncamento, perch´e si riferisce al troncamento di un processo di successive approssimazioni). Tale analisi si articola nei seguenti passi fondamentali: c1) ordine dell’errore; c2) maggiorazione dell’errore; c3) sviluppo asintotico dell’errore. 32 Esempio 16. (Calcolo numerico di π, algoritmo di Archimede) Nel caso dell’algoritmo di Archimede per il calcolo approssimato di π, una prima analisi superficiale consente di ottenere facilmente la maggiorazione: p nln (2 − 4 − ln2 ) p . π − π1,n < π2,n − π1,n = 2 4 − ln2 Un’analisi pi` u accurata coinvolge tutti gli aspetti legati alla convergenza, alla stabilit`a e alla stima dell’errore. a) convergenza teorica ` stato gi`a verificato “geometricamente” che E lim π1,n = lim π2,n = π n→∞ n→∞ osservando che per n → ∞ il perimetro dei poligoni inscritti e circoscritti ad una circonferenza tende alla lunghezza della circonferenza stessa. B α ln A α 1 β O Figura 10 Per uno studio analitico della convergenza si considera il triangolo isoscele AOB in figura 10, costruito su ln , lato del poligono inscritto di n lati (si considera sempre una circonferenza di raggio 1). Applicando il teorema dei seni al triangolo AOB si trova OA 1 ln = = sin β sin α sin α =⇒ ln = sin β . sin α Essendo ln il lato di un poligono regolare, vale β= 2π n da cui e 2π n 2α = π − β π π − 2 n π − α = cos α e quindi, ricordando che sin 2α = 2 sin α cos α e sin 2 2α = π − =⇒ α= 11. Analisi di un metodo numerico 33 π π 2π 2 sin cos sin sin β n n = 2 sin π . π n π = ln = = π sin α n cos − sin n 2 n In definitiva si ottiene ln = 2 sin π n =⇒ π1,n = nln π = n sin . 2 n Facendo uso dello sviluppo in serie di Mc-Laurin (sviluppo di Taylor di punto iniziale x0 = 0) per la funzione sin x, si trova sin x = sin 0 + x sin0 0 + x3 x2 sin00 0 + sin000 0 + . . . = 2! 3! ∞ X x2k+1 x3 x5 x7 + − + ... = (−1)k = x− 3! 5! 7! (2k + 1)! k=0 quindi π1,n ! nln π 1 π 3 1 π 5 1 π 7 π = = n sin = n − + − + ... 2 n n 3! n 5! n 7! n e lim π1,n = lim n→∞ n→∞ 1 π5 1 π7 1 π3 + − + ... π− 3! n2 5! n4 7! n6 ! =π cio`e lim π1,n = π n→∞ che garantisce la convergenza teorica del metodo di Archimede. b) convergenza numerica Il metodo di Archimede per il calcolo di π presenta problemi di convergenza numerica, infatti calcolando π1,n dalla (6.1) con sedici cifre decimali si hanno i risultati di tabella 1. 34 π1,n π1,6 π1,12 π1,1536 π1,3072 π1,6144 π1,12288 π1,24576 π1,49152 π1,98304 π1,196608 π1,393216 π1,786432 π1,1572864 π1,3145728 π1,6291456 π1,12582912 π1,25165824 π1,50331648 π1,100663296 π1,201326592 π1,402653184 π1,805306368 π1,1610612736 π1,3221225472 π1,6442450944 π1,12884901888 doppia precisione (16 cifre) 3.(000000000000000) 3.1(05828541230248) 3.14159(0463228050) 3.141592(105999243) 3.141592(516692049) 3.1415926(19365120) 3.1415926(45032004) 3.14159265(1438954) 3.141592653(033526) 3.141592653(325343) 3.141592653(325343) 3.141592653(325343) 3.1415926(45321215) 3.1415926(45321215) 3.1415926(45321215) 3.141592(303811737) 3.1415(89571734577) 3.1415(75911313137) 3.1415(43126059329) 3.141(324548956220) 3.14(0974793953303) 3.1(37475099502783) 3.1(26249750099949) 3.(092329219213245) 3.(000000000000000) (0.000000000000000) Tabella 1.Calcolo di π1,n con l2n = q 2− p 4 − ln2 Si constata facilmente che a partire da un certo n in poi π1,n si discosta anzich`e avvicinarsi a π. Per analizzare tale fenomeno bisogna studiare l’errore di arrotondamento, dalla cui propagazione dipende la convergenza numerica del metodo. Infatti anche se teoricamente un metodo converge, a causa della propagazione dell’errore di arrotondamento si possono avere risultati falsati, come visto in tabella 1. Non sempre `e possibile arginare gli effetti di tale fenomeno, in alcuni casi basta modificare opportunamente l’algoritmo sostituendo operazioni computazionalmente “pericolose” con operazioni matematicamente equivalenti ma pi` u “stabili”. Per quanto riguarda il metodo di Archimede, si osserva che le due formule l2n q p = 2 − 4 − ln2 , l2n = q 2+ ln p (11.1) 4 − ln2 sono matematicamente equivalenti (la prima si ottiene dalla seconda per razionalizzazione) ma utilizzando la seconda al posto della prima nel calcolo di π1,n o (π2,n ) si 11. Analisi di un metodo numerico 35 ottengono i risultati di tabella 2, da cui non risulta l’effetto devastante dell’errore di arrotondamento. Si pu`o osservare facilmente che per n → ∞, ln → 0 e nella prima delle 11.1 si genera un problema di cancellazione numerica. doppia precisione (16 cifre) 3.(000000000000000) 3.1(05828541230248) 3.14159(0463228049) 3.141592(105999271) 3.141592(516692156) 3.1415926(19365383) 3.1415926(45033690) 3.14159265(1450767) 3.141592653(055036) 3.141592653(456103) 3.1415926535(56371) 3.14159265358(1437) 3.14159265358(7704) 3.141592653589(271) 3.141592653589(663) 3.1415926535897(61) 3.1415926535897(85) 3.14159265358979(1) 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 3.141592653589793 π1,n π1,6 π1,12 π1,1536 π1,3072 π1,6144 π1,12288 π1,24576 π1,49152 π1,98304 π1,196608 π1,393216 π1,786432 π1,1572864 π1,3145728 π1,6291456 π1,12582912 π1,25165824 π1,50331648 π1,100663296 π1,201326592 π1,402653184 π1,805306368 π1,1610612736 π1,3221225472 π1,6442450944 π1,12884901888 ln Tabella 2. Calcolo di π1,n con l2n = q p 2 + 4 − ln2 c) studio dell’errore di troncamento c1) |π − π1,n | = O (nα ) , Dalla relazione α ∈ IR (ordine); π1,n = π − 1 π5 1 π7 1 π3 + − + ... 3! n2 5! n4 7! n6 π − π1,n = 1 π5 1 π7 1 π3 − + −... 3! n2 5! n4 7! n6 si ricava cio`e π − π1,n = O n−2 che `e l’ordine del metodo di Archimede. 36 k ∈ IR+ , β ∈ IR c2) |π − π1,n | ≤ k nβ , Per x > 0 sinx = x − (maggiorazione); x3 x5 x7 x3 + − + ... > x− 3! 5! 7! 6 e quindi π1,n π3 π π > n − 3 = n sin n n 6n da cui ! =π− π3 6n2 3 22 5.17 7 ≈ 2 2 6n n π3 < 6n2 dove si `e usata la limitazione di Archimede 1 22 10 < π < 3+ = . 3+ 71 7 7 Si ottiene cos`ı una limitazione dell’errore nel metodo di Archimede. π − π1,n < c3) |π − π1,n | = g (n) + O (nσ ) , σ ∈ IR, g nota Dalla relazione π1,n = π − (svil. asintot.). 1 π3 1 π5 1 π7 + − + ... 3! n2 5! n4 7! n6 si ricava π − π1,n = ∞ X (−1)k+1 k=1 π 2k+1 1 (2k + 1)! n2k cio`e lo sviluppo asintotico dell’errore. Con le informazioni ricavate, `e possibile studiare la velocit`a di convergenza, cio`e il comportamento dell’errore al passo (n + 1)-esimo in relazione all’errore al passo n-esimo. Da π1,n = n sin π n π1,2n = 2n sin = π− 1 π3 1 π5 1 π7 + − + ... 3! n2 5! n4 7! n6 1 π3 π 1 π5 1 π7 = π− + − + ... 2n 3! (2n)2 5! (2n)4 7! (2n)6 si ricava π − π1,n π − π1,2n # 1 π 7 1 π 3 1 π 5 + − + ... = n 3! n 5! n 7! n # " 1 π 7 1 π 3 1 π 5 + − + ... = 2n 3! 2n 5! 2n 7! 2n " 11. Analisi di un metodo numerico 37 e quindi π − π1,2n n→∞ π − π1,n lim " # 1 π 3 1 π 5 2n − + ... 3! 2n 5! 2n " # = = lim n→∞ 1 π 3 1 π 5 n − + ... 3! n 5! n " # 3! π 2 1 π 3 1− + ... 2 3! 2n 5! 2n 1 " # = = lim n→∞ 4 1 π 3 3! π 2 1− + ... 3! n 5! n cio`e 1 π − π1,n π − π1,2n ≈ 4 che d`a la velocit`a di convergenza del metodo di Archimede. La relazione trovata 1 esprime che ad ogni passo l’errore di troncamento si riduce di un fattore . 4
© Copyright 2024 Paperzz