1 Slides 1
Avvalendosi di un calcolatore si lavora con una aritmetica finita che dà luogo ad errori.
- Errore inerente: Si commettono errori rappresentando i dati del problema con un numero finito di cifre.
- Errore algoritmico: Si commettono errori eseguendo le operazioni aritmetiche richieste dal processo di calcolo con una aritmetica finita.
Un problema è malcondizionato se piccole variazioni sui dati inducono grandi variazioni sui risultati.
Definizione: la complessità di calcolo, detta anche complessità computazionale o costo computazionale, viene misurata in funzione delle dimensioni del problema che si sta trattando e dà indicazione del numero di operazioni aritmetiche che necessitano per ottenere il risultato.
2 Slides 2
2.1 Rappresentazione floating point
q·x = p N.
Dove: p ∈ R è un numero reale; N è la base del sistema di numerazione scelto; q è un intero positivo → p mantissa, q esponente.
Esempio: x = 0.12345 = 12345 · 10−5.
Dove “12345” è la mantissa (p) e “-5” è l’esponente (q). Quindi ad x si associa la coppia (p,q).
La rappresentazione normalizzata, cioè −1 ≤ |p|N < 1, conduce alla rappresentazione unica di un numero x = 0 mediante la coppia (p, q).
Lo spazio riservato alla rappresentazione di un numero reale può essere visto come: segno (s), esponente (q), mantissa (|p|).
Si avrà che: per la singola precisione ci saranno a disposizione 32 bit quindi: 1 bit per il segno, 8 bit per l’esponente e 23 bit per la mantissa.
Per la doppia precisione ci saranno a disposizione 64 bit quindi: 1 bit per il segno, 11 bit per l’esponente e 52 bit per la mantissa.
−127 ≤ q ≤ 128 (semplice precisione).
−1023 ≤ q ≤ 1024 (doppia precisione).
Definizione: x ∈ R è detto numero macchina.
q ∈ / m, M. Se q < m si associa zero ad x ed il sistema segnala la situazione di underflow.
Se q > m, x non viene rappresentato ed il sistema segna la situazione di overflow.
q q ∈ ±pN ∈ ℑ.
Se q ∈ [m, M] ma x = / allora si usa l’approssimazione x = p Ne ee.
2.2 Troncamento o chopping
Nella mantissa p vengono escluse le cifre dopo la t-esima.
p = 0.a1 a2 a3 ... at at+1...
pe = 0.a1 a2 a3 ... at.
Errore assoluto: εA = xe − x.
Errore relativo: εR = (xe − x) / x.
|εA| < N−t+q.
|εR| < N−t+1.
2.3 Arrotondamento
xe = arr(x), xe = peNq.
trn(p) se at+1 < N/2.
trn(p + N−t) se at+1 ≥ N/2.
|εA| < 1/2 N−t+q.
|εR| < 1/2 N−t+1.
Il valore che limita superiormente l’errore relativo (eps) è detto precisione di macchina.
eps = N−t+1 troncamento.
eps = 1/2 N−t+1 arrotondamento.
2.4 Operazioni di macchina
Se si effettua un’operazione su due numeri di macchina, il risultato non per forza lo è. Bisogna approssimare affinché: x, y ∈ ℑ → x op y / ∈ ℑ ma fl(x op y) ∈ ℑ.
εR = fl(x op y) − x op y / x op y.
|εR| < eps.
Definizione: fl(x op y) = (1 + εR)(x op y).
In aritmetica non è detto che valgano le proprietà dell’aritmetica:
fl(fl(x · y) · z) ≠ fl(x · fl(y · z)).
fl(fl(x + y) + z) ≠ fl(x + fl(y + z)).
Esempi da pagina 18 Slides 2.
2.5 Errore inerente
Errore relativo alla rappresentazione.
εIn = f(xe) − f(x) / f(x).
Sviluppo in serie di Taylor al primo ordine f(x):
f(xe) = f(x) + δf(x)/δxi (xei − xi) + ... + δf(x)/δxn (xen − xn).
f(xe) − f(x) = δf(x)/δxi (xei − xi) + ... + δf(x)/δxn (xen − xn).
Divido entrambi i membri per f(x) e moltiplico e divido il secondo membro per xi ottenendo:
εIN = Σi=1n (xei − xi) / xi · xi / f(x) · δf(x)/δxi.
Sapendo che εri = (xei − xi) / xi si può scrivere:
εIN = Σi=1n εri xi / f(x) · δf(x)/δxi.
Ponendo Ci = xi / f(x) · δf(x)/δxi si ottiene:
εIN = Σi=1n εri Ci.
Dove Ci è l’indice di condizionamento.
2.6 Errore algoritmico
εALG = Σi=1M θi (x1, x2, x3, ..., xn) γi.
Dove M è il numero di operazioni che compongono l’algoritmo in uso.
γi := εRi, i = 1, 2, 3, ..., M.
2.7 Errore totale
εTOT ≈ εIN + εALG.
Esempio da pagina 33 Slides 2.
3 Slides 3
a11x1 + a12x2 + ... + a1nxn = b1.
a21x1 + a22x2 + ... + a2nxn = b2.
........................................................................................
am1x1 + am2x2 + ... + amnxn = bm.
Da cui si può ottenere la matrice A associata al sistema, il vettore x delle incognite, e il vettore b dei termini noti. Quindi si può scrivere il sistema come: Ax = b.
Esempi da pagina 4 Slides 3.
3.1 Norma di un vettore
La norma di un vettore è un’applicazione che a un vettore associa un numero reale.
|| · || : Cn −→ R+0.
Definizione:
- 1. ||x|| ≥ 0 ∀x ∈ Cn, ||x|| = 0 ↔ x = 0.
- 2. ||αx|| = |α| ||x|| ∀x ∈ Cn, ∀α ∈ C.
- 3. ||x + y|| ≤ ||x|| + ||y|| ∀x, y ∈ Cn.
Le funzioni norma più comunemente usate sono:
||x||1 = Σi=1n |xi|, norma 1.
||x||∞ = max1 ≤ i ≤ n |xi|, norma infinito.
||x||2 = √(Σi=1n |xi|2), norma 2.
Algoritmo pagina 12 Slides 3.
3.2 Norma di una matrice
La norma di una matrice è un’applicazione che a una matrice associa un numero reale.
|| · || : Cn×n −→ R+0.
Definizione:
- 1. ||A|| ≥ 0 ∀A ∈ Cn×n, ||A|| = 0 ↔ x = Ω.
- 2. ||αA|| = |α| ||A|| ∀A ∈ Cn×n, ∀α ∈ C.
- 3. ||A + B|| ≤ ||A|| + ||B|| ∀A, B ∈ Cn×n.
Le funzioni norma più comunemente usate sono:
||A||1 = max1 ≤ j ≤ n Σi=1n |aij|, norma 1.
||A||∞ = max1 ≤ i ≤ n Σj=1n |aij|, norma infinito.
||A||2 = √(ρ(ATA)), norma 2.
Dove ρ è il raggio spettrale cioè il massimo tra gli autovalori in modulo.
Algoritmo pagina 12 Slides 3.
3.3 Relazioni tra norma di vettore e di matrice
Compatibilità tra norma di vettore e di matrice:
||Ax||∞ ≤ ||A||∞ ||x||∞.
Norma di vettore 1, 2 e ∞ sono compatibili con una norma 1, 2 e ∞ di una matrice.
3.4 Condizionamento di un sistema lineare
K(A) = ||A|| ||A−1||.
In MATLAB, cond(A) fornisce in output l’indice di condizionamento del sistema Ax = b.
Da pagina 19 Slides 3.
3.5 Metodi numerici per la risoluzione di sistemi di equazioni lineari
Da pagina 22 Slides 3.
3.6 Metodi diretti per la risoluzione di sistemi lineari
Sono dei metodi basati sulla trasformazione del sistema in uno equivalente che ha una struttura più semplice, e quindi è più facile calcolare la soluzione in un numero finito di passi.
Vengono usati per sistemi di dimensioni non troppo grandi e con la matrice del sistema piena, cioè con la maggior parte degli elementi diversi da zero.
3.7 Metodo di eliminazione di Gauss (MEG)
Il Metodo di eliminazione di Gauss trasforma in n-1 passi il sistema lineare A x = b, A ∈ Rn×n, x, b ∈ Rn×1, det(A) ≠ 0, in una matrice dei coefficienti triangolare superiore. Ha un costo computazionale O(n3/3).
Formule generali:
Per k = 1, 2, ..., n-1 e i = k+1, k+2, ..., n.
mik = aik(k) / akk(k).
aij(k+1) = aij(k) − mik akj(k).
bi(k+1) = bi(k) − mik bk(k).
Esempio da pagine 16 Slides 4.
Algoritmo Gauss (prima versione).
Input: A, n.
Output: An, bn.
- Ripetere per k = 1, n-1.
- Ripetere per i = k+1, n.
- mik = aik / akk.
- Ripetere per j = k+1, n.
- aij = aij − mik akj.
- bi = bi − mik bk.
3.8 Metodo di Gauss con pivoting parziale
Se akk(k) = 0 si cerca un r ≥ k tale che |ark(k)| = maxk≤s≤n |ask(k)|.
Cioè si scambia la riga k-esima con la riga r-esima. Conviene, ad ogni passo k, usare questa tecnica, anche se akk(k) ≠ 0 perché aumenta la stabilità numerica.
Esempio da pagina 34 Slides 4. Codice pagina 36 Slides 4.
4 Slides 4
4.1 Fattorizzazioni
Il sistema Ax = B viene risolto operando una fattorizzazione della matrice A = BC.
Questo significa che BCx = b e cioè che: Cx = y e By = b.
4.2 Fattorizzazione LU
La scelta delle matrici B e C caratterizza la fattorizzazione LU. Avremo che:
B = L, L è triangolare inferiore.
C = U, U è triangolare superiore.
A = LU.
La matrice A, con elementi a11, a12, a13, ..., a1n; a21, a22, a23, ..., a2n; ...; an1, an2, an3, ..., ann, viene espressa come prodotto tra la matrice L e la matrice U.
La matrice L ha elementi 1 sulla diagonale principale, elementi l21, l31, l32, ..., ln1, ln2, ln3, ..., e la matrice U ha elementi u11, u12, u13, ..., u1n; u22, u23, ..., u2n; u33, ..., u3n; ...; unn.
Si può notare che la matrice L ha tutti uno sulla diagonale principale e che la prima riga della matrice U è uguale alla prima riga della matrice A.
Questa fattorizzazione è possibile se det(Ak) ≠ 0. Dove Ak è la sottomatrice di ordine k.
Gli elementi di L e U si ottengono dall’uguaglianza A = LU.
Come si procede con il calcolo?
Essendo che prima riga di U è sempre uguale alla prima riga di A. Per la seconda riga si avrà:
a21 = l21u11 → l21 = a21 / u11.
a22 = l21u12 + l22u22 → u22 = a22 − l21u12.
a2n = l21u1n + l22u2n → u2n = a2n − l21u1n.
Iterando si arriva alla conclusione che l’elemento amn è dato dalla somma dei prodotti degli elementi della riga m della matrice L per gli elementi della colonna n della matrice U, il normale prodotto riga per colonna.
In definitiva possiamo dire che:
uij = aij − Σk=1n−1 likukj.
Quindi in generale si avrà che:
uij = aij − Σk=1i−1 likukj, j = i, ..., n.
lij = (aij − Σk=1j−1 likukj) / ujj, j = 1, ..., i − 1.
4.3 Applicazioni della fattorizzazione
Soluzione di un sistema lineare.
Ax = b −→ LUx = b.
Ly = b, sistema triangolare inferiore.
Ux = y, sistema triangolare superiore.
Una volta fattorizzata A la soluzione del sistema si ottiene risolvendo i due sistemi triangolari.
Se si devono risolvere più sistemi lineari aventi la stessa matrice dei coefficienti, si fattorizza una sola volta A e per ogni vettore b si risolvono i due sistemi triangolari.
Calcolo del determinante di A.
det(A) = det(LU) = det(L) det(U), teorema di Binet.
Sapendo che det(L) = 1 si avrà che:
det(A) = det(LU) = det(U) = Πk=1n ukk = a11(1) a22(2) ... ann(n).
4.4 Applicazioni della fattorizzazione pt. 2
La matrice inversa di una matrice A non singolare è la matrice A−1 tale che:
A A−1 = I.
Si ricordi che I = E1, E2, ..., En, dove Ei sono vettori della base canonica.
Quindi:
A−1 = X1, X2, ..., Xn.
A Xi = Ei.
Dove Xi sono le colonne di X che è la matrice inversa.
Conoscendo la fattorizzazione di A basta risolvere gli n sistemi lineari, cioè:
L Yi = Ei, U Xi = Yi, i = 1, 2, ..., n.
4.5 MEG e fattorizzazione LU
Il metodo di eliminazione gaussiana si basa sull’idea di ridurre il sistema Ax = b ad un sistema equivalente della forma Ux = b, dove U è triangolare superiore e b è un nuovo termine noto. Questo sistema può essere risolto con il metodo delle sostituzioni all’indietro.
Indichiamo il sistema originario come A(1)x = b(1). Per ottenere il sistema equivalente utilizzeremo il metodo di Gauss.
Consideriamo una matrice A ∈ R, non singolare, e supponiamo che l’elemento diagonale a11 sia non nullo.
Quindi:
mi1 = ai1(1) / a11(1), i = 1, 2, ..., n.
Dove aij(1) sono gli elementi di A(1). È possibile eliminare l’incognita x1 da tutte le righe successive alla prima sottraendo dalla riga i-esima con i = 2, 3, ..., n la prima riga moltiplicata per mi1, eseguendo la stessa operazione per il termine noto. In generale si avrà che:
aij(2) = aij(1) − mi1a1j(1), i = 2, 3, ..., n.
bi(2) = bi(1) − mi1b1(1), i = 2, 3, ..., n.
Dove bi(1) sono le componenti di b(1) si avrà un sistema:
a11(1)x1 + a12(1)x2 + ... + a1n(1)xn = b1(1).
0x1 + a22(2)x2 + ... + a2n(2)xn = b2(2).
...
0x1 + an2(2)x2 + ... + ann(2)xn = bn(2).
Che indicheremo con A(2)x = b(2), equivalente a quello di partenza.
In modo analogo, possiamo trasformare il sistema in modo da eliminare l’incognita xi dalla righe i + 1, ..., n.
In generale si otterrà:
A(k)x = b(k), 1 ≤ k ≤ n.
Assunto che aii(i) ≠ 0 per i = 1, ..., k − 1. È evidente che per k = n si otterrà un sistema triangolare superiore.
A(n)x = b(n).
a11(1)x1 + a12(1)x2 + ... + a1n(1)xn = b1(1).
0x1 + a22(2)x2 + ... + a2n(2)xn = b2(2).
0x1 + 0x2 + ... + ann(n)xn = bn(n).
Possiamo indicare con U la matrice triangolare superiore A(n). Gli akk(k) vengono detti elementi pivotiali e devono essere non nulli. Per evidenziare le formule che consentono di trasformare il sistema k-esimo in quello k+1-esimo, per k = 1, ..., n-1 si assume che akk(k) ≠ 0 e definiamo il moltiplicatore:
mik = aik(k) / akk(k), i = k + 1, ..., n.
Quindi:
aij(k+1) = aij(k) − mikakj(k), i, j = k + 1, ..., n.
bi(k+1) = bi(k) − mikbk(k), i = k + 1, ..., n.
In generale:
M1A(1) = A(2).
M2A(2) = A(3).
A(3) = M2A(2) = M2M1A(1).
...
U = A(n) = Mn−1Mn−2...M1A(1).
Quindi si può scrivere:
U = A(n) = (Mn−1Mn−2...M1)A.
(Mn−1Mn−2...M1)−1 U = (Mn−1Mn−2...M1)−1 (Mn−1Mn−2...M1)A(1).
(Mn−1Mn−2...M1)−1 U = A(1).
Ponendo (Mn−1Mn−2...M1)−1 = L si ottiene:
LU = A(1).
Esempio da pagina 17 Slides 4.
4.6 Matrice simmetrica definita positiva
Sia A ∈ M(n, R), una matrice di ordine n a coefficienti reali e sia x ∈ Rn un generico vettore riga. La matrice è definita positiva se il prodotto xTAx è un numero positivo per ogni x diverso dal vettore nullo.
A = AT e xTAx > 0, ∀x ∈ Rn, x ≠ 0.
4.7 Criterio di Sylvester
Una matrice simmetrica è definita positiva se e solo se det(Ak) per k = 1,2,...,n e dove Ak sono le sottomatrici principali dell’ordine k.
4.8 Fattorizzazione di Cholesky
Data A = AT definita positiva, si avrà che:
A = L LT.
Per questo algoritmo basta fare il prodotto e uguagliare il risultato all’elemento aij.
Formule generali:
ljj = √(ajj − Σk=1j−1 ljk2).
lij = (aij − Σk=1j−1 likljk) / ljj.
Esempio da pagina 22 Slides 4.
Codice pagina 25 Slides 4.
4.9 Matrici sparse
Le matrici sparse sono matrici con predominanza di elementi nulli. Non esiste una definizione rigorosa di sparsità, la precedente è solo qualitativa.
La sp
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti di Metodi numerici
-
Appunti di Metodi numerici
-
Appunti e esercizi Metodi numerici per l'ingegneria navale
-
Appunti Metodi numerici completi