Calcolo numerico L-A Riepilogo del materiale della prof.ssa Serena Morigi dell’a.a. 2009/10 Marco Alessandrini Giugno 2010 – *** C.d.L. in Ingegneria Elettronica e delle Telecomunicazioni Seconda Facoltà di Ingegneria - Sede di Cesena Università degli Studi di Bologna \ = $ CC BY: Quest’opera è stata rilasciata sotto la licenza Creative Commons Attribuzione-Non commerciale-Non opere derivate 2.5 Italia. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-nc-nd/2.5/it/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. È consentito riprodurre e distribuire liberamente il presente testo, senza apporvi modifiche e mantenendo sempre riconoscibile il nome degli autori, purché non a scopo di lucro, senza scopi commerciali (direttamente o indirettamente) e per esclusivo uso personale. È possibile pubblicare il file o sue parti su siti internet, purché sia citato in maniera evidente l’autore. Per qualunque informazione, problematica, suggerimento o reclamo utilizzare l’indirizzo marco [email protected]. Indice 1 Calcolo numerico 1.1 Approssimazioni e sorgenti d’errore . . . . . . . . . 1.2 Numeri finiti . . . . . . . . . . . . . . . . . . . . . 1.2.1 Errori di rappresentazione . . . . . . . . . . 1.2.2 Precisione di macchina (eps) . . . . . . . . 1.2.3 Formati IEEE 754 per floating point . . . . 1.2.4 Aritmetica finita (aritmetica floating point) 1.2.5 Propagazione degli errori . . . . . . . . . . 1.2.6 Cancellazione numerica . . . . . . . . . . . 1.3 Condizionamento di un problema matematico . . . 1.3.1 Stabilità di un algoritmo . . . . . . . . . . . 1.3.2 Bontà di un algoritmo . . . . . . . . . . . . . . . . . . . . . . . 2 Radici reali di equazioni e sistemi di equazioni non 2.1 Soluzione di equazioni non lineari . . . . . . . . . . . 2.1.1 Metodo di bisezione . . . . . . . . . . . . . . 2.1.2 Metodo di Regula Falsi . . . . . . . . . . . . 2.1.3 Metodo delle secanti . . . . . . . . . . . . . . 2.1.4 Metodo di Newton (delle tangenti) . . . . . . 2.1.5 Ordine di convergenza . . . . . . . . . . . . . 2.2 Soluzione di sistemi di equazioni non lineari . . . . . 2.2.1 Metodo di Newton-Raphson . . . . . . . . . . 2.2.2 Minimizzazione di una funzione . . . . . . . . . . . . . . . . . . . Indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Sistemi lineari 3.1 Condizionamento di un sistema lineare . . . . . . . . . 3.1.1 Perturbazione del termine noto . . . . . . . . . 3.1.2 Perturbazione della matrice dei coefficienti . . . 3.1.3 Proprietà dell’indice di condizionamento . . . . 3.2 Metodi numerici per risolvere sistemi lineari . . . . . . 3.2.1 Metodo di eliminazione di Gauss . . . . . . . . 3.2.2 Fattorizzazione di Cholesky per sistemi lineari 3.2.3 Fattorizzazione di matrici e sistemi lineari . . . 4 Interpolazione 4.1 Problema di interpolazione . . . . . . . . . . . 4.2 Interpolazione polinomiale . . . . . . . . . . . . 4.2.1 Interpolazione di Lagrange . . . . . . . 4.2.2 Interpolazione di Newton . . . . . . . . 4.2.3 Valutazione di un polinomio con metodo 4.3 Errori di interpolazione. Fenomeno di Runge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 10 11 12 12 12 13 14 16 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 21 22 23 24 25 28 28 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 32 32 33 34 34 37 38 . . . . . . . . . . . . . . . . . . . . . . . . di Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 40 40 41 42 42 . . . . . . . . 3 = $ CC BY: 4.4 \ Calcolo numerico L-A Interpolazione polinomiale a tratti . . . . . . . . . . . . . . . . . . . . . . . 43 4.4.1 Funzione spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5 Decomposizione ai valori singolari (SVD) 45 5.1 Approssimazione di matrice con minor rango . . . . . . . . . . . . . . . . . 46 5.2 Risoluzione di sistemi lineari malcondizionati . . . . . . . . . . . . . . . . . 46 6 Integrazione numerica 6.1 Formule di quadratura . . . . . . . . . . . . . . 6.2 Formule di quadratura di Newton-Cotes (a nodi 6.2.1 Errore di troncamento (rn ) . . . . . . . 6.2.2 Pesi per formule di Newton-Cotes . . . 6.2.3 Problema delle formule di quadratura . 6.3 Formule di quadratura composite . . . . . . . . 6.3.1 Quadratura automatica . . . . . . . . . 6.4 Estrapolazione di Richardson . . . . . . . . . . 6.5 Calcolo geometrico con integrali . . . . . . . . . 6.6 Calcolo fisico con integrali . . . . . . . . . . . . 6.7 Esempi numerici . . . . . . . . . . . . . . . . . . . . . . . . . equispaziati) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 48 49 52 53 53 54 55 56 56 57 57 7 Approssimazione 7.1 Approssimazione ai minimi quadrati (LS) . . . . . . . . . . . . . . . . . . . 7.1.1 Metodo delle equazioni normali per l’approssimazione ai minimi quadrati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2 Minimi quadrati pesati. Polinomi ortogonali nelle equazioni normali 7.1.3 Metodo QR-LS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.4 Metodo della decomposizione in valori singolari (SVD-LS) . . . . . . 61 62 A Vettori e matrici A.1 Operazioni tra vettori . A.2 Operazioni tra matrici . A.3 Norme . . . . . . . . . . A.3.1 Norma vettoriale A.3.2 Norma matriciale A.4 Matrici definite in segno 68 68 68 69 69 69 70 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 65 66 66 Elenco delle figure 72 Elenco delle tabelle 73 Indice analitico 74 4 Indice I matematici possono dimostrare solo teoremi banali perché ogni teorema che viene dimostrato è necessariamente banale. - Richard Feynman - I matematici sono come i francesi: se si parla con loro, traducono nella loro lingua, e diventa subito qualcosa di diverso. - Johann Wolfgang von Goethe - CAPITOLO 1 Calcolo numerico Il calcolo numerico è l’arte di dare una risposta numerica ad un problema matematico attraverso un elaboratore elettronico. Lo scopo è quello di definire metodi numerici, cioè algoritmi, per la risoluzione con il calcolatore di problemi matematici (figura 1.1). Il calcolo numerico deve essere svolto: 1. nel minimo tempo possibile; 2. con la massima accuratezza. Figura 1.1: Analisi numerica 1.1 Approssimazioni e sorgenti d’errore 1) Semplificazioni introdotte nel modello. Si suppone che il modello sia lineare. Si suppone che alcune grandezze fisiche siano trascurabili. 2) Errori nei dati. Generalmente, i dati di un problema sono ottenuti da misurazioni, influenzate da errori sistematici e da errori casuali. Errori sistematici: dipendono dalla sensibilità dello strumento di misura. 1 - Calcolo numerico 7 = $ CC BY: \ Calcolo numerico L-A Errori casuali: sono dovuti a uno o più eventi imprevedibili. È importante fare una stima degli errori, perché da essa dipendono la scelta del grado di precisione e i test di arresto. 3) Errori di arrotondamento. calcolatore. Sono introdotti nella rappresentazione dei numeri sul 4) Errori di troncamento/discretizzazione. Sono introdotti quando si approssima un procedimento infinito con uno finito. Ad esempio: approssimare la derivata col rapporto incrementale; approssimare l’integrale con la formula di quadratura. 1.2 Numeri finiti Non tutti i numeri sono rappresentabili da calcolatore, ma solo: numeri a punto fisso: insieme finito di interi; numeri a punto mobile: insieme finito di reali. Un numero con virgola in una certa base B può essere rappresentato come somme distinte della parte intera e della parte decimale: ±(an . . . a0 . b1 b2 . . . )B = ± n X ak · B k + k=0 ∞ X bk · B −k k=1 anche se la rappresentazione univoca di x ∈ R (con B ∈ N) è: x = = ±0". d1 d2 . . . · B#p ∞ X ± di · B −i · B p d1 6= 0 0 ≤ di ≤ B − 1 i=1 = 1 ≤m<1 B ±m · B p m è la mantissa, B è la base, p è l’esponente. La rappresentazione univoca è la notazione scientifica normalizzata: per poterla utilizzare al calcolatore, la sommatoria non può essere infinita ma deve essere limitata a un termine t (dove t+1 è il numero di posizioni utilizzate per rappresentare il numero). Si possono anche utilizzare altre rappresentazioni. Rappresentazione in complemento alla base. −x in base B con t + 1 posizioni, con la forma: Si rappresenta un numero negativo B t+1 − x Si ha overflow quando x < −B t . Rappresentazione con esponente. Si aggiunge il fattore costante cifre riservate all’esponente. Ad esempio: x = 0.1039 · 10−6 Bi 2 , dove i sono le con B = 10 2 Il fattore è 102 = 50. Se gli esponenti da −50 a +49 sono memorizzati con i valori da 00 a 99 si può scrivere: x → 04410390 8 1.2 - Numeri finiti = $ CC BY: \ Calcolo numerico L-A L’insieme finito di numeri normalizzati a virgola mobile è: ( F (B, t, L, U ) = x∈R:x=± t X ! di · B ) ·B −i p ∪ {0} i=1 D1 6= 0 0 ≤ di ≤ B − 1 L≤p≤U con: L<0 U >0 di solito L = −U Non tutti i numeri reali sono rappresentabili in F , perché: 1. l’esponente è limitato: p > U : errore di overflow; p < L: errore di underflow. 2. la mantissa ha t cifre disponibili: se il numero di cifre nella mantissa è superiore a t, i numeri non sono esattamente rappresentabili, dunque occorre approssimarli (troncamento o arrotondamento). Il troncamento è ottenuto impostando un valore a piacere di t, dunque eliminando tutte le cifre successive di peso inferiore: fl T (x) = ± d1 B −1 + d2 B −2 + · · · + dt B −t · B p L’arrotondamento è ottenuto aggiungendo 21 B −t alla mantissa e troncando alla t-esima cifra: ! t+1 h X i 1 −t −i fl A (x) = ± fl T di B + B · Bp 2 i=1 L’approssimazione è fatta alla cifra più vicina: fl (x), T fl A (x) = fl (x) + B p−t , T B 2 B ≥ 2 se dt+1 < se dt+1 L’insieme F (B, t, L, U ) contiene 2(U − L + 1)(B − 1)B t−1 + 1. F non è una perfetta simulazione di R: 1. i numeri non sono uniformemente distribuiti sull’asse reale; 2. la densità dei numeri decresce con l’aumentare del valore assoluto del numero; 3. tutti i numeri reali compresi tra due consecutivi numeri finiti sono approssimati da uno dei due valori. Esempio. È dato l’insieme1 F (B = 2, t = 3, L = −1, U = 2). Allora 1− ≤ p ≤ 2 e le possibili mantisse sono: 0.100 , 0.101 , 0.110 , 0.111 quindi i numeri finiti rappresentabili sono 33 (compreso lo zero): 2(U − L + 1)(B − 1)B t−1 + 1 = 2 · (2 + 1 + 1) · (2 − 1) · 23−1 + 1 = 2 · 4 · 1 · 22 + 1 = 33 1 Si tratta di un insieme di numeri in base binaria. 1.2 - Numeri finiti 9 = $ CC BY: \ Calcolo numerico L-A Nel dettaglio, questi numeri finiti sono: 0.100 · 2−1 = 12 · 12 = 14 0.100 · 20 = 21 · 1 = 21 +1 0.100 · 2 = 12 · 2 = 1 +2 0.100 · 2 = 12 · 4 = 2 5 −1 0.101 · 2 = 12 + 18 · 12 = 16 1 1 5 0 0.101 · 2 = 2 + 8 · 1 = 8 1 5 1 +1 0.101 · 2 = 2 + 8 · 2 = 4 1 1 0.101 · 2+2 = 2 + 8 · 4 = 52 0.110 · 2−1 0.110 · 20 0.110 · 2+1 0.110 · 2+2 0.111 · 2−1 0.111 · 20 0.111 · 2+1 0.111 · 2+2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 = = = = = = = = + 41 · 12 = 38 + 41 · 1 = 34 + 41 · 2 = 32 + 41 · 4 = 3 7 + 41 + 18 · 12 = 16 1 1 7 + 4 + 8 · 1 = 8 + 41 + 18 · 2 = 74 + 41 + 18 · 4 = 72 Ponendo tutti i numeri finiti sull’asse reale, si nota come aumenta la discretizzazione all’aumentare del valore assoluto dei valori, cioè allontanandosi dallo zero (figura 1.2). −4 −3 − 72 −2 −1 0 − 25 1 2 1 1 4 2 5 5 5 16 8 4 3 3 3 8 4 2 7 7 7 16 8 4 3 4 5 2 7 2 Figura 1.2: Disposizione sull’asse reale dei numeri finiti rappresentati dall’insieme F (B = 2, t = 3, L = −1, U = 2) 1.2.1 Errori di rappresentazione Consideriamo i valori: x = mB p , x̄ = fl (x) = m̄B p Definizione 1 (Errore assoluto). x − fl (x). x − fl (x) Definizione 2 (Errore relativo). con x 6= 0. x L’errore più significativo è l’errore relativo, perché mette in relazione la differenza dovuta all’approssimazione con il valore della grandezza. Teorema 1. Per l’errore assoluto vale: x − fl (x) < B p−t T mentre per l’errore relativo vale: x − fl (x) T ≤ B 1−t x e x − fl (x) ≤ 1 B p−t A 2 e x − fl (x) 1 A ≤ B 1−t x 2 Dimostrazione. Valutiamo la distanza (errore assoluto) tra le mantisse nel caso di troncamento (figura 1.3). m m̄1 m̄2 = m̄1 + B −t Figura 1.3: Valutazione dell’errore nel caso di troncamento m ∈ m̄1 , m̄1 + B −t 10 ⇒ m̄ = m̄1 ⇒ m − m̄ < B −t 1.2 - Numeri finiti = $ CC BY: \ Calcolo numerico L-A m 1 m̄1 + B −t 2 m̄1 m̄2 = m̄1 + B −t Figura 1.4: Valutazione dell’errore nel caso di arrotondamento Valutiamo ora la distanza nel caso di arrotondamento (figura 1.4). 1 se m ∈ m̄1 , m̄1 + B −t 2 1 −t se m ∈ m̄1 + B , m̄2 2 m̄ = m̄1 ⇒ ⇒ ⇒ m̄ = m̄2 m − m̄ ≤ 1 B −t 2 Per il troncamento si può concludere che l’errore relativo è: x − fl (x) mB p − m̄B p B p−t B −t T ≤ ≤ = B 1−t = x mB p 0.d1 . . . dt · B p B −1 perché B −1 ≤ |m| < 1. La conclusione è del tutto analoga per l’arrotondamento. 1.2.2 Precisione di macchina (eps) Definizione 3 (Precisione di macchina). Unificando le scritture dell’errore relativo per i casi di troncamento e arrotondamento si può scrivere: ( B 1−t (troncamento) x − fl (x) 1 1−t ≤ eps con eps = x B (arrotondamento) 2 Nota 1.2.1. eps è chiamato anche unità di arrotondamento. eps è il più piccolo numero finito positivo tale che: fl (1 + eps) > 1 La formula dà una misura dell’accuratezza con la quale i numeri reali sono approssimati da numeri finiti F (B, t, L, U ), quindi misura la precisione del calcolatore. In altre parole, eps è il massimo errore relativo che si commette nel rappresentare un numero reale al calcolatore. Esempio. Consideriamo x = 1 e cerchiamo eps per casi, avendo B = 10, t = 5. Con y = 0.4 · 10−4 : fl A (x + y) = fl A (1.00004) = 0.10000 · 101 = 1 non è eps Con y = 0.5 · 10−4 : fl A (x + y) = fl A (1.00005) = 0.10001 · 101 > 1 è eps L’errore relativo che si commette nel rappresentare in F un numero reale x con fl (x) è: ε= fl (x) − x x Teorema 2. Avendo x ∈ R, rappresentabile in F , si verifica che: fl (x) = x(1 + ε) , con |ε| ≤ eps cioè ogni reale rappresentabile in F può essere approssimato da un elemento di F con un errore relativo non più grande di eps. 1.2 - Numeri finiti 11 = $ CC BY: 1.2.3 \ Calcolo numerico L-A Formati IEEE 754 per floating point Lo standard IEEE 754 adotta: la tecnica di arrotondamento ai pari (round to even) per x esattamente equidistante da due numeri finiti x1 e x2 consecutivi; l’hidden bit, perché il primo bit di mantissa è sempre 1, quindi si può evitare di memorizzarlo (e guadagnare un bit). 1) Precisione semplice 32 bit (base 2) SEGNO 1 p∗ ESPONENTE 8 p∗ = p + 127 , m MANTISSA 23 0 ≤ p∗ ≤ 255 t = 23. m ha 24 bit (incluso l’hidden bit). 2) Precisione doppia 64 bit (base 2) SEGNO 1 p∗ ESPONENTE 11 p∗ = p + 1023 , m MANTISSA 52 0 ≤ p∗ ≤ 2047 t = 52. m ha 53 bit (incluso l’hidden bit). Gli eps nei due casi sono: eps1 = 1 1−t ·2 = 2−23 ' 1, 2 · 10−7 2 1 1−t ·2 = 2−52 ' 2, 2 · 10−16 2 Alcune notazioni particolari sono in tabella 1.1. eps2 = ZERO NOT A NUMBER (NaN) INFINITO (OVERFLOW) 0/1 0/1 0/1 0 111. . . 11 111. . . 11 0 ogni configurazione diversa da 0 0 Tabella 1.1: Notazioni particolari di formati IEEE 754 1.2.4 Aritmetica finita (aritmetica floating point) Lemma 1.2.1. I risultati di operazioni aritmetiche tra numeri finiti generalmente non sono numeri finiti. Ciò significa che in un calcolatore risulta impossibile implementare correttamente le operazioni aritmetiche. Le operazioni in aritmetica finita associano a due numeri finiti un terzo numero finito, che è ottenuto approssimando il risultato esatto dell’operazione aritmetica. ā = fl (a) , b̄ = fl (b) ā op b̄ = fl (ā op b̄) = (ā op b̄)(1 + ε) 1.2.5 con |ε| ≤ eps Propagazione degli errori Si deve considerare l’esecuzione di una sequenza di operazioni, nella quale si verifica una propagazione di errori di entità non trascurabile. Perché il risultato sia attendibile bisogna controllare e gestire il fenomeno. 12 1.2 - Numeri finiti = $ CC BY: \ Calcolo numerico L-A Propagazione nella moltiplicazione fl fl (x) · fl (y) − (x · y) x·y = x(1 + ε1 ) · y(1 + ε2 ) · (1 + ε3 ) − x · y x·y (1 + ε1 )(1 + ε2 )(1 + ε3 ) − 1 ' ε1 + ε2 + ε3 = Propagazione nell’addizione fl fl (x) + fl (y) − (x + y) x+y = = ' x(1 + ε1 ) + y(1 + ε2 ) · (1 + ε3 ) − (x + y) x+y xε1 + yε2 + xε3 + yε3 + xε1 ε3 + yε2 ε3 x+y x y ε1 + ε2 + ε3 x+y x+y Propagazione nella sottrazione fl fl (x) − fl (y) − (x − y) x−y = = ' x(1 + ε1 ) − y(1 + ε2 ) · (1 + ε3 ) − (x − y) x−y xε1 − yε2 + xε3 − yε3 + xε1 ε3 − yε2 ε3 x+y x y ε1 + ε2 + ε3 x−y x−y Quando x è quasi uguale a y, ε1 e ε2 sono enormemente amplificati e cosı̀ lo è pure l’errore. 1.2.6 Cancellazione numerica Nelle operazioni di sottrazione, quando i due operandi sono quasi uguali si ha una perdita di cifre significative. Esempio (1). Consideriamo (B = 10, t = 6): x1 = 0, 147554326 , x2 = 0, 147251742 fl (x1 ) = 0, 147554 , fl (x2 ) = 0, 147252 Allora: Sul calcolatore la differenza è: fl fl (x1 ) − fl (x2 ) = 0, 302000 · 10−3 mentre la vera differenza è: x1 − x2 = 0, 302584 · 10−3 per cui l’errore relativo commesso è circa 0, 2 · 10−2 = 0, 2%. Le ultime cifre della mantissa sono alterate perché, dopo aver eseguito fl (x1 ) − fl (x2 ) = 0, 000302, la rappresentazione normalizzata ha introdotto tre zeri alla fine della mantissa. Esempio (2). Consideriamo due numeri ancora più vicini (B = 10, t = 6): x1 = 0, 147554326 , x2 = 0, 147551742 fl (x1 ) = 0, 147554 , fl (x2 ) = 0, 147552 Allora: Sul calcolatore la differenza è: fl fl (x1 ) − fl (x2 ) = 0, 2 · 10−5 1.2 - Numeri finiti 13 = $ CC BY: \ Calcolo numerico L-A mentre la vera differenza è: x1 − x2 = 0, 2584 · 10−5 per cui l’errore relativo commesso è circa 0, 2 · 10−0 = 20%. L’operazione di sottrazione in sé non introduce alcuna perdita di precisione, ma può amplificare gli errori presenti negli operandi. Esempio (3). Consideriamo il calcolo del risultato dell’equazione (B = 10, t = 4): x2 − 6, 433x + 0, 009474 = 0 6, 443 − x2 = q 2 (6, 433) − 4 · 0, 009474 2 = x = 0, 0014731 fl (x) = 0, 2000 · 10−2 esatto numero finito L’errore relativo che si commette è: x − fl (x) ' 0, 357 = 36% x Si verifica che: √ b − ∆ = 0, 6433 · 101 − 0, 6429 · 101 b − fl (b) 6, 433 − fl (6, 433) = =0 errore in b b 6, 433 √ ∆ − fl √∆ √ 6, 4300538 − fl (6, 429) ' 0, 16 · 10−3 √ = errore in ∆ 6, 4300538 ∆ Pur partendo da dati affetti da un piccolo errore relativo di arrotondamento, alla fine l’errore è notevole. Lemma 1.2.2. Per equazioni di secondo grado del tipo ax2 + bx + c = 0, in tutti i casi in cui b2 ' 4ac bisogna utilizzare maggiore precisione per contenere l’errore. 1.3 Condizionamento di un problema matematico Definizione 4 (Problema numerico). Descrizione chiara e non ambigua di una connessione funzionale tra i dati x e i risultati desiderati y. Definizione 5 (Algoritmo). Sequenza di istruzioni che devono essere eseguite per ottenere, in un numero finito di passi, da un vettore dati x il corrispondente output ψ̃ che non è necessariamente uguale a y. Ad ogni problema numerico è possibile associare più algoritmi. Definizione 6 (Perturbazione nei dati). Una perturbazione nei dati è rappresentata da x̃ = x + δx. Il problema f propaga gli errori nei dati (in assenza di errori nei calcoli e in maniera indipendente dal procedimento di calcolo) come segue: x → f (x) = y x̃ → f (x̃) = ỹ → ψ (x̃) = ψ̃ Il condizionamento di un problema è il confronto tra la risposta analitica f (x) e la risposta f (x̃) = ỹ ottenuta a partire da dati perturbati. Il problema è ben condizionato quando a piccole perturbazioni relative su x corrispondono perturbazioni relative su f (x) dello stesso ordine di grandezza. Se ciò non si verifica, il problema è mal condizionato. Lemma 1.3.1. Uno stesso problema può essere mal condizionato per certi dati, ma non per altri. 14 1.3 - Condizionamento di un problema matematico = $ CC BY: \ Calcolo numerico L-A Definizione 7 (Indice di condizionamento). L’indice di condizionamento di un problema numerico è un valore K tale che: f (x) − f (x̃) x − x̃ ≤K· f (x) x Il condizionamento è legato al problema numerico e non ha legami con gli errori di arrotondamento, né con l’algoritmo utilizzato. Esempio: valutazione di una funzione f in un punto x (f differenziabile). f (x + δx) − f (x) ' f (x + δx) − f (x) ' f (x) f (x + δx) − f (x) ' f (x) f 0 (x) · δx f 0 (x) · δx f (x) 0 f (x) · x δx · f (x) x | {z } K Supponiamo f (x) = tg (x), che diverge per x = π2 . Per valori di x vicini a multipli di π2 la funzione f (x) amplifica gli errori sul dato x, quindi il problema risulta mal condizionato. Infatti: x = 1, 57079 ⇒ tg (1, 57079) = 1, 58058 · 105 x 1 + tg 2 x 0 2 f (x) = 1 + tg (x) ⇒ K= = 2, 48275 · 105 tg x δx = |1, 57079 − 1, 57078| ' 6, 37 · 10−6 f (x + δx) − f (x) ' 1, 58 f (x) Esempio: problema mal condizionato (Wilkinson 1963). Calcolare le radici del polinomio p(x): p(x) = (x − 1)(x − 2) · . . . · (x − 19)(x − 20) = x20 − 210x19 + . . . Al calcolatore: B = 2, t = 30 (servono per il calcolo degli zeri, che sono {1, 2, 3, . . . , 19, 20}). Per memorizzare i coefficienti del polinomio è necessario arrotondare alla trentesima cifra significativa binaria. Perturbiamo ora il coefficiente di x19 : −210 → −210 + 2−23 per cui il polinomio diventa p(x) + 2−23 x19 = 0. Le radici sono cambiate: 1, 00000 0000 2, 00000 0000 3, 00000 0000 4, 00000 0000 4, 99999 9928 6, 00000 6944 8, 00726 7603 8, 91725 0249 20, 84690 8101 10, 09526 6145 ± i0, 64350 0904 11, 79363 3881 ± i1, 65232 9728 13, 99235 8137 ± i2, 51883 0070 16, 73073 7466 ± i2, 81262 4894 19, 50243 9400 ± i1, 94033 0347 1.3 - Condizionamento di un problema matematico 15 = $ CC BY: \ Calcolo numerico L-A Esempio: problema mal condizionato. Risolvere il sistema lineare: x+y =2 x=1 il cui risultato è 1001x + 1000y = 2001 y=1 Perturbiamo ora il coefficiente di x dell’1%: 1 x+y =2 1+ 100 1001x + 1000y = 2001 ⇒ x = − 1 = −0, 1 9 1901 y= = 2, 112 900 cioè l’errore commesso è pari al 110%. 1.3.1 Stabilità di un algoritmo La stabilità di un algoritmo è il confronto tra la risposta fornita dall’algoritmo ψ (x̃) e f (x̃) = ỹ: valuta, quindi, la reazione fornita dall’algoritmo all’introduzione di perturbazioni nei dati iniziali. Il valore calcolato con f può essere affetto da: errore inerente: è generato dalla rappresentazione dei dati come numeri finiti: EIN = f (x̃) − f (x) f (x) errore algoritmico: è generato dal calcolo di ψ (x̃) e dovuto alle operazioni in aritmetica finita: ψ (x̃) − f (x̃) EALG = f (x̃) L’accuratezza della soluzione, cioè lo scostamento rispetto al valore esatto che ci si attende, dipende sia dal condizionamento del problema, sia dalla stabilità algoritmica: ET OT = ψ (x̃) − f (x) errore totale f (x) EALG (1 + EIN ) + EIN ' EALG + EIN = La stabilità dell’algoritmo non garantisce che il risultato calcolato sia accurato. Per un problema mal condizionato, la distinzione tra algoritmo stabile e instabile non è significativa perché l’errore totale è dominato dall’errore inerente. Per questo motivo, è opportuna una riformulazione. La bassa accuratezza dei risultati di un processo numerico è imputabile a: alto condizionamento intrinseco del problema; instabilità dell’algoritmo. Un algoritmo è stabile se: EALG ≺ g(n) · eps dove: n è il numero di operazioni effettuate; c · n, c > 0 crescita dell’errore lineare g(n) = cn , c > 1 crescita dell’errore esponenziale Quindi c’è stabilità se g(n) è lineare, cioè l’errore algoritmico è dello stesso ordine di grandezza della precisione di macchina. 16 1.3 - Condizionamento di un problema matematico = $ CC BY: Esempio (1). \ Calcolo numerico L-A (1 + x) − 1 con l’algoritmo: x x = 10−15 ; y = (1 + x) − 1 /x Valutare y = Con l’algoritmo si ottiene y = 1, 11022302462516 invece di y = 1. Il problema è ben condizionato: 0 f (x) · x =0 perché f 0 (x) = 0 ∀x 6= 0 K= f (x) Verifichiamo se l’algoritmo è stabile: fl (1 + x) = 1 + fl (x) · (1 + ε) fl (1 + x) − 1 = fl (1 + x) − 1 · (1 + ε) ' x(1 + 2ε) + ε fl (1+x)−1 fl (x) | 1 · (1 + ε) − 1 1 {z è il valore esatto di = x(1 + 2ε) + ε ε · (1 + ε) − 1 ' 2ε + x(1 + ε) x } f (x) Se x è piccolo, l’errore su y può essere grande. 1 1 1 Esempio (2). La successione 1 , , , . . . , n , . . . può essere generata con le se3 9 3 guenti relazioni ricorrenti: 10 pn = pn−1 − pn−2 3 (1.3.1) p =1 0 1 p1 = 3 ( 1 pn−1 3 p0 = 1 pn = (1.3.2) Bisogna generare i primi 100 termini della successione. La relazione 1.3.1 (figure 1.5(a) e 1.5(b)) diverge! Algoritmo instabile (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx xxx p1(1) = 1; p1(2) = 1/3; for i=2:100 p1(i+1) = 10/3 * p1(i)-p1(i-1); end p1z=p1(1:35); plot(1:35,p1z),title(Successione generata con algoritmo instabile - ZOOM),grid figure plot(1:101,p1),title(Successione generata con algoritmo instabile),grid Analizziamo la propagazione dell’errore della 1.3.1: p̃0 = p0 + ε , 10 p̃2 = p̃1 − p̃0 = 3 10 p̃3 = p̃2 − p̃1 = 3 10 p̃4 = p̃3 − p̃2 = 3 ... p̃1 = p1 + ε 10 7 (p1 + ε) − (p0 + ε) = p2 + ε 3 3 10 7 61 (p2 + ε) − (p1 + ε) = p3 + ε 3 3 9 10 61 583 (p3 + ε) − (p2 + ε) = p4 + ε 3 9 27 1.3 - Condizionamento di un problema matematico 17 = $ CC BY: \ Calcolo numerico L-A Al contrario, la propagazione dell’errore della 1.3.1 (figure 1.5(c) e 1.5(d)) si sviluppa come segue: p̃0 = p0 + ε 1 p̃1 = p̃0 = 3 1 p̃2 = p̃1 = 3 ... 1 1 (p0 + ε) = p1 + ε 3 3 1 1 1 (p1 + ε) = p2 + ε 3 3 9 Algoritmo stabile (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx xxx p2(1) = 1; for i=1:100 p2(i+1) = 1/3 * p2(i); end p2z=p2(1:35); plot(1:35,p2z),title(Successione generata con algoritmo instabile - ZOOM),grid figure plot(1:101,p2),title(Successione generata con algoritmo instabile),grid (a) Successione 1.3.1 (b) Successione 1.3.1 (zoom da p0 a p35 ) (c) Successione 1.3.1 (d) Successione 1.3.1 (zoom da p0 a p35 ) Figura 1.5: Successioni ottenute con algoritmi stabili o instabili Z 1 Bisogna calcolare En = xn ex−1 dx con n = 1, 2, . . . . 0 Z 1 h i1 Z 1 nxn−1 ex−1 dx. Integrando per parti: xn ex−1 dx = xn ex−1 − Esempio (3). 0 0 0 Ricorsivamente: En = 1 − n · En−1 , con n = 2, 3, . . . e valore iniziale E1 = 18 1 . e 1.3 - Condizionamento di un problema matematico = $ CC BY: \ Calcolo numerico L-A Al calcolatore, con B = 10 e t = 6, si ottiene: E1 ' 0, 367879 E6 ' 0, 127120 E2 ' 0, 264242 E7 ' 0, 110160 E3 ' 0, 207274 E8 ' 0, 118720 E 4 ' 0, 170904 E9 ' −0, 0684800 E5 ' 0, 145480 ma la funzione è positiva in (0 , 1) L’errore di arrotondamento nel calcolo di E1 è: 1 , Ē1 = E1 + δ con δ ' 4, 412 · 10−7 E1 = e Nel calcolo di E2 tale errore è moltiplicato per −2, nel calcolo di E3 è moltiplicato per −3 e cosı̀ via. In conclusione: Ēn = 1 − n · Ēn−1 = En + (−1)n−1 · n! · δ dove 9! · 4, 412 · 10−7 ' 1, 1601. Ne consegue che l’algoritmo scelto è instabile. Calcoliamo ora utilizzando un algoritmo stabile: En−1 = 1 − En n , Per trovare un valore iniziale: Z 1 Z n x−1 En = x e dx ≤ 0 n→+∞ En −→ 0 0 1 n = . . . , 3, 2 xn+1 x = n+1 n 1 = 0 1 n+1 allora approssimiamo E20 = 0 Al calcolatore: Per E20 1.3.2 E1 4 ' 0, 0627322 E2 0 ' 0, 0 E1 3 ' 0, 0669477 E 9 ' 0, 0500000 1 E1 2 ' 0, 0717733 E1 8 ' 0, 0500000 E1 1 ' 0, 0773523 E 7 ' 0, 0527778 1 E1 0 ' 0, 0838771 E 6 ' 0, 0557190 1 E9 ' 0, 0916123 E1 5 ' 0, 0590176 1 1 l’errore iniziale è circa , mentre per E19 è moltiplicato per e cosı̀ via. 21 20 Bontà di un algoritmo Un algoritmo è valido qualitativamente quando ha le seguenti caratteristiche: 1. generalità e robustezza: si applica a un qualsiasi insieme di dati di un certo dominio; 2. semplicità di verifica delle ipotesi di applicazione; 3. stabilità numerica; 4. richiesta di risorse come numero di operazioni e quantità di memoria richiesta. Definizione 8 (Costo (complessità) computazionale di un algoritmo). Numero di operazioni aritmetiche floating point che sono richieste per la sua esecuzione. Una operazione elementare è misurabile come 1 flop (Floating-point operation). Definizione 9 (Tempo di CPU). Tempo impiegato dall’unità centrale per eseguire un determinato programma. L’obiettivo è ottimizzare gli algoritmi per ridurre il numero di operazioni computazionali e, quindi, i tempi di esecuzione. Alcuni esempi di ottimizzazione sono: il metodo di Gauss invece del metodo di Cramer nella risoluzione di sistemi lineari; il metodo di Ruffini-Horner per calcolare il valore di un polinomio in un punto, dimezzando il numero di moltiplicazioni necessarie. 1.3 - Condizionamento di un problema matematico 19 CAPITOLO 2 Radici reali di equazioni e sistemi di equazioni non lineari 2.1 Soluzione di equazioni non lineari Bisogna determinare i valori di x per cui f (x) = 0. Le radici di un’equazione non lineare non possono, in generale, essere espresse in forma chiusa. Anche quando questo è possibile, l’espressione corrispondente può risultare molto complessa. Allora si ricorre a metodi numerici iterativi approssimanti. Il problema matematico consiste nel determinare x∗ tale che f (x∗ ) = 0. Il problema perturbato, in aritmetica finita, consiste nel determinare xe = x∗ +h tale che f (x∗ +h) = 0, dove: fe = f + ε · g con ε · g la perturbazione sui dati, mentre h è la perturbazione sui risultati. Allora: fe (x∗ + h) = 0 f (x∗ + h) + ε · g(x∗ + h) = 0 che, sviluppato con Taylor: 1 2 00 1 2 00 ∗ 0 ∗ ∗ 0 ∗ f (x ) +h · f (x ) + h · f (ξ) + ε g(x ) + h · g (x ) + h · g (η) = 0 | {z } 2 2 0 Il numero di condizionamento del problema è: h ' −ε g(x∗ ) f 0 (x∗ ) Se f 0 (x∗ ) è molto piccolo, allora il problema è malcondizionato. Se f 0 (x∗ ) non è troppo piccolo, allora il problema è ben condizionato e fe (x) = 0 ha una radice che non differisce troppo da x∗ . Supponiamo ora f (x) continua nell’intervallo [a0 , b0 ] e che f (a0 ) · f (b0 ) < 0. Allora esiste almeno una soluzione x∗ di f (x) = 0 appartenente all’intervallo. Alcune procedure per il calcolo delle radici convergono sia a singolarità, sia a radici. Questa situazione deve essere prevenuta. L’idea di base sta nell’individuare un intervallo contenente una radice (ad esempio discretizzando l’intervallo iniziale) effettuando poi una serie di iterazioni fino a convergere ad una soluzione. Alcuni criteri di arresto possono essere: 1. grandezza delle variazioni delle approssimazioni della radice: xi+1 − xi < ε1 tolleranza su x xi+1 − xi xi , xi+1 6= 0 < ε2 min xi , xi+1 20 2 - Radici reali di equazioni e sistemi di equazioni non lineari = $ CC BY: \ Calcolo numerico L-A 2. grandezza delle variazioni della funzione: f (xi ) < ε3 tolleranza su f (x) 3. numero massimo di iterazioni desiderate. 2.1.1 Metodo di bisezione Algoritmo. 1. Si individua un intervallo a0 , b0 contenente la radice e tale che f (a0 ) · f (b0 ) < 0. 2. Si calcola il punto medio dell’intervallo: xm = 3. a 0 + b0 . 2 Se f (a0 ) · f (xm ) < 0, allora si prosegue con l’intervallo a0 , xm . Se f (b0 ) · f (xm ) < 0, allora si prosegue con l’intervallo xm , b0 . Se f (xm ) = 0, allora xm è la radice cercata. Metodo di bisezione (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx a = 0.5; b = 2; fa = funzione(a); fb = funzione(b); tolerance = 0.0000001; while abs(b-a) >= tolerance mid = (a+b)/2; fmid = funzione(mid); if fa*fmid < 0 b = mid; fb = fmid; else a = mid; fa = fmid; endif end radice = (b+a)/2 xxx % PUNTO DA IMPOSTARE % PUNTO DA IMPOSTARE % TOLLERANZA ORIZZONTALE DA IMPOSTARE Figura 2.1: Metodo di bisezione Dopo n passi si ottiene un intervallo an , bn di ampiezza: bn − an = bn−1 − an−1 b0 − a0 = ··· = 2 2n 2.1 - Soluzione di equazioni non lineari 21 = $ CC BY: \ Calcolo numerico L-A x∗ = xm ± en+1 en+1 < bn − an = b0 − a0 2 2n+1 È sempre convergente, ma la convergenza è lenta. Osservazioni per migliorare l’algoritmo. ? Sostituire f (a) · f (xm ) < 0 con sign (f (a)) = sign (f (xm )). Organizzare la formula come una piccola correzione ad una buona approssimazione: a+b a + (b − a) a+b sostituire con . Infatti, in aritmetica dei numeri finiti può 2 2 2 portare ad un risultato errato. Il test di arresto bk − ak < ε potrebbe non essere mai soddisfatto. Sostituire con: a − b < ε + eps · max |a| , |b| Verificare se f (0) = 0 quando a < 0 e b < 0. Nel caso di un numero dispari di radici, il metodo di bisezione determina un’approssimazione ad una sola di esse. 2.1.2 Metodo di Regula Falsi Il metodo nasce dalla seguente idea: si parte da un’approssimazione iniziale x0 ; ad ogni passo si linearizza il problema localmente, con una retta di pendenza kn passante per xn , f (xn ) ; come nuova approssimazione della radice si prende lo zero dell’equazione lineare: f (xn ) + kn (x − xn ) = 0 con n = 0, 1, 2, . . . ⇒ xn+1 = xn − f (xn ) kn Le direzioni k possono essere scelte in vari modi. Il metodo di Regula la Falsi approssima funzione nell’intervallo x0 , xn con la retta per i punti x0 , f (x0 ) e xn , f (xn ) , quindi mantiene fissa la coordinata su x0 per tutte le rette approssimanti (figura 2.2): kn = Le rette si determinano con yn − y0 xn − x0 x − xn y − yn = e tagliano l’asse x nel punto di ascissa: x0 − xn y0 − yn xn+1 = xn − f (xn ) · 22 xn − x0 yn − y0 2.1 - Soluzione di equazioni non lineari = $ CC BY: \ Calcolo numerico L-A Figura 2.2: Metodo di Regula Falsi Algoritmo. 1. Si scelgono due punti x1 e x2 tali che in essi la funzione assuma valori discorsi. 2. Si costruisce la retta passante per x1 e x2 : x2 − x f (x2 ) − y = x2 − x1 f (x2 ) − f (x1 ) 3. Si ricava x3 come intersezione della retta con l’asse x: x3 = x2 − f (x2 ) (x2 − x1 ) f (x2 ) − f (x1 ) 4. Si valuta il segno di f (x3 ). Si sostituisce x3 al punto, tra x1 e x2 , nel quale la funzione è concorde. Metodo di Regula Falsi (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx xxx x1 = 2; % PUNTO DA IMPOSTARE x2 = 0.5; % PUNTO DA IMPOSTARE tolerance1 = 1; % TOLLERANZA ORIZZONTALE DA IMPOSTARE tolerance2 = 0.0000001; % TOLLERANZA ORIZZONTALE DA IMPOSTARE while abs(x2-x1) >= tolerance1 || abs(funzione(x3)) >= tolerance2 x3 = x2 - funzione(x2) * (x2-x1)/(funzione(x2)-funzione(x1)); if sign(funzione(x3)) = sign(funzione(x1)) x2 = x3; else x1 = x3; endif end radice = x3 2.1.3 Metodo delle secanti Il metodo delle secanti è simile a quello di Regula Falsi, ma ogni volta si procede con gli ultimi punti trovati in successione, senza tener conto del valore positivo o negativo della funzione (figura 2.3). La funzione è approssimatanell’intervallo xn−1 , xn con la retta passante per i punti xn−1 , f (xn−1 ) e xn , f (xn ) : kn = 2.1 - Soluzione di equazioni non lineari yn − yn−1 xn − xn−1 23 = $ CC BY: \ Calcolo numerico L-A Figura 2.3: Metodo delle secanti Le rette tagliano l’asse x nel punto di ascissa: xn+1 = xn − f (xn ) · xn − xn−1 yn − yn−1 Il metodo delle secanti può essere più veloce, ma non converge sempre. Non c’è più la certezza di avere sempre il punto cercato all’interno dell’intervallo. In particolare, il metodo è catastrofico se i punti sono vicini ad un punto nel quale la derivata della funzione si annulla (massimo o minimo relativo). 2.1.4 Metodo di Newton (delle tangenti) Partendo da una stima iniziale x0 della soluzione, si genera una successione {xn } approssi- mando ad ogni passo la curva f (x) mediante la retta tangente ad f nel punto xn , f (xn ) (figura 2.4). kn = f 0 (xn ) Algoritmo. Si calcola xn+1 come intersezione della tangente con l’asse x: xx+1 = xn − f (xn ) f 0 (xn ) Figura 2.4: Metodo di Newton (delle tangenti) L’idea nasce dalla serie di Taylor, dove si conosce la funzione e la sua derivata prima: f (xn+1 ) = f (xn ) + (xn+1 − xn ) · f 0 (xn ) + . . . Poiché cerchiamo f (x) = 0, si pone f (xn+1 ) = 0 riscrivendo: 0 = f (xn ) + (xn+1 − xn ) · f 0 (xn ) 24 ⇒ xx+1 ' xn − f (xn ) f 0 (xn ) 2.1 - Soluzione di equazioni non lineari = $ CC BY: \ Calcolo numerico L-A Come si nota, il metodo è inefficace quando si calcola la derivata su xn quando corrisponde a un massimo o minimo relativo (punto con derivata nulla). 2.1.5 Ordine di convergenza {xi } è una successione convergente ad α, inoltre α 6= xi per ogni valore di i. Definizione 10 (Ordine di convergenza). Una successione {xi } ha ordine di convergenza p se esiste un numero reale p ≥ 1 tale che: xi+1 − α p = γ lim i→∞ xi − α Lemma 2.1.1 (Fattore di convergenza). Il fattore di convergenza γ vale: 0 < γ ≤ 1, se p = 1 γ > 0, se p > 1 Per il metodo di Newton si può scrivere: en = xn − α xn ha k decimali corretti 1 en ≤ · 10−k 2 en+1 ' γ 1 · 10−k 2 p = γ · 10−pk 2 xn+1 ha pk decimali corretti Il numero di decimali corretti tende ad essere moltiplicato per p ad ogni passo solo per n → ∞. Per valori finiti di n, e soprattutto nei primi passi, l’aumento di cifre corrette dipende anche dalla costante: p γn : en+1 = γn · en con lim γn = γ n→∞ Nell’ipotesi in cui α sia una radice semplice: e f 0 (α) 6= 0 f (α) = 0 Ponendo ek = xk − x∗ : f (x∗ ) = 0 = f (xk ) + (x∗ − xk ) · f 0 (xk ) + (x∗ − xk )2 00 · f (ξ) 2 e, dividendo per f 0 (xk ), si ottiene una riscrittura del metodo di Newton al II ordine: (x∗ − xk )2 00 (x∗ − xk )2 00 · f (ξ) · f (ξ) f (xk ) ∗ ∗ 2 2 + x − x + = x − x + =0 k k f 0 (xk ) f 0 (xk ) f 0 (xk ) ek+1 = ek 2 f 00 (ξ) · 2 f 0 (xk ) ⇒ ek+1 xk →x∗ 1 f 00 (x∗ ) −→ · ek 2 2 f 0 (x∗ ) La convergenza è: lineare se p = 1 e 0 < γ < 1; sublineare se p = 1 e γ = 1; superlineare se 1 < p < 2; quadratica se p = 2; cubica se p = 3. 2.1 - Soluzione di equazioni non lineari 25 = $ CC BY: \ Calcolo numerico L-A Convergenza dei metodi numerici per equazioni non lineari Con α radice semplice: il metodo di bisezione ha convergenza lineare; il metodo di Regula Falsi ha convergenza superlineare; il metodo delle secanti ha convergenza superlineare (p = 1, 618); il metodo di Newton ha convergenza quadratica. Ciò significa che il metodo di Newton è il più efficiente per giungere a soluzione, tuttavia bisogna tenere conto dell’inefficacia nei pressi dei punti di massimo e minimo relativo. Teorema 3 (di convergenza globale). Sia f (x) ∈ C 2 a , b , con a , b intervallo chiuso e limitato. di Newton converge all’unica soluzione α in a , b , per ogni scelta Il metodo di x0 entro a , b , se: 1. f (a) · f (b) < 0; 2. f 0 (x) 6= 0 ∀x ∈ a , b ; 3. f 00 (x) > 0 oppure f 00 (x) < 0 ∀x ∈ a , b ; f (b) f (a) 4. 0 < b − a, 0 < b − a. f (a) f (b) Esempio (1). La parabola x2 − 4x + 2 valutata in [−1 , 2] ha una radice in x = 0, 585786437. Con differenti valori di tolleranza si sono ottenuti i risultati della tabella 2.1. Toll. 10−1 10−2 10−3 10−7 Bisezione Radice (iter.) 0,54688 (8) 2.5(a) 0,58496 (12) 2.5(b) 0,58606 (15) 0,58579 (28) Regula Falsi Radice (iter.) 0,60261 (5) 2.5(c) 0,58797 (7) 2.5(d) 0,58607 (9) 0,58579 (18) Secanti Radice (iter.) 0,56876 (5) 0,58657 (6) 0,58579 (7) 0,58579 (8) Tabella 2.1: Confronto tra i risultati del calcolo della radice di una parabola x2 − 4x + 2 Esempio (2). Il logaritmo log x valutato in [0, 5 , 2] ha una radice in x = 1. Con differenti valori di tolleranza si sono ottenuti i risultati della tabella 2.2. Toll. 10−1 10−2 10−3 10−7 Bisezione Radice (iter.) 1,0156 (7) 2.6(a) 1,0010 (11) 2.6(b) 0,99988 (14) 1,0000 (27) Regula Falsi Radice (iter.) 1,0674 (2) 1,0052 (4) 2.6(c) 1,0004 (6) 2.6(d) 1,0000 (13) Secanti Radice (iter.) 1,0130 (3) 1,0007 (4) 1,0007 (4) 1,0000 (6) Tabella 2.2: Confronto tra i risultati del calcolo della radice di un logaritmo log x 26 2.1 - Soluzione di equazioni non lineari = $ CC BY: \ Calcolo numerico L-A (a) Bisezione (tolleranza 10−1 ) (b) Bisezione (tolleranza 10−2 ) (c) Regula Falsi (tolleranza 10−1 ) (d) Regula Falsi (tolleranza 10−2 ) Figura 2.5: Risultati del metodo di calcolo delle radici di una parabola (a) Bisezione (tolleranza 10−1 ) (b) Bisezione (tolleranza 10−2 ) (c) Regula Falsi (tolleranza 10−2 ) (d) Regula Falsi (tolleranza 10−3 ) Figura 2.6: Risultati del metodo di calcolo delle radici di una logaritmo 2.1 - Soluzione di equazioni non lineari 27 = $ CC BY: 2.2 \ Calcolo numerico L-A Soluzione di sistemi di equazioni non lineari f1 (x1 , x2 , . . . , xn ) = 0 f2 (x1 , x2 , . . . , xn ) = 0 ... fm (x1 , x2 , . . . , xn ) = 0 Data F : Rn → Rm , calcolare x ∈ Rn tale che F (x) = 0. T x = (x1 , , x2 , . . . , xn ) , f : Rn → R è continuamente differenziabile se Il gradiente di f in x è dato da: F = (f1 , , f2 , . . . , fm ) T ∂f esiste ed è continua per i = 1, 2, . . . , n. ∂xi ∂f (x) ∂x1 ∂f (x) ∂x2 .. . ∇f (x) = ∂f (x) ∂xn F : Rn → Rm è una funzione a valori vettoriali: x1 f1 (x) x2 f2 (x) F : . → .. .. . fm (x) xn La derivata di F in x (matrice Jacobiana) è la matrice: ∂f1 ∂f1 ... ∂x ∂x2 x=xk 1 x=xk ∂f ∂f2 2 ... ∂x ∂x 1 x=xk 2 x=xk J (xk ) = .. .. .. . . . ∂fm ∂fm ... ∂x1 ∂x2 x=xk x=xk ∂f1 ∂xn x=xk ∂f2 ∂xn x=xk .. . ∂fm ∂xn x=xk Il gradiente di F in x è la matrice ∇F (x) = J (x). 2.2.1 Metodo di Newton-Raphson Algoritmo. 1. Dato x0 ∈ Rn e F , per ogni iterazione di k si valuta J (xk ). 2. Si risolve il sistema lineare J (xk ) · s k = −F (xk ). 3. Si pone xk+1 = xk + sk . Il metodo ha convergenza locale quadratica se x0 è sufficientemente vicino alla soluzione. La valutazione dello Jacobiano richiede di conoscere (o poter valutare) n2 derivate parziali. Esistono alcune varianti dell’algoritmo per migliorarne l’efficienza. 1) Approssimazione con rapporti incrementali: ∂fj fj (xk + ei sij ) − fj (xk ) ' (J k )ij = ∂xi x=xk sij 28 2.2 - Soluzione di sistemi di equazioni non lineari = $ CC BY: \ Calcolo numerico L-A ei : i-esimo vettore della base canonica Rn ; sij : incrementi scelti ad ogni passo k. Il metodo che si ottiene è l’analogo n-dimensionale di quello delle secanti. 2) Metodo della corda: si utilizza lo Jacobiano, oppure una sua approssimazione J (x0 ) o A (x0 ), per tutte le iterazioni k. Si potrebbe poi fattorizzare J (x0 ) = L · U e utilizzare i medesimi L e U per ogni iterazione. 3) Metodo di Shamanskii: si valuta lo Jacobiano ogni m iterazioni, e poi lo si utilizza per le m iterazioni successive: J k+1 = J k con l = 1, . . . , m Giunti a xk+m+1 si rivaluta lo Jacobiano. 4) Metodo di tipo secanti: si approssima J (x+ ) con una quantità A+ aggiornata ad ogni iterazione. L’approssimazione monodimensionale a+ di f 0 (x) è: a+ = f (x+ ) − f (xc ) x+ − xc Analogamente, con l’equazione delle secanti: A+ (x+ − xc ) = F (x+ ) − F (xc ) che è ottenuta linearizzando il problema nell’intorno di x+ . 5) Aggiornamento di Broyden: A c (matrice n × n) e x c sono le approssimazioni correnti dello Jacobiano e della soluzione. Ponendo sc = x+ − xc diventa: A c · s + = −F (xc ) Ac → A+ Per calcolare A+ bisogna considerare che la formula cercata deve soddisfare l’equazione delle secanti, per cui: F (x+ ) − F (xc ) − A c s c · s Tc A+ = Ac + s Tc · s c Algoritmo. (con aggiornamento di Broyden) 1. Dato x 0 ∈ Rn e F , per ogni iterazione di k si sceglie una matrice iniziale A 0 (ad esempio, A 0 = J (x0 ) oppure A 0 = I ). 2. Per k = 0, 1, 2, . . . si risolve il sistema lineare: A k · s k = −F (xk ) e si pone xk+1 = xk + sk . 3. Si aggiorna: h A k+1 = A k + i F (k + 1) − F (xk ) − A k s k · s Tk 2.2 - Soluzione di sistemi di equazioni non lineari s Tk · s k 29 = $ CC BY: 2.2.2 \ Calcolo numerico L-A Minimizzazione di una funzione Data f : Rn → R, differenziabile continuamente due volte, bisogna trovare x ∈ Rn tale che in esso f assume valore minimo. x = (x1 , x2 , . . . , xn )T Se f ∈ C 1 (Rn ), allora i punti di stazionarietà locale (massimi, minimi, sella) sono soluzione del seguente sistema lineare: ∇f (x) = 0 quindi la determinazione può avvenire risolvendo il sistema. Per verificare se un punto è un massimo, un minimo oppure un punto di sella, in genere bisogna esaminare la matrice hessiana H (x) = ∇2 f (x). ∂ 2 f (x) H(x) ij = , ∂xi · ∂xj i, j = 1, . . . , n Si può applicare il metodo di Newton anche per risolvere ∇f (x) = 0. Algoritmo. 1. Dato x0 ∈ Rn e f , per ogni iterazione di k si valuta ∇2 f (xk ). 2. Si risolve il sistema lineare: ∇2 f (xk ) · sk = −∇f (xk ) 3. Si pone xk+1 = xk + sk . sk definisce una direzione di discesa da xk a xk+1 . 30 2.2 - Soluzione di sistemi di equazioni non lineari CAPITOLO 3 Sistemi lineari Esiste un vettore x che verifichi tutte le equazioni lineari del seguente sistema, simultaneamente? a11 x1 + a12 x2 + a13 x3 + · · · + a1n xn = b1 a21 x1 + a22 x2 + a23 x3 + · · · + a2n xn = b2 a31 x1 + a32 x2 + a33 x3 + · · · + a3n xn = b3 .. . am1 x1 + am2 x2 + am3 x3 + · · · + amn xn = bm Il sistema è compatibile quando ammette almeno una soluzione, viceversa è incompatibile. Avendo, come sopra, m equazioni e n incognite si classifica: sistema normale quando m = n; sistema indeterminato quando m < n; sistema sovradeterminato quando m > n. Nei sistemi indeterminati non ci sono sufficienti informazioni per determinare un unico valore per tutte le incognite: il rango della matrice dei coefficienti è minore del numero di incognite. Nei sistemi sovradeterminati ci sono più equazioni che incognite: di solito si usa il sistema dei minimi quadrati per la soluzione. In generale si applica il teorema di Rouché-Capelli. Teorema 4 (di Rouché-Capelli). Il sistema lineare A x = b ammette soluzione se e solo se la matrice dei coefficienti A e la matrice completa [A b ] hanno lo stesso rango: r = Rank (A ) = Rank ([A b ]) Se r = n, la soluzione è unica. Se r < n, il numero di soluzioni è infinito: r variabili incognite possono essere espresse in termini di n − r variabili con valori arbitrari. Se Rank (A ) 6= Rank ([A b ]), allora il sistema non ammette soluzioni. Teorema 5. Il sistema lineare normale (cioè con m = n) A x = b ammette una sola soluzione se e solo se A è non singolare. Corollario 6. Se il sistema è omogeneo (cioè b = 0 ) e A è non singolare, allora esiste solo la soluzione nulla x = 0 . La matrice A è non singolare se soddisfa una delle seguenti condizioni: 1. det (A ) 6= 0; 3 - Sistemi lineari 31 = $ CC BY: \ Calcolo numerico L-A 2. esiste la matrice inversa A −1 di A ; 3. Rank (A ) = n. Se A è non singolare allora si può risolvere1 : A −1 A x = A −1 b | {z } ⇒ x = A −1 b I 3.1 Condizionamento di un sistema lineare ∆A è la matrice delle perturbazioni. ∆b e ∆x sono i vettori delle perturbazioni. Sono possibili le seguenti combinazioni: A (x + ∆x ) = b + ∆b (perturbazione del termine noto); (A + ∆A ) (x + ∆x ) = b (perturbazione della matrice dei coefficienti); (A + ∆A ) (x + ∆x ) = b + ∆b . 3.1.1 Perturbazione del termine noto Dalla forma perturbata si sottrae la forma standard del sistema, ottenendo: A ∆x = ∆b ⇒ ∆x = A −1 ∆b ∆x = A −1 ∆b ≤ A −1 · ∆b 1 1 b = A x ≤ A · x ≤ A · ⇒ x b Combinando risulta: ∆x x | {z } ≤ err. rel. nella soluzione −1 A · A | {z } · indice di condizionamento ∆b b | {z } err. rel. nei dati Definizione 11 (Indice di condizionamento). L’indice (o numero) di condizionamento (K(A ), µ(A ) oppure cond (A )) è il fattore di amplificazione delle perturbazioni relative introdotte in b . 3.1.2 Perturbazione della matrice dei coefficienti A è non singolare, quindi anche A + ∆A è non singolare. A x = (A + ∆A ) (x + ∆x ) = b 0 = A ∆x + ∆A (x + ∆x ) ⇒ ∆x = −A −1 ∆A (x + ∆x ) ⇒ ∆x = A −1 ∆A (x + ∆x ) ≤ ∆x −1 ∆A ⇒ x + ∆x ≤ | A {z· A } · A −1 A · ∆A · x + ∆x K(A ) Se K(A ) è piccolo (ordine np con p = 0, 1, 2, 3), allora il problema (cioè la matrice) è ben condizionata. Se K(A ) è grande (ordine 10n ), allora il problema è mal condizionato2 1 Il metodo della matrice inversa è meno efficiente e meno accurato. esempio, la matrice di Hilbert. 2 Ad 32 3.1 - Condizionamento di un sistema lineare 3.1.3 = $ CC BY: \ Calcolo numerico L-A Proprietà dell’indice di condizionamento Definizione 12 (Indice di condizionamento). L’indice di condizionamento è una misura di quanto una matrice è vicina ad essere singolare. K(A ) grande significa che A è quasi singolare. Proprietà 3.1.1. K(A ) ≥ 1. Dimostrazione. A · A −1 ≥ A A −1 = I = 1. Proprietà 3.1.2. K2 (A ) = 1 ⇔ A = αQ . La matrice Q è unitaria e ortogonale (Q T = Q −1 ). q p Dimostrazione. Q 2 = ρ(Q T · Q ) = ρ(I ) = 1. λM AX −1 . Proprietà 3.1.3. Se A è simmetrica, allora K2 (A ) = A 2 · A = 2 λmin q p p Dimostrazione. A 2 = ρ(A T · A ) = ρ(A 2 ) = ρ2 (A ) = ρ(A ) = λM AX . −1 A = 1 . 2 λmin Nota 3.1.1. Se A è hermetiana/simmetrica e definita positiva: ‚ −1 ‚ ‚ ‚ ‚A ‚ = λmin ‚A ‚ = λM AX e 2 2 Nota 3.1.2. La matrice A è tanto meglio condizionata quanto più vicini sono tra loro i suoi autovalori. Esempio: matrice di Hilbert. La matrice di Hilbert, che è una tipica matrice mal condizionata, risulta invece ben condizionata per il calcolo degli autovalori, essendo simmetrica. 1 1 1 1 1 2 3 4 5 1 1 1 1 1 2 3 4 5 6 1 1 1 1 1 1 (n) aij = A (5) = i+j−1 31 41 51 16 71 4 5 6 7 8 1 1 1 1 1 5 6 7 8 9 25 −300 1 050 −1 400 630 4 800 −18 900 26 880 −12 600 −1 −300 (5) 79 380 −117 600 56 700 A = 1 050 −18 900 −1 400 26 880 −117 600 179 200 −88 200 630 −12 600 56 700 −88 200 44 100 −1 La matrice di Hilbert ha K(A ) = A · A ' e3,5n che conferma il suo mal condizionamento. Esempio: sistema mal condizionato. 1, 000 x + 2, 000 y = 3, 000 x=1 ⇒ 0, 499 x + 1, 001 y = 1, 5 y=1 Dopo aver perturbato i coefficienti sulla terza e quarta cifra decimale si ottiene: 1, 000 x + 2, 000 y = 3, 000 x=3 ⇒ 0, 500 x + 1, 002 y = 1, 5 y=0 3.1 - Condizionamento di un sistema lineare 33 = $ CC BY: \ Calcolo numerico L-A cioè perturbando poco i dati del problema è stato modificato completamente il risultato. 1, 000 2, 000 1 A = x = K(A ) = 2 083 0, 499 1, 001 1 1, 000 2, 000 3 AA = xx = K(A ) = 3 127 0, 500 1, 002 0 Gli errori relativi sui dati e sulle soluzioni sono: AA − A ' 5, 7e−4 , A xx − x ' 1, 58 x Esempio: sistema ben condizionato. 2, 000 x − 1, 000 y = −1, 000 x=1 ⇒ −1, 000 x + 2, 000 y = 5, 000 y=3 Dopo aver perturbato i coefficienti sulla terza e quarta cifra decimale si ottiene: 2, 000 x − 1, 000 y = −1, 000 x = 0, 9993 ⇒ −1, 001 x + 2, 001 y = 5, 000 y = 2, 9987 quindi la perturbazione sui dati è accettabile. 2, 000 −1, 000 1 x = A = −1, 000 2, 000 3 2, 000 −1, 000 0, 9993 AA = xx = −1, 001 2, 001 2, 9987 Gli errori relativi sui dati e sulle soluzioni sono: AA − A ' 4, 7e−4 , A 3.2 K(A ) = 3 K(A ) = 3, 001 xx − x ' 4, 7e−4 x Metodi numerici per risolvere sistemi lineari Metodi diretti: l’esatta soluzione è costruita in un numero finito di passi, in assenza di errori di arrotondamento nei dati e nei calcoli. Metodi iterativi: la soluzione è ottenuta come limite di una successione di soluzioni di problemi lineari più semplici. La matrice A non viene modificata durante il calcolo. Anche in assenza di errori di arrotondamento, bisogna comunque troncare il procedimento risolutivo, commettendo un errore. 3.2.1 Metodo di eliminazione di Gauss Se fosse possibile scomporre A (non singolare) in A = L U , dove L è una matrice triangolare inferiore e U triangolare superiore, allora si potrebbe scrivere: Ly = b LUx =b ⇒ Ux =y |{z} y Metodo di sostituzione in avanti. a11 x1 a 21 x1 + a22 x2 .. . ai1 x1 + ai2 x2 + · · · + aii xi .. . an1 x1 + an2 x2 + · · · + · · · + ann xn Il costo computazione è circa 34 Il sistema triangolare inferiore si risolve: = = = = b1 b2 bi bn ⇒ b1 x1 = a 11 bk − x = k k−1 X j=1 akk akj xj k = 2, . . . , n aii 6= 0 i = 1, . . . , n n2 2 . 3.2 - Metodi numerici per risolvere sistemi lineari = $ CC BY: \ Calcolo numerico L-A Metodo di sostituzione all’indietro. Il sistema triangolare superiore si risolve: bn xn = a nn n X bk − akj xj k = n − 1, . . . , 1 j=k+1 aii 6= 0 x = k akk i = 1, . . . , n Il costo computazione è circa Nella fattorizzazione LU : A3 A3 A3 n2 2 . = L 2A 2 = L 2L 1A 1 = L 2L 1A A −1 −1 A3 = L1 L −12 = L 2L 1 ·A3 = L ·U 1. A 3 è triangolare superiore con elementi della diagonale non nulli. 2. L i è triangolare inferiore e non singolare, per cui è necessario e sufficiente che gli elementi della diagonale non siano nulli. 3. L i −1 è triangolare inferiore. 1 0 0 ... m21 1 0 ... 1 ... L = m31 m32 .. .. .. .. . . . . mn1 mn2 mn3 . . . 0 0 0 .. . U = 1 a11 0 0 .. . a12 (2) a22 0 .. . a13 (2) a23 (3) a33 .. . ... ... ... .. . a1n (2) a2n (3) a3n .. . 0 0 0 ... ann (n) Gli elementi di A n sulla diagonale principale si chiamano perni e devono essere diversi da zero affinché si abbia fattorizzazione LU . Nella fattorizzazione: −1 −1 b = L1 b 3 = L 2b 2 L b3 −12 b 3 = L 2L 1b 1 = L 2L 1 ·b3 b 3 = L 2L 1b = L ·y Nel metodo di eliminazione di Gauss, y si ottiene applicando successivamente le trasformazioni elementari di Gauss L i al vettore b ; allo stesso modo si ottiene U applicando le stesse trasformazioni alla matrice A . Algoritmo. h i 1) L 1 A |b h i 2) L 2 L 1 A |b .. . h i h i h i n − 1) L n−1 L n−2 . . . L 2 L 1 A |b = A n |b n = U |y Il metodo di Gauss fornisce la fattorizzazione LU e risolve L y = b . La soluzione x si ottiene poi risolvendo con sostituzione all’indietro il sistema triangolare U x = y : h i h i−1 h i−1 h i−1 h i−1 h i A |b = L1 · L2 · L3 · . . . · L n−1 · A n |b n h i−1 h i = L n−1 · L n−2 · . . . · L 1 · An | bn |{z} | {z } |{z} y U L h = L U |y ⇒ i A = LU ⇒ 3.2 - Metodi numerici per risolvere sistemi lineari Ly = b 35 = $ CC BY: \ Calcolo numerico L-A Costo computazionale. Per la fattorizzazione servono: (n − 1) + (n − 2) + · · · + 1 = n(n − 1) divisioni per ottenere L ; 2 2 (n − 1) · n(2n − 1) moltiplicazioni per (n − 1)2 + (n − 2)2 + · · · + n − (n − 1) = 6 ottenere U , 1 3 n operazioni per la fattorizzazione. 3 1 Per la risoluzione del sistema lineare triangolare servono n2 operazioni, quindi com2 3 n n2 plessivamente il costo è O + . 3 2 quindi complessivamente servono circa Esistenza della fattorizzazione LU Ci si chiede se esista sempre una fattorizzazione A = L U quando det (A ) 6= 0. La risposta è no. Esempio. Non esistono matrici L e U tali che A = L U per queste due matrici: A = 0 1 1 0 A −1 = 0 1 1 0 (k) Se e solo se i perni akk (con k = 1, 2, . . . , n) sono diversi da zero3 , allora esiste una sola fattorizzazione LU di A . Si vuole garantire che il metodo di Gauss funzioni sempre quando A è non singolare, e quindi ammette sicuramente soluzione. Esempio. Il sistema: 3y x +2y = = 5 0 ⇒ A = 0 1 3 2 non è risolvibile col metodo di Gauss, però ha soluzione. Permutando le equazioni si ha un sistema equivalente: x +2y 3y = = 0 5 ⇒ A = 1 0 2 3 ⇒ b = 0 5 Il sistema è ora risolvibile col metodo di Gauss, perché a11 6= 0. La soluzione, quindi, è la permutazione di posizione tra equazioni (pivoting). Una strategia per avere un algoritmo stabile è utilizzare il pivoting parziale: 1. scegliere r uguale al più piccolo intero maggiore o uguale a k, tale che: k ark = max akik k≤i≤n 2. se r 6= k, scambiare l’equazione k-esima con la r-esima. Si possono utilizzare le matrici di permutazione, che differiscono dalla matrice identità per lo scambio di righe: una pre-moltiplicazione provoca scambio di righe, mentre una post-moltiplicazione provoca uno scambio di colonne. 3 Cioè 36 i minori principali di ordine k sono diversi da zero. 3.2 - Metodi numerici per risolvere sistemi lineari = $ CC BY: \ Calcolo numerico L-A Esempio. Scambio delle righe a11 0 0 1 0 0 1 0 0 a21 1 0 0 0 · a31 a41 0 0 0 1 1 e 3: a12 a22 a32 a42 a13 a23 a33 a43 a31 a14 a21 a24 = a34 a11 a41 a44 a32 a22 a12 a42 a33 a23 a13 a43 a34 b a24 a14 b a44 Teorema 7. Se una matrice A n × n è non singolare, allora esiste una matrice di permutazione P n × n non singolare per cui P A = L U . Infatti, se A è non singolare, allora esiste per ogni ordine almeno una sottomatrice non singolare: applicando su A opportuni scambi di righe e/o colonne si può fare in modo che A abbia le sottomatrici principali non singolari. Concludendo si può generalizzare il metodo di Gauss con pivoting: Ax = b ⇒ P Ax = P b LUx =Pb |{z} y Ly = P b Ux =y ⇒ y = L −1 P b U = L −1 P A Calcolo della matrice inversa e del determinante Il problema di determinare la matrice inversa A −1 di una matrice A quadrata non singolare si può ricondurre al problema di risolvere n sistemi normali. A · A −1 = I A −1 = (x1 , x2 , x3 , . . . , xn ) h iT I = (e1 , e2 , e3 , . . . , en ) con ej = 0 . . . 0 |{z} 1 0...0 j Bisogna risolvere A x j = e j con j = 1, . . . , n. La matrice A è la medesima, quindi bisogna fattorizzare A = L U una sola volta. Il costo computazione è n3 . Per il calcolo del determinante: det (P ) det (A ) = det (L ) det (U ) | {z } | {z } |Q {z } 1 (−1)s ⇒ det (A ) = (−1)s · n i=1 n Y uii uii i=1 dove s è il numero complessivo di scambi effettuati dalla matrice di permutazione. Il rango è il numero r degli elementi non nulli sulla diagonale di U . 3.2.2 Fattorizzazione di Cholesky per sistemi lineari Teorema 8. Se A è una matrice simmetrica definita positiva, allora esiste ed è unica una matrice R triangolare inferiore con elementi positivi sulla diagonale principale, tale che: A = RRT Il calcolo della soluzione del sistema lineare A x = b allora avviene come: Ry = b R RTx = b ⇐⇒ RTx = y | {z } y 3.2 - Metodi numerici per risolvere sistemi lineari 37 = $ CC BY: 3.2.3 \ Calcolo numerico L-A Fattorizzazione di matrici e sistemi lineari 1. Fattorizzazione LU con algoritmo di Gauss. 2. Fattorizzazione RRT con algoritmo di Cholesky. 3. Fattorizzazione QR con algoritmo di Householder. Per tutti i metodi vale: L , R : matrice triangolare inferiore; U : matrice triangolare superiore; Q : matrice ortogonale (Q Q T = I ). Definizione 13 (Matrice sparsa). Una matrice è sparsa quando il numero degli elementi che possono essere diversi da zero è di ordine O(n), quindi una minoranza. Con i metodi di fattorizzazione si riduce il fill-in, cioè il numero di valori che da zero assumono altro valore con l’algoritmo di calcolo, appesantendo i requisiti richiesti e l’onerosità di calcolo. 38 3.2 - Metodi numerici per risolvere sistemi lineari CAPITOLO 4 Interpolazione Solitamente si vuole approssimare: una funzione f (x) non nota, ma della quale si conoscono alcuni valori yi su un insieme di punti xi : φ(xi ) = yi una funzione nota in forma analitica, ma complicata: φ(xi ) = f (xi ) Nel problema di interpolazione bisogna costruire una funzione che passi per tutti i punti assegnati. Definizione 14 (Problema di interpolazione). Dati, in alternativa: i punti (xi , yi ), i = 0, . . . , n con xi ∈ R m , xi 6= xj m≥1 ; i 6= j una famiglia di funzioni φ(x ; a0 , . . . , an ) = y (modello matematico), si cercano i valori a0 , . . . , an (parametri o gradi di libertà) tali che: φ(xi ; a0 , . . . , an ) = yi , i = 0, . . . , n L’interpolazione può essere: lineare: φ(x ; a0 , . . . , an ) = a0 φ0 (x) + a1 φ1 (x) + · · · + an φn (x); polinomiale: φ(x ; a0 , . . . , an ) = a0 + a1 x + a2 x2 + · · · + an xn ; trigonometrica: φ(x ; a0 , . . . , an ) = a0 +a1 exi +a2 e2xi +· · ·+an enxi , con i = √ −1; polinomiale a tratti (spline); razionale: φ(x ; a0 , . . . , an , b0 , . . . , bm ) = 4.1 a0 + a1 x + · · · + an xn . b0 + b1 x + · · · + bm xm Problema di interpolazione L’interpolante deve verificare le condizioni: φ(xi ; a0 , . . . , an ) = yi , i = 0, . . . , n; a0 φ0 (xi ) + a1 φ1 (xi ) + · · · + an φn (xi ) = yi 4 - Interpolazione , i = 0, . . . , n; 39 = $ CC BY: n X aj φj (xi ) = yi \ Calcolo numerico L-A , i = 0, . . . , n. j=0 Ciò significa, unificando in un’unica espressione, che bisogna verificare: y0 φ0 (x0 ) φ1 (x0 ) . . . φn (x0 ) a0 φ0 (x1 ) φ1 (x1 ) . . . φn (x1 ) a1 y1 · .. = .. .. .. .. .. . . . . . . yn an φ0 (xn ) φ1 (xn ) . . . φn (xn ) cioè A · a = b . Il vettore a contiene parametri incogniti dell’interpolante. 4.2 Interpolazione polinomiale Si può risolvere il problema interpolando mediante un polinomio. Teorema 9. Dati n + 1 punti di collocazione (xi , yi ), con i = 0, . . . , n e con xi = 6 xj quando i 6= j, esiste ed è unico il polinomio p ∈ P n che verifica le condizioni p(xi ) = yi , con i = 0, . . . , n. Dimostrazione. Le condizioni di interpolazione p(xi ) = costituiscono un sistema lineare di ordine n + 1: a0 x0 0 x0 1 . . . x0 n x1 0 x1 1 . . . x1 n a1 .. .. .. · .. = .. . . . . . xn 0 xn 1 ... xn n an yi , con i = 0, . . . , n y0 y1 .. . yn che si scrive nella forma V a = y , dove: V = vij = xi j matrice di Vandermonde Poiché det (V ) = n Y (xi − xj ) e i punti xi sono distinti, allora V è non i,j=0 , i>j singolare. Allora, il sistema ammette soluzione e questa è unica. L’interpolazione polinomiale nella base delle potenze: pn (x) = a0 + a1 x + a2 x2 + · · · + an xn ha la matrice A di Vandermonde mal condizionata, specialmente per polinomi di grado elevato. Il costo è O(n3 ), quindi si fa un cambio di base per Pn . Un cambio di base dà lo stesso polinomio interpolante (di grado n) per uno stesso insieme di dati. Due metodi per calcolare i coefficienti sono: 1. il metodo di interpolazione di Lagrange: semplice ma oneroso; 2. il metodo di interpolazione di Newton: richiede differenze divise. I due metodi producono due polinomi equivalenti: la differenza consiste nell’approccio per ottenere i coefficienti. 4.2.1 Interpolazione di Lagrange n Si introduce in Pn un’opportuna base di funzioni: Li (x) i=0 . Ogni funzione risolve un problema semplice di interpolazione: 0, se j 6= i Li (xj ) = 1, se j = i 40 4.2 - Interpolazione polinomiale = $ CC BY: \ Calcolo numerico L-A Il problema iniziale è risolto da: = L0 (x) · y0 + L1 (x) · y1 + · · · + Ln (x) · yn n X = Li (x) · yi Pn (x) i=0 n Bisogna determinare le funzioni Li (x) i=0 . Al massimo, ognuna avrà grado n e n zeri distinti, quindi: = k(x − x1 )(x − x2 ) . . . (x − xi−1 )(x − xi+1 ) . . . (x − xn ) n Y = k· (x − xj ) Li (x) j=0 , j6=i 1 Valutiamo k considerando Li (xi ) = 1: k = n Y . (xi − xj ) j=0 , j6=i n Y Allora: Li (x) = (x − xj ) j=0 , j6=i n Y , i = 0, . . . , n. (xi − xj ) j=0 , j6=i Quando si cambia il numero di punti da interpolare bisogna ricalcolare tutti i Li (x). Il problema, con un numero maggiore di punti, crea delle oscillazioni nel grafico. 4.2.2 Interpolazione di Newton Si vuole costruire facilmente il polinomio di interpolazione di n + 1 punti a partire dal polinomio di interpolazione di un sottinsieme di n punti. Definizione 15 (Differenza divisa). Assegnati i valori di f (x) nei punti x0 , x1 , . . . , xm (distinti) dell’asse reale, si definisce la differenza divisa di f (x) rispetto agli argomenti x0 , x1 : F [x0 , x1 ] = f (x1 ) − f (x0 ) f (x0 ) − f (x1 ) = = F [x1 , x0 ] x0 − x1 x1 − x0 (differenza divisa di ordine 1) Aumentando l’ordine: F [x0 , x1 , x2 ] = F [x0 , . . . , xm ] = F [x0 , x1 ] − F [x1 , x2 ] x0 − x2 (differenza divisa di ordine 2) F [x0 , . . . , xm−1 ] − F [x1 , . . . , xm−1 ] x0 − xm (differenza divisa di ordine m) La differenza divisa è un operatore lineare, simmetrico rispetto ai suoi argomenti. Teorema 10. Sia f ∈ C n [a, b] e siano distinti in [a, b] i punti x0 , . . . , xm . Allora esiste xi ∈ [a, b] tale che: f n (ξ) F [x0 , . . . , xm ] = n! Teorema 11. Se pn−1 ∈ P n−1 è il polinomio di interpolazione dei punti xi , f (xi ) , con i = 0, . . . , n − 1, allora la funzione: pn (x) = pn−1 (x) + n−1 Y (x − xj ) · F [x0 , . . . , xn ] j=0 è un polinomio in P n e soddisfa pn (xi ) = f (xi ) per i = 0, . . . , n. 4.2 - Interpolazione polinomiale 41 = $ CC BY: \ Calcolo numerico L-A Iterando la formula si ottiene la forma di Newton: pn (x) = F [x0 ] + (x − x0 ) · F [x0 , x1 ] + · · · + n−1 Y (x − xj ) · F [x0 , . . . , xn ] j=0 = d0 + (x − x0 ) · d1 + · · · + n−1 Y (x − xj ) · dn j=0 4.2.3 Valutazione di un polinomio con metodo di Horner Il metodo di Horner permette di valutare un polinomio svolgendo N addizioni e N moltiN +1 plicazioni (invece che N e del metodo tradizionale), quindi è molto utile per l’uso 2 in algoritmi iterativi. Un polinomio può essere scritto come: n h io p(x) = d0 + (x − x0 ) d1 + (x − x1 ) d2 + · · · + (x − xn−2 dn−1 + (x − xn−1 )dn . . . Allora, ricorsivamente: p0 = 1 pk+1 = pk · x + dk+1 con k = 0, . . . , n − 1 Quindi, a partire da x (punto di valutazione) e dal vettore d dei coefficienti, si ottiene il valore p del polinomio nel punto x. Il metodo va associato all’interpolazione di Newton quando si ricerca il valore della funzione interpolata in un punto. 4.3 Errori di interpolazione. Fenomeno di Runge In generale, non è vero che aumentando il numero di punti di interpolazione e il grado k del polinomio la successione pk dei polinomi converga a f (x), per nodi xi equidistanti. Consideriamo come esempio la funzione di Runge: f (x) = 1 1 + x2 Scegliamo punti di interpolazione equidistanti su [a, b] = [−5 , +5]. L’errore aumenta col grado all’estremità dell’intervallo (figura 4.1). Figura 4.1: Funzione di Runge ottenuta interpolando con un polinomio di grado 9 (a sinistra) e di grado 15 (a destra) L’errore che si compie è: Q E(x) = f (x) − p(x) = 42 nx · f (n+1) (ξ) (n + 1)! 4.3 - Errori di interpolazione. Fenomeno di Runge = $ CC BY: con: Q nx= n Y \ Calcolo numerico L-A x − xi . i=0 L’errore di interpolazione dipende da: regolarità della funzione; disposizione dei punti di interpolazione sull’asse delle ascisse. Bisogna determinare i punti xi in modo che, per qualunque x, risulti minima la produttoria. Ampiamente utilizzati al proposito sono i polinomi di Chebyshev la cui formula ricorre a tre termini: T0 (x) = 1 T1 (x) = x Tn+1 (x) = 2x · Tn (x) − Tn−1 (x) w(x) = √ 1 1 − x2 , [a, b] = [−1 , +1] I nodi sono gli zeri x0 , . . . , xn ∈ R del polinomio di grado n + 1 definito in [−1 , +1]: 2(n − i) + 1 π xi = cos con i = 0, . . . , n 2(n + 1) 4.4 Interpolazione polinomiale a tratti I polinomi, pur essendo funzioni regolari facilmente calcolabili con derivate ancora polinomiali, hanno lo svantaggio di oscillare all’aumentare del grado (solitamente sopra al 5◦ grado). Una soluzione è suddividere l’intervallo di interpolazione in tratti più piccoli, lavorando su questi con polinomi di grado relativamente basso. Si assegnano m + 1 osservazioni yi con i = 0, . . . , m nei nodi: a = x0 < x 1 < x 2 . . . < x m = b Un polinomio interpolante a tratti consiste di m polinomi di grado n m: p0 (x) , p1 (x) , . . . , pm−1 (x) con pk (x) definito su [xk , xk+1 ] che soddisfa: pk (xk ) = yk pk (xk+1 ) = yk+1 con k = 0, . . . , m − 1 Cosı̀ facendo, però, si è persa un’importante proprietà: i polinomi a tratti non sono necessariamente funzioni regolari (C 1 ). Ad esempio, se si usa n = 1, p(x) è continua ma non derivabile: p0 (x) non è continua e ha salti nei nodi poiché avrà un valore costante dk su ogni sottointervallo. 4.4.1 Funzione spline Definizione 16 (Spline). Una funzione spline s(x) è un polinomio a tratti con condizioni di massima regolarità nei nodi. Una spline di grado n su un intervallo [a, b] è una funzione s tale che: x ∈ Ij j = 0, . . . , k ; 1. s(x) = sj (x), con sj (x) ∈ Pn 2. ha continuità sui nodi: h i h i D(l) sj−1 (xj ) = D(l) sj (xj ) , 4.4 - Interpolazione polinomiale a tratti con l = 0, . . . , n − 1 s(x) ∈ C n−1 43 = $ CC BY: \ Calcolo numerico L-A Sono assegnate m + 1 osservazioni yk con k = 0, . . . , m nei punti distinti xk in [a, b]. Una spline interpolante a tratti consiste in m polinomi pk (x), con k = 0, . . . , m − 1, di grado n m e definiti su [xk , xk+1 ]: 1. pk−1 (xi ) = pk (xi ) = yi , con k = 1, . . . , m − 1; l = 0, . . . , N 2. pk−1 (l) (xk ) = pk (l) (xk ), con k = 1, . . . , m − 1 L’interpolante a tratti è di classe C N , funzione continua fino alla derivata di ordine N ≤ n − 1. Esempio: interpolante spline cubica. È definita da due polinomi cubici su intervalli [x1 , x2 ] e [x2 , x3 ] che si raccordano C 2 . p1 = a1 + a2 x + a3 x2 + a4 x3 p2 = b1 + b2 x + b3 x2 + b4 x3 Bisogna risolvere un sistema 8 × 8 nelle incognite ai e bi (i = 1, 2, 3, 4). a1 + a2 x1 + a3 x1 2 + a4 x1 3 = y1 a1 + a2 x2 + a3 x2 2 + a4 x2 3 = y2 b1 + b2 x2 + b3 x2 2 + b4 x2 3 = y2 b1 + b2 x3 + b3 x3 2 + b4 x3 3 = y3 a2 + 2a3 x2 + 3a4 x2 2 = b2 + 2b3 x2 + 3b4 x2 2 2a3 + 6a4 x2 = 2b3 + 6b4 x2 2a3 + 6a4 x1 = 2b3 + 6b4 x3 =0 (Le derivate seconde denono essere nulle agli estremi.) 44 4.4 - Interpolazione polinomiale a tratti CAPITOLO 5 Decomposizione ai valori singolari (SVD) La SVD è una fattorizzazione, basata sull’uso di autovalori e autovettori, utilizzata per produrre un’approssimazione di una matrice con minor rango. Una matrice A può essere fattorizzata (figura 5.1) come: A = U ΣV T Figura 5.1: Rappresentazione grafica della tecnica SVD U è una matrice unitaria m × m, le cui colonne1 rappresentano gli autovettori di AAT; Σ è una matrice diagonale m × n, i cui elementi σi della diagonale sono i valori singolari di A e stanno tra loro in relazione: σ1 ≥ σ2 ≥ · · · ≥ σp ≥ 0 , p = min(m , n) Inoltre, σi 2 sono gli autovalori di A T A ; V T è una matrice unitaria, trasposta coniugata n × n, le cui colonne2 rappresentano gli autovettori di A T A . Teorema 12. Se A è hermetiana definita positiva, allora i valori singolari sono anche gli autovalori di A e gli autovettori sono le colonne di V . Nota 5.0.1. Quando si scelgono le dimensioni delle matrici per la SVD è conveniente tenere a mente quando illustrato in figure 5.2(a) e 5.2(b), relativamente all’occupazione di memoria e al costo computazionale degli algoritmi che operano sulle matrici. 1 Le 2 Le colonne di U sono i vettori u i (vettori singolari sinistri). righe di V T (cioè le colonne di V ) sono i vettori v i (vettori singolari destri). 5 - Decomposizione ai valori singolari (SVD) 45 = $ CC BY: \ Calcolo numerico L-A (a) A m×n = U m×m Σ m×n V T n×n (b) A m×n = U m×n Σ n×n V T n×n Figura 5.2: Economia computazionale nell’esecuzione della tecnica SVD 5.1 Approssimazione di matrice con minor rango Si approssima una matrice con una somma di matrici più semplici. A = E 1 + E 2 + · · · + E p, E i = σi ui vi T p = min(m , n) matrice a rango 1 E i = σ1 σ1 ≥ σ2 ≥ · · · ≥ σr > σr+1 = · · · = σp = 0 , r<p Allora r è il rango di A e si può scrivere: A = r X σi ui v i T i=1 dove ui e vi sono le colonne delle matrici U e V . Teorema 13. È data la SVD di una matrice A con rango r. Fissato un intero positivo k < r si definisce: k X Ak = σi ui vi T i=1 che è un’approssimazione di A di rango k. L’errore che si commette nel considerare A k anziché A è: min = A − B = A − A k = σk+1 B∈β 2 2 n o β = B ∈ Rm×n : Rank (B) = k Il più piccolo valore singolare non nullo di A è la distanza di A dall’insieme di tutte le matrici a rango deficiente. Poiché σi è in ordine decrescente, l’approssimazione migliora quando k aumenta. 5.2 Risoluzione di sistemi lineari malcondizionati Per risolvere A x = y , con A mal condizionata: x = A −1 y = V Σ −1 U T y D E X ui T , y = · vi σi i Il rumore nei dati (vettore termine noto) è y = ŷ + δy . D E D E r r X ui T , ŷ ui T , δy X x = A −1 ŷ + δy = · vi + · vi σi σi i=1 i=1 46 5.1 - Approssimazione di matrice con minor rango = $ CC BY: \ Calcolo numerico L-A Bisogna eliminare l’effetto dovuto a piccoli valori singolari. Un filtro elimina le alte frequenze del rumore E e le alte frequenze di informazioni utili. Il livello di troncamento è k < r, dove r è il rango massimo. Con la SVD: 1. si calcola la fattorizzazione di A ; 2. si eliminano i valori singolari minori della tolleranza; 3. si costruisce la soluzione x : x = A −1 ŷ + δy ' V k Σ k −1 U k T y = D E k ui T , y X i=1 σi · vi v ∈ Rk , mentre A v ∈ Rn . Variando v , allora A v varia nel sottospazio lineare di Rn generato dalle colonne di A (figura 5.3). Figura 5.3: Soluzione di sistemi lineari malcondizionati con SVD 5.2 - Risoluzione di sistemi lineari malcondizionati 47 CAPITOLO 6 Integrazione numerica Si vuole determinare un’approssimazione dell’integrale definito: Z b I(f ; a, b) = f (x) dx a Osservazioni: sono noti solo i valori di f (x) in un insieme finito di punti; l’integrale non è valutabile in forma chiusa. 6.1 Formule di quadratura In (f ) = n X wi · f (xi ) i=0 wi sono i coefficienti o pesi (ci ); xi sono i nodi. Il resto della formula di quadratura è: rn = I − In Si fa la somma pesata di valori della funzione in punti opportuni, che appartengono o meno all’intervallo di integrazione. Allora: Z b In (f ; a, b) = pn (x) dx a dove pn (x) è il polinomio che interpola la funzione f (x) in n + 1 punti del tipo xi , f (xi ) . Se pn (x) è il polinomio interpolante di Lagrange in n + 1 punti distinti: pn (x) = n X f (xi ) · li (x) i=0 b Z In (f ) = pn (x) dx = a n X i=0 f (xi ) · Z b li (x) dx | a {z } coefficienti La formula di quadratura risulta esatta per costruzione per i polinomi di grado almeno n (grado di precisione almeno n). Una formula di quadratura In ha grado di precisione k se è esatta (cioè ha resto rn = 0) quando la funzione integranda è un polinomio qualsiasi p(x) di grado minore o uguale a k. I(p) = In (p) 48 ∀p ∈ P k 6 - Integrazione numerica = $ CC BY: \ Calcolo numerico L-A Ad esempio, in figura 6.1 si ha un integrale I1 con grado di precisione k = 1: se la funzione è un polinomio di grado 1 allora I1 è esatto, mentre se la funzione ha grado diverso da 1 allora utilizzando I1 si commette un errore. Figura 6.1: Grado di precisione dell’integrazione (esempio con I1 ) 6.2 Formule di quadratura di Newton-Cotes (a nodi equispaziati) Le formule di Newton-Cotes si distinguono in formule chiuse e aperte. Le formule chiuse usano entrambi gli estremi di integrazione: 1. formula dei trapezi (lineare); 2. formula di Simpson 1/3 (quadratica); 3. formula di Simpson 3/8 (cubica). Le formula aperte usano solo punti interni all’intervallo di integrazione: 4. formula del punto medio. Formula dei trapezi. (figura 6.2): Su un intervallo [a, b] si può approssimare la funzione linearmente Z b f (x) dx a ' 1 X ci · f (xi ) i=0 = c0 · f (x0 ) + c1 · f (x1 ) = c0 · f (a) + c1 · f (b) i hh = f (a) + f (b) 2 Figura 6.2: Integrazione con formula dei trapezi 6.2 - Formule di quadratura di Newton-Cotes (a nodi equispaziati) 49 = $ CC BY: \ Calcolo numerico L-A Dimostrazione. Nell’interpolazione di Lagrange con n = 1: = L0 (x) · f (x0 ) + L1 (x) · f (x1 ) x − x1 x − x0 = · f (x0 ) + · f (x1 ) x0 − x1 x1 − x0 p(x) Si cambia la variabile: x ∈ [a, b] ξ ∈ [0, 1] x0 = a x1 = b ξ= x−a h , ⇒ p(ξ) = (1 − ξ) · f (a) + ξ · f (b) ⇒ Integrando: Z Z b f (x) dx ' dx con h = b − a h x=a ⇒ ξ=0 x=b ⇒ ξ=1 dξ = b Z p(x) dx 0 a a 1 p(ξ) dξ = h = f (a) · h Z 1 (1 − ξ) dξ + f (b) · h 0 Z 1 ξ dξ 0 1 2 1 ξ2 ξ = f (a) · h · ξ − + f (b) · h · 2 0 2 0 i hh = f (a) + f (b) 2 Formula di Simpson 1/3. una parabola (figura 6.3): Z Su un intervallo [a, b] si può approssimare la funzione con b f (x) dx ' a 2 X ci · f (xi ) i=0 = c0 · f (x0 ) + c1 · f (x1 ) + c2 · f (x2 ) a+b = c0 · f (a) + c1 · f + c2 · f (b) 2 i hh = f (x0 ) + 4 · f (x1 ) + f (x2 ) 3 Figura 6.3: Integrazione con formula di Simpson 1/3 Dimostrazione. Si interpola: p(x) = 50 (x − x1 )(x − x2 ) (x − x0 )(x − x2 ) (x − x0 )(x − x1 ) · f (x0 )+ · f (x1 )+ · f (x2 ) (x0 − x1 )(x0 − x2 ) (x1 − x0 )(x1 − x2 ) (x2 − x0 )(x2 − x1 ) 6.2 - Formule di quadratura di Newton-Cotes (a nodi equispaziati) = $ CC BY: \ Calcolo numerico L-A Si cambia la variabile: x0 = a a+b x1 = 2 x2 = b ξ= x − x1 h , dξ = x = x0 x = x1 x = x2 ⇒ ⇒ x ∈ [a, b] ξ ∈ [−1, 1] dx b−a con h = h 2 ⇒ ξ = −1 ⇒ ξ=0 ⇒ ξ=1 ξ(ξ − 1) ξ(ξ + 1) · f (x0 ) + (1 − ξ 2 ) · f (x1 ) + · f (x2 ) 2 2 p(ξ) = Integrando: Z b Z f (x) dx ' h 1 p(ξ) dξ −1 a = f (x0 ) · h 2 Z 1 −1 ξ(ξ − 1) dξ + f (x1 ) · h Z 1 (1 − ξ 2 ) dξ + f (x2 ) · −1 h 2 Z 1 ξ(ξ + 1) dξ −1 1 1 1 h ξ3 ξ3 h ξ3 ξ2 ξ2 = f (x0 ) · + f (x1 ) · h ξ − + f (x2 ) · − + 2 3 2 −1 3 −1 2 3 2 −1 i hh f (x0 ) + 4 · f (x1 ) + f (x2 ) = 3 Formula di Simpson 3/8. Su un intervallo [a, b] si può approssimare la funzione con una curva cubica (figura 6.4): Z b 3 X f (x) dx ' ci · f (xi ) a i=0 = = c0 · f (x0 ) + c1 · f (x1 ) + c2 · f (x2 ) + c3 · f (x3 ) i 3 h h f (x0 ) + 3 · f (x1 ) + 3f (x2 ) + f (x3 ) 8 Figura 6.4: Integrazione con formula di Simpson 3/8 Formula del punto medio. Su un intervallo [a, b] si può approssimare la funzione con una funzione del punto medio (figura 6.5): Z b f (x) dx ' (b − a) · f (xm ) a a+b (b − a)3 00 = (b − a) · f + · f (η) 2 24 6.2 - Formule di quadratura di Newton-Cotes (a nodi equispaziati) 51 = $ CC BY: \ Calcolo numerico L-A Figura 6.5: Integrazione con formula del punto medio 6.2.1 Errore di troncamento (rn ) Definizione 17 (Errore di interpolazione polinomiale). E(x) = f (x) − pn (x) = Z Sapendo che b Y 1 (x) · f (n+1) (ξ) (n + 1)! n b Z a Z p(x) dx+rn ' f (x) dx = a con n Y Y (x) = x − xi n i=0 b p(x) dx si può definire un altro errore. a Definizione 18 (Errore di una formula di quadratura interpolatoria). 1 rn = (n + 1)! Z b f (n+1) (ξ) · a Y (x) dx n con f ∈ C n+1 [a, b] , ξ ∈]a, b[. In una formula di quadratura di Newton-Cotes, poiché i nodi xi sono equidistanti, l’espressione del resto si semplifica. Teorema 14 (Formula di Newton-Cotes con n pari, aperta o chiusa). Se f ∈ n+2 C [a, b] e ξ ∈]a, b[: hn+3 · f (n+2) (ξ) rn = (n + 2)! β Z t2 (t − 1) · · · (t − n) dt α (0 , n) per formule chiuse . (−1 , n + 1) per formule aperte Il grado di precisione è n + 1. dove (α , β) = Teorema 15 (Formula di Newton-Cotes con n dispari, aperta o chiusa). Se n+1 f ∈C [a, b] e ξ ∈]a, b[: hn+2 · f (n+1) (ξ) rn = (n + 1)! (0 , n) (−1 , n + 1) Il grado di precisione è n. dove (α , β) = 52 Z β t(t − 1) · · · (t − n) dt α per formule chiuse . per formule aperte 6.2 - Formule di quadratura di Newton-Cotes (a nodi equispaziati) = $ CC BY: Esempio. \ Calcolo numerico L-A Nella formula dei trapezi l’errore di troncamento è: h3 (2) r1 = · f (η) 2! Z 1 |0 1 t(t − 1) dt = − h3 f (2) (η) 12 {z } 1 − 6 con n = 2, h = b − a. Errori nelle formule di Newton-Cotes. 1. Nella formula dei trapezi (h = b − a): r1 (f ) = − h3 00 f (ξ). 12 2. Nella formula di Simpson 1/3 (h = b−a 2 ): r2 (f ) = − h5 (4) f (ξ). 90 3. Nella formula di Simpson 3/8 (h = b−a 3 ): r3 (f ) = − 3h5 (4) f (ξ). 80 4. Nella formula del punto medio (h = 6.2.2 b−a 2 ): r0 (f ) = h3 00 f (ξ). 3 Pesi per formule di Newton-Cotes Si può dimostrare che i coefficienti (pesi) wi di una formula di quadratura dipendono solo da n. Per questo motivo, non dipendendo né dall’intervallo di integrazione [a, b] né dalla funzione f (x), è possibile calcolarli a priori. c0 1 2 c1 1 2 c2 2 1 3 4 3 1 3 3 3 8 9 8 9 8 3 8 4 .. . 14 15 .. . 64 45 .. . 24 45 .. . 64 45 .. . n 1 c3 c4 ... 14 45 .. . Tabella 6.1: Pesi per formule chiuse di Newton-Cotes a n + 1 punti 6.2.3 Problema delle formule di quadratura Le formule di quadratura hanno una forte instabilità numerica quando n > 8. Per questo bisogna ricorrere a metodi migliorativi: formule composite; – formula dei trapezi composita; – formula di Simpson composita; estrapolazione di Richardson; integrazione di Romberg. 6.2 - Formule di quadratura di Newton-Cotes (a nodi equispaziati) 53 = $ CC BY: 6.3 \ Calcolo numerico L-A Formule di quadratura composite Si suddivide l’intervallo di integrazione [a, b] in N parti [xi , xi+1 ], con i = 0, 1, . . . , N − 1. Su ogni intervallo si fa una somma di integrali: b Z f (x) dx = a N −1 Z xi+1 X f (x) dx xi i=0 Si applica, poi, la formula elementare interpolatoria su ciascun intervallo. Formula dei rettangoli composita. Su un intervallo [a, b] si può approssimare la funzione come segue (figura 6.6): Z b Z f (x) dx a x1 = Z x2 x0 Z xN f (x) dx + · · · + f (x) dx + x1 f (x) dx xN −1 h i = h f (x0 ) + f (x1 ) + · · · + f (xi ) + · · · + f (xN −1 ) + r Figura 6.6: Integrazione con formula dei rettangoli composita Formula dei trapezi composita. Su un intervallo [a, b] si può approssimare la funzione come segue (figura 6.7): Z b h i f (x) dx = h f (x0 ) + 2f (x1 ) + · · · + 2f (xi ) + · · · + f (xN −1 ) + f (xN ) + r a (b − a)3 00 · f (ξ) 12N 2 L’errore globale di troncamento è la somma degli errori su ciascun intervallo: r=− N −1 X b−a 2 R=− h 12 f (2) (ηi ) i=0 N Figura 6.7: Integrazione con formula dei trapezi composita 54 6.3 - Formule di quadratura composite = $ CC BY: \ Calcolo numerico L-A Formula di Simpson composita. Su un intervallo [a, b] si può approssimare la funzione come segue (interpolando quadraticamente a tratti): Z b Z f (x) dx x2 = a x0 = = Z x4 Z xN f (x) dx + · · · + f (x) dx + x2 f (x) dx xN −2 i hh i hh f (x0 ) + 4f (x1 ) + f (x2 ) + f (x2 ) + 4f (x3 ) + f (x4 ) + · · · + 3 3 i hh + f (xN −2 ) + 4f (xN −1 ) + f (xN ) + r 3 hh f (x0 ) + 4f (x1 ) + 2f (x2 ) + 4f (x3 ) + 2f (x4 ) + · · · + 3 i +4f (x2i−1 ) + 2f (x2i ) + 4f (x2i+1 ) + · · · + 2f (xN −2 ) + 4f (xN −1 ) + f (xN ) + r r=− 6.3.1 (b − a)5 · f (4) (ξ) 2880 · N 4 Quadratura automatica Ingressi f (x) [a, b] Etoll NM AX Uscite In Est M Tabella 6.2: Ingressi e uscite di un programma P di quadratura automatica Rb Il programma P calcola il valore dell’integrale I(f ; a, b) = a f (x) dx con un errore stimato Est < Etoll e con un numero di valutazioni di funzione M < NM AX . Se ciò non è possibile, il programma si interrompe. P è composto da: 1. una successione di formule di quadratura, che comportano un numero crescente di valutazioni di f (x); 2. un criterio per determinare In ; 3. un criterio per determinare la stima automatica dell’errore Est . Esempi di metodi di quadratura automatica P sono il metodo di Simpson composito adattivo e il metodo di Romberg (non adattivo). Metodo di Simpson composito adattivo. Algoritmo. 1. Si applicano due formule di quadratura composite, con passo h e [a, b] (Simpson S(h) e S( h2 )). h , ad un intervallo 2 2. Si stima l’errore di integrazione con l’estrapolazione di Richardson. 3. Se la tolleranza richiesta è raggiunta, allora S( h2 ) (oppure una combinazione delle due approssimazioni) viene presa come valore di I su quell’intervallo. Se la tolleranza non è raggiunta, allora l’intervallo [a, b] viene suddiviso a metà e il processo viene ripetuto su ognuno dei due sottointervalli. 6.3 - Formule di quadratura composite 55 = $ CC BY: 6.4 \ Calcolo numerico L-A Estrapolazione di Richardson Si può dare una stima automatica del resto confrontando tra loro le approssimazioni composite dell’integrale (IN e I2N ), ottenute con due diversi valori di N (numero di intervalli, cioè passi h e h2 ). rN = I − IN = δN NS r2N = I − I2N = , δ2N 2S N S δN e δ2N differiscono per f (S) (ξ). Nell’ipotesi che la derivata f (S) (ξ) vari poco al variare di x, si suppone che δN ' δ2N = δ. Allora rN − r2N è dato da: I2N − IN ' δ · (2S − 1) 2S · N S I2N − IN . 2S − 1 Si può procedere con successivi raddoppi di N fino a quando: I2N − IN 2S − 1 ≤ Etoll Stima del resto: I − I2N ' I2N − IN . 2S − 1 L’approssimazione dell’integrale sarà I2N + 6.5 Calcolo geometrico con integrali A) Lunghezza di una funzione regolare su intervallo limitato. Z br 2 L= 1 + f 0 (x) dx a B) Lunghezza di una curva. (Arco parametrico C(t) = x(t) , y(t) .) Z 1 Z 0 L= C (t) dt = 0 1 r 2 2 x0 (t) + y 0 (t) dt 0 C) Area di una funzione positiva su intervallo limitato. Z A= b f (x) dx a D) Area di unacurva parametrica. La curva è espressa nella forma parametrica C(t) = x(t) , y(t) , con t ∈ [0 , 1]. L’area è sottesa dalla curva con l’origine degli assi: se la curva è chiusa, questo equivale all’area della regione che resta definita dalla curva. 1 A=± 2 Z 0 1 1 C(t) × C (t) dt = ± 2 0 Z 1h i x(t)y 0 (t) − x0 (t)y(t) dt 0 Il segno ± dipende dalla parametrizzazione (+ per la parametrizzazione antioraria, − per quella oraria). E) Volume di una funzione regolare su intervallo limitato. D = [a, b] × [c, d]. Funzione positiva: f (x, y) > 0.) ZZ V = f (x, y) dx dy (Intervallo limitato D 56 6.4 - Estrapolazione di Richardson = $ CC BY: \ Calcolo numerico L-A F) Ipervolume di una funzione regolare su intervallo limitato. (Intervallo limitato E = [a, b] × [c, d] × [e, f ]. Funzione positiva: f (x, y, z) > 0.) ZZZ V = f (x, y, z) dx dy dz E G) Volume di un solido di rotazione. Z b V =π 2 f (x) dx a L’area della sezione all’ascissa x è: 2 A = π · y 2 = π · f (x) 6.6 Calcolo fisico con integrali A) Massa e baricentro di un corpo bidimensionale. P è una regione piana che ha densità superficiale m(x, y). ZZ m(x, y) dx dy massa = P Le coordinate del baricentro xb e yb sono: ZZ 1 xb = x · m(x, y) dx dy massa P , 1 yb = massa ZZ y · m(x, y) dx dy P B) Massa e baricentro di un solido. E è un volume che ha densità m(x, y, z). ZZZ massa = m(x, y, z) dx dy dz E Le coordinate del baricentro xb , yb e zb sono: ZZZ 1 x = x · m(x, y, z) dx dy dz b massa Z Z Z E 1 yb = y · m(x, y, z) dx dy dz massa Z Z ZE 1 zb = z · m(x, y, z) dx dy dz massa E Nota 6.6.1. Gli integrali delle formule del baricentro sono i momenti rispetto ai tre piani coordinati. C) Momenti di inerzia rispetto agli assi. ZZZ Ix = (y 2 + z 2 ) · m(x, y, z) dV Z Z Z E Iy = (x2 + z 2 ) · m(x, y, z) dV Z Z ZE Iz = (x2 + y 2 ) · m(x, y, z) dV E 6.7 Esempi numerici Confronto tra i metodi numerici non compositi. Sono state scelte cinque funzioni da integrare sull’intervallo [0 , 4]. Per ognuna di esse è stata calcolata la primitiva e il valore reale dell’integrale definito; in seconda battuta, il calcolatore ha determinato il valore dell’integrale coi tre metodi dei trapezi, di Simpson 1/3 e di Simpson 3/8. Per ogni 6.6 - Calcolo fisico con integrali 57 = $ CC BY: \ Calcolo numerico L-A risultato è stato calcolato lo scostamento percentuale ε rispetto al valore reale. I risultati sono riepilogati in tabella 6.3, mentre gli integrali sono: Z 4 x · e2x dx = 5216, 926477 (6.7.1) 0 Z 4 x2 · e−2x dx = 0, 24661508 (6.7.2) 0, 57275 (6.7.3) 1, 65364321 (6.7.4) −0, 113731448 (6.7.5) 0 4 Z sin 2x dx = 0 Z 4 sin x dx = 0 Z 4 e−x · sin(10x) dx = 0 Integrale Valore reale Trapezi Simpson 1/3 Simpson 3/8 Grafico (6.7.1) 5216,926477 −357, 1 −57, 96 −30, 71 (6.8) (6.7.2) 0,24661508 95, 65 19, 31 2, 875 (6.9) (6.7.3) 0,57275 −245, 5 337, 20 106, 88 (6.10) (6.7.4) 1,65364321 191, 53 −16, 12 −6, 759 (6.11) (6.7.5) −0, 113731448 124, 0 397, 7 438, 8 (6.12) Tabella 6.3: Risultati del confronto tra le formule di quadratura di Newton-Cotes a nodi equispaziati Figura 6.8: Calcolo della (6.7.1) coi metodi dei trapezi e di Simpson 58 6.7 - Esempi numerici = $ CC BY: \ Calcolo numerico L-A Figura 6.9: Calcolo della (6.7.2) coi metodi dei trapezi e di Simpson Figura 6.10: Calcolo della (6.7.3) coi metodi dei trapezi e di Simpson 6.7 - Esempi numerici 59 = $ CC BY: \ Calcolo numerico L-A Figura 6.11: Calcolo della (6.7.4) coi metodi dei trapezi e di Simpson Figura 6.12: Calcolo della (6.7.5) coi metodi dei trapezi e di Simpson 60 6.7 - Esempi numerici CAPITOLO 7 Approssimazione Si presenta la necessità di approssimare: dati quando la funzione da approssimare f (x) non è nota in forma analitica, ma di essa si conoscono alcuni valori yi su un insieme di punti xi ; funzioni quando la funzione è nota in forma analitica, ma è una funzione complicata e la si vuole approssimare con una rappresentazione più semplice. Figura 7.1: Approssimazione di dati minimizzando la distanza lungo y C’è una sostanziale differenza tra approssimazione e interpolazione. L’interpolazione passa per i punti dati, mentre l’approssimazione costruisce una curva minimizzando la distanza tra la curva e i dati forniti (figura 7.1). La scelta della distanza con la quale si vuole approssimare i dati (misura dell’errore) determina il procedimento da scegliere: con pochi dati affidabili bisogna usare l’interpolazione; con un insieme discreto di dati (ad es. dati sperimentali affetti da variabilità statistica, per i quali si deve tener conto di un margine d’errore) bisogna approssimare: 1. con l’approssimazione ai minimi quadrati : v um 2 uX yi − fn (xi ) y − fn = t 2 i=1 2. con l’approssimazione uniforme: y − fn = max yi − fn (xi ) ∞ 7 - Approssimazione i=1,...,m 61 = $ CC BY: 7.1 \ Calcolo numerico L-A Approssimazione ai minimi quadrati (LS) Bisogna minimizzare l’errore ei = f1 (xi ) − yi . I punti dati sono (xi , yi ), mentre xi , f (xi ) sono i punti approssimati (figura 7.2(a)). (a) Esempio di approssimazione ai minimi quadrati (b) Cancellazione d’errore Figura 7.2: Approssimazione ai minimi quadrati Tuttavia, gli errori possono cancellarsi l’un l’altro (figura 7.2(b)): quindi la soluzione è minimizzare la somma dei quadrati. S= m X (ei )2 = e1 2 + e2 2 + e3 2 + . . . i=1 m 2 X yi − fn (xi ) = i=1 m h i2 X = yi − (axi + b) i=1 L’approssimazione ai minimi quadrati equivale a minimizzare l’errore S: min y − f1 2 = min a,b 2 m h X i2 yi − (axi + b) i=1 Assegnati i punti (xi , yi ) con i = 1, . . . , m e scelte n + 1 funzioni base del tipo: Φ0 , Φ 1 , . . . , Φn con n m si vuole costruire la funzione di approssimazione individuata con il metodo dei minimi quadrati (cioè i coefficienti ai sono determinati in modo che lo scarto quadratico medio S sia minimo): fn (x) = a0 Φ0 + ai Φ1 + · · · + an Φn y − fn (x) è il vettore di elementi. yi − n X aj Φj (xi ) con i = 1, . . . , m j=0 m y −Ha y0 y1 .. . ym 62 − Φ0 (x0 ) Φ0 (x1 ) .. . Φ0 (xm ) con Hij = Φj (xi ) Φ1 (x0 ) . . . Φn (x0 ) Φ1 (x1 ) . . . Φn (x1 ) .. .. .. . . . Φ1 (xm ) . . . Φn (xm ) · a0 a1 .. . an 7.1 - Approssimazione ai minimi quadrati (LS) = $ CC BY: \ Calcolo numerico L-A Il vettore a contiene i parametri incogniti dell’approssimante. Si vuole determinare il valore di a che renda minimo il residuo: 2 S = y − H a 2 Si tratta della soluzione di un sistema lineare sovradeterminato (m > n) perché si vuole H a = y . Avendo più vincoli che variabili, non esiste in generale una soluzione esatta: quindi, si cerca una soluzione approssimata nel senso dei minimi quadrati. Scegliendo i polinomi nella base delle potenze: Φ0 = 1 , Φ1 = x , Φ 2 = x 2 , . . . , Φ n = x n si vuole determinare fn (x) = a0 + a1 x + a2 x2 + · · · + an xn che renda minima la somma m h i2 X S= y − fn (xi ) . i=0 7.1.1 Metodo delle equazioni normali per l’approssimazione ai minimi quadrati 1) Approssimazione lineare (n = 1). Si deve minimizzare l’errore S = m h X i2 yi − (axi + b) . i=1 Poiché è il minimo di una funzione in due variabili (a, b), si calcolano le derivate parziali di S rispetto a entrambe le variabili e le si pongono uguali a zero. X m Pm Pm ∂S = 0 axi 2 + i=1 bxi = i=1 xi yi ∂a i=1 ⇒ m X Pm Pm ∂S axi + i=1 b = i=1 yi =0 ∂b i=1 Infatti: ∂S ∂a = = ∂S ∂b = = m X 2(yi − axi − b)(−xi ) i=1 m X − xi yi + i=1 m X m X axi 2 + m X i=1 bxi = 0 i=1 (−2)(yi − axi − b) i=1 m X − yi + i=1 m X axi + m X i=1 b=0 i=1 Si risolve il sistema: X m xi 2 i=1 X m xi m X X m xi xi yi a i=1 i=1 = X · m b m yi i=1 i=1 Si pone: Sx = Sxx = m X i=1 m X xi , xi 2 , i=1 Sy = Syy = m X i=1 m X yi xi yi i=1 Il sistema allora ha soluzione: Sxx Sy − Sxy Sx m · Sxy − Sx Sy a= , b= 2 m · Sxx − Sx m · Sxx − Sx 2 La retta che approssima i dati ai minimi quadrati è y = ax + b. Un esempio di approssimazione lineare è in figura 7.3(a). 7.1 - Approssimazione ai minimi quadrati (LS) 63 = $ CC BY: \ Calcolo numerico L-A 2) Approssimazione quadratica (n = 2). Per minimizzare l’errore si deve calcolare il minimo di una funzione in tre variabili, calcolando le derivate parziali di S rispetto alle variabili: X X m m m m X X ∂S 4 3 2 2 = 0 xi xi xi xi yi ∂a i=1 i=1 i=1 i=1 X X m m m m a X X ∂S 3 2 · b = x x x y x ⇒ i i i i i =0 ∂b i=1 i=1 i=1 i=1 c m m m X X X 2 ∂S y x x m i i i =0 ∂c i=1 i=1 i=1 Un esempio di approssimazione quadratica è in figura 7.3(b). (a) Approssimazione lineare (grado n = 1) (b) Approssimazione quadratica (grado n = 2) (c) Approssimazione cubica (grado n = 3) (d) Approssimazione con gradi n = 6 e n = 7 Figura 7.3: Approssimazione ai minimi quadrati col metodo delle equazioni normali 3) Approssimazione con grado n arbitrario. Sono riportati in figura 7.3(c) e 7.3(d) due esempi, rispettivamente con grado n = 3 e coi gradi n = 6 e n = 7. m X m xi i=1 .. . X m xi n fn (x) = a0 + a1 x + a2 x2 + · · · + an xn m m X X xi . . . xi n i=1 i=1 a0 .. .. a1 . . · .. = . .. .. . . a n m X 2n ... ... xi i=1 64 1 x0 1 x1 ... ... yi i=1 m X xi yi .. . i=1 m X xi n yi i=1 i=1 m X 1 xm · 1 1 .. . x0 x1 .. . 1 xm a0 1 = · a1 x0 1 x1 ... ... 1 xm · y0 y1 .. . ym 7.1 - Approssimazione ai minimi quadrati (LS) = $ CC BY: \ Calcolo numerico L-A H TH a = H Ty 2 Teorema 16. mina S = y − H a ⇐⇒ H TH a = H Ty. 2 Dimostrazione. S(a ) = y − H a 2 = (y − H a )T · (y − H a ) = yTy − yTH a − aTH Ty + aTH TH a = y T y − 2y T H a + a T H T H a = −2y T H + 2H T H a = 0 2 ∇S(a ) ⇒ H TH a = H Ty H T H è definita positiva se e solo se la matrice H ha rango massimo. In questo caso, A è non singolare, quindi il problema ha un’unica soluzione. Bisogna fare attenzione al malcondizionamento k(H T H ) = k(H )2 : errori di arrotondamento nella risoluzione del sistema possono causare grandi errori nell’approssimante dei dati. Teorema 17. Il problema LS ammette sempre soluzione. La soluzione è unica se e solo se la matrice H ha rango massimo (cioè se le colonne di H sono linearmente indipendenti). Il problema ha infinite soluzioni quando le colonne di H sono linearmente dipendenti, tuttavia la soluzione di lunghezza minima è unica. 7.1.2 Minimi quadrati pesati. Polinomi ortogonali nelle equazioni normali Si può associare un peso wi a ciascun punto: min a0 ,a1 ,...,an N X h i2 wi · yi − fn (xi ) min H a − y a wi > 0, indipendenti da ai i=1 m T W Ha −y m H W H a = H TW y T Wii = wi matrice diagonale n × n sistema di equazioni normali n × n Si può evitare la risoluzione del sistema delle equazioni normali scegliendo come funzioni base polinomi ortogonali : hΦk , Φj i = m X wi Φk (xi )Φj (xi ) = 0 con k 6= j i=0 con matrice dei pesi W e matrice del sistema H T W H a = H T W y diagonale, di coefficienti: m X wi fi Φj (xi ) aj ∗ = i=0 m X con j = 0, . . . , n wi Φj 2 (xi ) i=0 7.1 - Approssimazione ai minimi quadrati (LS) 65 = $ CC BY: 7.1.3 \ Calcolo numerico L-A Metodo QR-LS Algoritmo. 1. Si suppone che H abbia rango massimo: min S = H a − y 2 2 2. Si applica una fattorizzazione QR alla matrice del sistema H = Q R : Q R = matrice ortogonale matrice triangolare superiore non singolare R1 0 H a − y 2 2 = Q R a − y 2 2 2 = R a − Q T y | {z } 2 c 3. Si partiziona il vettore c : c1 c = c2 Ra − c = , 2 min H a − y 2 = c2 2 2 R1 a − c1 c1 + min R1 a − c1 2 2 4. Si risolve il sistema triangolare R1 a = c1 . Il residuo è dato da: 2 2 min H a − y = c2 2 7.1.4 2 Metodo della decomposizione in valori singolari (SVD-LS) Teorema 18. Sia: H ∈ C m×n H = U ΣV di rango k, con m ≥ n ≥ k T Allora la soluzione di minima norma del problema dei minimi quadrati è data da: ∗ a = k X ui H · y i=1 e il valore minimo è γ 2 = σi · vi H 2 · y u . i i=1 Pn Dimostrazione. ****************** ***************** 66 7.1 - Approssimazione ai minimi quadrati (LS) = $ CC BY: \ Calcolo numerico L-A Figura 7.4: Esempio approssimazione *** (a) *** (b) *** Figura 7.5: Soluzione esempio approssimazione *** 7.1 - Approssimazione ai minimi quadrati (LS) 67 APPENDICE A Vettori e matrici A.1 Operazioni tra vettori Dati due vettori: h x = x1 x2 ... xm iT , y = h y1 y2 ... ym iT si possono definire due operazioni. Definizione 19 (Somma di vettori). Dati due vettori x e y aventi la medesima dimensione, la loro somma è: h i x + y = x1 + y1 x2 + x2 . . . xm + ym Definizione 20 (Prodotto scalare tra vettori). Dati due vettori x e y aventi la medesima dimensione, il loro prodotto scalare è: p = xT ·y = m X xi · yi i=1 A.2 Operazioni tra matrici Definizione 21 (Matrice simmetrica). Una matrice è simmetrica se A = A T . Definizione 22 (Matrice antisimmetrica). Una matrice è antisimmetrica se A = −A T . Definizione 23 (Prodotto tra matrici). Il prodotto tra matrici è possibile solo tra una matrice A (di dimensioni m × n) e una matrice B (di dimensioni n × p), per cui A ha tante colonne quante sono le righe di B . Risulta una matrice C (di dimensioni m × p) con elementi: n X i = 1, . . . , m cij = aik bkj con: j = 1, . . . , p k=1 Prodotto tra matrici con uso del prodotto scalare (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx xxx for i=1:m for j=1:p C(i,j) = A(i,:) * B(:,j); end 68 A - Vettori e matrici = $ CC BY: \ Calcolo numerico L-A Prodotto tra matrici (codice MATLAB) xxx xxx xxx xxx xxx xxx xxx xxx for i=1:m for j=1:p for k=1:n C(i,j) = C(i,j) + A(i,k) * B(k,i); end Il costo computazionale è p X m X n X 2 = 2mpn, quindi con m = p = n la complessità i=1 j=1 k=1 è 2n3 . A.3 A.3.1 Norme Norma vettoriale Una norma vettoriale è una funzione: • : C n → R+ ∪ {0} che assegna un valore reale a ciascun vettore x e verifica le seguenti proprietà: ∀x ∈ C n ; 1. x ≥ 0 e x = 0 ⇔ x = 0, ∀x ∈ C n , ∀α ∈ C; 2. αx = α · x , 3. x + y ≤ x + y (disuguaglianza triangolare), Norma 1. ∀x , y ∈ C n . n X xi . x = 1 i=1 v u n q uX √ Norma 2 (euclidea). x 2 = x , x = x T x = t (xi )2 . i=1 Norma infinito (di Chebyshev). x = max xi . ∞ i=1,...,n Teorema 19. Siano k • k0 e k • k00 due norme vettoriali. Allora le due norme sono equivalenti, cioè esistono due costanti reali α, β tali che 0 < α ≤ β e che (∀x ∈ C n ): 00 0 00 α· x ≤ x ≤ √β · x x x ≤ ≤ n · x ∞ ∞ 2 √ x ≤ x 1 ≤ n · x2 2 √ x n · x ∞ ≤ x 1 ≤ ∞ A.3.2 Norma matriciale Una norma matriciale è una funzione: • : C n×n → R+ ∪ {0} che assegna un valore reale a ciascuna matrice A e verifica le seguenti proprietà: 1. A ≥ 0 e A = 0 ⇔ A = 0, ∀A ∈ C n×n ; 2. αA = α · A , ∀A ∈ C n×n , ∀α ∈ C; A.3 - Norme 69 = $ CC BY: \ Calcolo numerico L-A 3. A + B ≤ A + B (disuguaglianza triangolare), 4. A · B ≤ A · B , ∀A , B ∈ C n×n . ∀A , B ∈ C n×n ; Definizione 24 (Norma matriciale indotta). Ad ogni norma vettoriale si può associare una norma matriciale. La norma: A x A = sup p con A ∈ C n×n , x ∈ C n p x kx k6=0 p è detta norma matriciale indotta dalla norma vettoriale (norma naturale). Proprietà delle norme naturali. I x p I p = sup x = 1; kx k6=0 p A x ≤ A · x . Norma 1. n X A = max aij (il massimo della somma sulle colonne, in modulo). 1 j=1,...,n i=1 q Norma 2 (euclidea). A 2 = ρ (A T A ), dove ρ (A ) è il raggio spettrale di A (il suo massimo autovalore). n X aij (il massimo della somma Norma infinito (di Chebyshev). A ∞ = max i=1,...,n j1 sulle righe, in modulo). Norma di Frobenius (o di Schur). v uX u n 2 A = t aij . F i,j=1 Teorema 20. Tutte le norme matriciali sono equivalenti: 1 √ · A ∞ n 1 √ · A 1 n max aij i,j 1 √ · A F n A.4 ≤ A 2 ≤ A 2 ≤ A 2 ≤ A 2 √ n · A ∞ √ ≤ n · A 1 ≤ n · max aij i,j A ≤ F ≤ Matrici definite in segno Definizione 25 (Matrice definita in segno). Se, per ogni x 6= 0 , il numero reale x T A x mantiene lo stesso segno, si dice che la matrice A è definita in segno. In particolare: x T A x > 0: matrice definita positiva; x T A x ≥ 0: matrice semidefinita positiva; x T A x ≤ 0: matrice semidefinita negativa; x T A x < 0: matrice definita negativa; in tutti gli altri casi, A è indefinita. 70 A.4 - Matrici definite in segno = $ CC BY: \ Calcolo numerico L-A Teorema 21 (Criterio di Sylvester). Una matrice simmetrica A è definita positiva se e solo se: det (A k ) > 0 con k = 1, . . . , n dove det (A k ) è il determinante della matrice di ordine k formata dalle intersezioni delle prime k righe e k colonne di A . A.4 - Matrici definite in segno 71 Elenco delle figure 1.1 1.2 72 1.3 1.4 1.5 Analisi numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Disposizione sull’asse reale dei numeri finiti rappresentati dall’insieme F (B = 2, t = 3, L = −1, U = 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Valutazione dell’errore nel caso di troncamento . . . . . . . . . . . . . . . . Valutazione dell’errore nel caso di arrotondamento . . . . . . . . . . . . . . Successioni ottenute con algoritmi stabili o instabili . . . . . . . . . . . . . . 10 10 11 18 2.1 2.2 2.3 2.4 2.5 2.6 Metodo di bisezione . . . . . . . . . . . . Metodo di Regula Falsi . . . . . . . . . . Metodo delle secanti . . . . . . . . . . . . Metodo di Newton (delle tangenti) . . . . Risultati del metodo di calcolo delle radici Risultati del metodo di calcolo delle radici 21 23 24 24 27 27 4.1 Funzione di Runge ottenuta interpolando con un polinomio di grado 9 (a sinistra) e di grado 15 (a destra) . . . . . . . . . . . . . . . . . . . . . . . . 42 5.1 5.2 5.3 Rappresentazione grafica della tecnica SVD . . . . . . . . . . . . . . . . . . 45 Economia computazionale nell’esecuzione della tecnica SVD . . . . . . . . . 46 Soluzione di sistemi lineari malcondizionati con SVD . . . . . . . . . . . . . 47 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 Grado di precisione dell’integrazione (esempio con I1 ) . Integrazione con formula dei trapezi . . . . . . . . . . . Integrazione con formula di Simpson 1/3 . . . . . . . . . Integrazione con formula di Simpson 3/8 . . . . . . . . . Integrazione con formula del punto medio . . . . . . . . Integrazione con formula dei rettangoli composita . . . . Integrazione con formula dei trapezi composita . . . . . Calcolo della (6.7.1) coi metodi dei trapezi e di Simpson Calcolo della (6.7.2) coi metodi dei trapezi e di Simpson Calcolo della (6.7.3) coi metodi dei trapezi e di Simpson Calcolo della (6.7.4) coi metodi dei trapezi e di Simpson Calcolo della (6.7.5) coi metodi dei trapezi e di Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 49 50 51 52 54 54 58 59 59 60 60 7.1 7.2 7.3 7.4 7.5 Approssimazione di dati minimizzando la distanza lungo y . . . . . . . . Approssimazione ai minimi quadrati . . . . . . . . . . . . . . . . . . . . Approssimazione ai minimi quadrati col metodo delle equazioni normali Esempio approssimazione *** . . . . . . . . . . . . . . . . . . . . . . . . Soluzione esempio approssimazione *** . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 62 64 67 67 . . . . . . . . . . . . . . . . di una di una . . . . . . . . . . . . . . . . . . . . . . . . parabola logaritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Elenco delle figure Elenco delle tabelle 1.1 Notazioni particolari di formati IEEE 754 . . . . . . . . . . . . . . . . . . . 12 2.1 2.2 Confronto tra i risultati del calcolo della radice di una parabola x2 − 4x + 2 26 Confronto tra i risultati del calcolo della radice di un logaritmo log x . . . . 26 6.1 6.2 6.3 Pesi per formule chiuse di Newton-Cotes a n + 1 punti . . . . . . . . . . . . 53 Ingressi e uscite di un programma P di quadratura automatica . . . . . . . 55 Risultati del confronto tra le formule di quadratura di Newton-Cotes a nodi equispaziati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Elenco delle tabelle 73 Indice analitico A Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 14, complessità computazionale . . . . . . . stabilità . . . . . . . . . . . . . . . . . . . . . . . . . . Approssimazione . . . . . . . . . . . . . . . . . . . . 7, ai minimi quadrati (LS) . . . . . . . . . . . ai minimi quadrati pesati . . . . . . . . . equazioni normali (metodo) . . . . . . . polinomi ortogonali . . . . . . . . . . . . . matrice con minor rango (SVD) . . . QR-LS (metodo) . . . . . . . . . . . . . . . . . . SVD-LS (metodo) . . . . . . . . . . . . . . . . Arrotondamento eps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . di una formula di quadratura interpolatoria . . . . . . . . . . . . . . . . . . . . . . . . . . 19 52 19 inerente . . . . . . . . . . . . . . . . . . . . . . . . . . 16 16 nelle formule di Newton-Cotes . . . . 53 61 propagazione . . . . . . . . . . . . . . . . . . . . . 12 62 relativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 65 63 Euclide (norma di) . . . . . . . . . . . . . . . . 69, 70 65 46 F 66 Floating point . . . . . . . . . . . . . . . . . . . . . . . . . 12 formati IEEE 754 . . . . . . . . . . . . . . . . . 12 66 Flop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 11 Frobenius (norma di) . . . . . . . . . . . . . . . . . . 70 B Bisezione (metodo di) . . . . . . . . . . . . . . 21, 26 Broyden (aggiornamento di) . . . . . . . . . . . 29 C Cancellazione numerica . . . . . . . . . . . . . . . . Chebyshev (norma di) . . . . . . . . . . . . . 69, Chebyshev (polinomi di) . . . . . . . . . . . . . . Cholesky (fattorizzazione di) . . . . . . . . . . Condizionamento . . . . . . . . . . . . . . . . . . 14, indice . . . . . . . . . . . . . . . . . . . . . 15, 32, sistema lineare . . . . . . . . . . . . . . . . . . . . Convergenza . . . . . . . . . . . . . . . . . . . . . . . 25, fattore . . . . . . . . . . . . . . . . . . . . . . . . . . . . ordine . . . . . . . . . . . . . . . . . . . . . . . . . . . . Corda (metodo della) . . . . . . . . . . . . . . . . . . G Gauss (eliminazione di) . . . . . . . . . . . . . . . . 34 H Hilbert (matrice di) . . . . . . . . . . . . . . . . . . . 33 Horner (metodo di) . . . . . . . . . . . . . . . . . . . 42 13 70 I 43 Interpolazione . . . . . . . . . . . . . . . . . . . . . 39, di Lagrange . . . . . . . . . . . . . . . . . . . . . . . 37 di Newton . . . . . . . . . . . . . . . . . . . . . . . . 16 Horner (metodo di) . . . . . . . . . . . . . . . 33 polinomiale . . . . . . . . . . . . . . . . . . . . . . . 32 polinomiale a tratti . . . . . . . . . . . . . . . 26 Runge (fenomeno di) . . . . . . . . . . . . . 25 spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 29 L Lagrange (interpolazione di) . . . . . . . . . . . D Differenza divisa . . . . . . . . . . . . . . . . . . . . . . 41 61 40 41 42 40 43 42 43 40 N Newton (interpolazione di) . . . . . . . . . . . . 41 E Newton (metodo di) . . . . . . . . . . . . . . . 24–26 Errore Newton-Cotes (formule di quadratura di) . algoritmico . . . . . . . . . . . . . . . . . . . . . . . 16 49, 52, 53 assoluto . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Newton-Raphson (metodo di) . . . . . . . . . 28 di interpolazione . . . . . . . . . . . . . . . . . . 42 Numeri finiti . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 di interpolazione polinomiale . . . . . . 52 aritmetica . . . . . . . . . . . . . . . . . . . . . . . . 12 di rappresentazione . . . . . . . . . . . . . . . 10 cancellazione numerica . . . . . . . . . . . . 13 di troncamento . . . . . . . . . . . . . . . . . . . 52 propagazione degli errori . . . . . . . . . . 12 74 Indice analitico = $ CC BY: P Perturbazione . . . . . . . . . . . . . . . . . . . . . 14, Pivoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Precisione di macchina (eps) . . . . . . 11, Propapagazione degli errori . . . . . . . . . . . . Punto medio (formula del) . . . . . . . . . . . . \ Calcolo numerico L-A 32 36 16 12 51 Q Quadratura (formule di) . . . . . . . . . . . . . . . 48 a nodi equispaziati (di Newton-Cotes) 49 composite . . . . . . . . . . . . . . . . . . . . . . . . 54 Quadratura automatica . . . . . . . . . . . . . . . 55 R Regula Falsi (metodo di) . . . . . . . . . . . 22, Rettangoli (formula composita dei) . . . . Richardson (estrapolazione di) . . . . . . . . . Runge (fenomeno di) . . . . . . . . . . . . . . . . . . 26 54 56 42 S Schur (norma di) . . . . . . . . . . . . . . . . . . . . . . 70 Secanti (metodo delle) . . . . . . . . . . . . . 23, 26 metodo di tipo secanti . . . . . . . . . . . . 29 Shamanskii (metodo di) . . . . . . . . . . . . . . . 29 Simpson (formula composita di) . . . . . . . 55 Simpson (formula di) . . . . . . . . . . . . . . 50, 51 Simpson (metodo composito adattivo di) . 55 Sistemi lineari condizionamento . . . . . . . . . . . . . . . . . . 32 metodi numerici di risoluzione . . . . 34 soluzione (SVD) . . . . . . . . . . . . . . . . . . 46 Sistemi non lineari . . . . . . . . . . . . . . . . . . . . 28 Spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Sylvester (criterio di) . . . . . . . . . . . . . . . . . . 71 T Tangenti (metodo delle) . . . . . . . . . . . . 24–26 Trapezi (formula composita dei) . . . . . . . 54 Trapezi (formula dei) . . . . . . . . . . . . . . . . . . 49 U Unità di arrotondamento (eps) . . . . . . . . 11 V Vandermonde (matrice di) . . . . . . . . . . . . . 40 Indice analitico 75