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.
vuoi
o PayPal
tutte le volte che vuoi
METODI ANALITICI E NUMERICI
PARTE II → CALCOLO NUMERICO
- INTRO ANALISI NUMERICA
- Rappresentazione macchina dei num. reali
def.: IF = insieme dei numeri FLOATING-POINT (numeri reali rappresentabili al calcolatore)
x ∉ F
fl(x) =: rappresentare floating point di x (se x ∉ IF)
F = F0 ∪ {∞}
oss. dim {F0?} ⊂ +∞
x ∈ F0 → x = (-1)s m βe-t
= (-1)s (a1, a2, ..., at) βe-t
β = BASE (decimale → β = 10, binario β: 2)
m = MANTISSA
ai ∈ cifre
e = esponente, e ∈ N, e ∈ [L, U] (L < 0, U > 0)
λ = segno =: → 0 → no positivo [(-1)-1] 0 o
1 → no negativo
[primo cifra (si assume diversa da 0)]
0 ≤ ai ≤ β-1
0 ≤ i2, i = 2, ..., t
oss Xmin = β-1 e no min + piccolo rappresentabile (accetto lo 0)
Xmax = βt(1-β-t) → no grande rappresent.
Numero elementi F0 = 2(β-1) βt-1(-L+U+1)
2) EPSILON MACCHINA εM = β1-t
è il piú piccolo numero tale che fl(1+εM) > 1
DEF. ERRORE DI ARROTONDAMENTO
|X - fl(X)| ≤ 1/2 εM |X|
dist. relativa tra numero reale e nro rappto macchina
ESEMPIO
F0(2, 2, -1, 2)
β = t = L = U
εM = β1-t = 2-t = 1/2
XMIN = βL-1 = 2-2 = 1/4 < εM
(!) Il calcolatore conta ordine delle operazioni!
1+1/4+1/4 → 1/2 → 1/= 1 → 1/
1+(1/4+1/4) → 1/2 → 1/2+1 → 3/2
OSS fl(1+fl(X)) è rappr. di 1+X
→ ordine è importante perché il calcolatore approssima i numeri
MANTISSA
t = 2 → M = q = a2
0 ≤ α = β-1 = 2-1 = 1
0 ≤ e-1 < 1
c = 1
es e [1, U] = [1, 2]
c = -1 0 1 2
m = 1/4 1/2 1 2
in: 3/8 3/4 3/2 3
In pratica sono n "cifre" che si ottengono facendo (−1)L (cioè β−L)
(conv. daremmo 1→∞ numeri positivi)
A =
a11a12...a1na21a22...a2n............an1an2...annX =
x1x2.xnb =
b1b2.bnScrittura in forma algebrica
CRAMER:
Xi = det(Ai')/det(A)
(3n+1 - 1)!
CALC:
nCPU 1 GHz103 GHz106 GHz10~1~10-4s~10-7s15~17 h~1 min~1.5 s205000 anni~5 anni~2 giorni25--~40000 anni
OSS → AX = B → X = A-1B
METODI:
- Metodi diretti → Risolvono sist. lineare in n° finito di passaggi
- Metodi iterativi → Ottengono soluz. X in n° infinito
Calcolo matrice inversa inefficiente → NON SI FA!
OSS AX = b1. Con b2 ≠ b1 stessa matrice A!
- ← è solo di teoria, tutto deve fare solo con avanti e all'indietro
L1y1 = b1 e poi Ux1 = y1
[Le matrici L e U le ho già in MATLAB e immagino in memoria]
OSS det(A) = ?
A = L・U → det(A) = det(L)・det(U) =
∏i=1n uii
- tutti ella (già triangolare)
- stima = O(2/3n3)
A = L・U →
sulla diagonale primi di somma di elementi di U
del A ε Rnxn E:
- simmetrica ↔ A = AT TRASPOSTA
- definita positiva ↔ xTAx> 0 ∀ x ε Rn
- a dominanza diagonale per righe ↔ |aii| ≥ ∑j≠i|aij| ∀ i = 1,...,n
↻ &arr; se ↻ IN MODULO
a dominanza diagonale per colonne ↔ |ajj|≥ ∑i≠j|aij| ∀ j = 1,...,n
- a dominanza stretta se
↻ e simmetrica
A =|5 -1 34 6 20 -5 1
- 5 > |-4| + 3 = 4
- 6 > 9 + 12 = 6
- |0| + |-1| + 5
↔ Dominanza diagonale
(NON STRETT☆x righe)lim K→∞ ||BK|| = 0 ⇔ lim N→∞ BK = O ⇔ ρ(B) < 1
matrice nulla
Prop Condiz. necessaria e sufficiente :
Metodo iterativo converge alla sol. esatta x̄ di Ax̄ = b̄ per ogni scelta del vettore iniziale x(0)∈ℝn ⇔ ρ(B) < 1
inoltre la convergenza è tanto + rapida tanto minore è il valore ρ(B)
(matrice di iterazione)
Come scelgo B ? → Metodi di splitting
Per ℝn×n, non singolare → Matrice di precondizionamento (o precondizionatore)
A = P - P-1B
A x̄ = b̄ → P x̄ = (P - A)x̄ + b̄ → x̄ = P-1(P - A)x̄ + ρ-1b̄
Splitting = Scomposizione additiva della matrice A
B = I - P-1A ; ỹ = P-1b
p(k+1) = (P-A)(k) + p , k = 0,1, ...
p(k+1) + (k) = p(k) - A(k) ⟺ (k) = P-1(b̄ - A(k)) = ρ-1(k)
(k) ∈ ℝn
residuo precondizionato
OSS ̅(k+1) = b̄ - A̅(k+1) = b̄ - A[I - ρ-1A](k) + ρ-1b̄ =
= [b̄ - A(k)] + Aρ-1AX(k) - Aρ-1b =
= [b̄ - A(k)] + ρ-1AX(k)
p(k+1) = p - (p - (pAx(k) - b̄)) =
= - A [ p-1(b̄ - A(k))]
sist. lineare "facile" sist. lineare "difficile"
K(A-1) ≈ 1 K(P-1A) ≈ 1
K(A) + 1 K(P-1A) + 1 ≈ 0
↓ convergenza lenta ↓ convergenza in 1 iterazione
↓ molto conv. veloci
Devo scegliere loro compromesso quando il C condizionamento K sa piccolo
Metodo del gradiente →
solo se AT simmetrica e def. positive
Metodo gradiente → P = I e αk = ( r(k)T r(k) ) / ( r(k)T A r(k) )
(Metodo di Richardson direzione — k non varia con k)
Metodo gradiente precondizionato, P ∈ Rn simm. e def.
via the αk = ( z(k)T r(k) ) / ( z(k)T A z(k) )
Metodo di Richardson direzione di precondiz.
k = 0, 1, 2, ...
→ USO RESIDUO PRECONCILIO ζ(k)
Algoritmo (Gradiente)
- Dato x(0), r(0) = b - Ax(0)
- Per k = 1, 2, ... (fino a un certo errore)
→ αk = ( r(k) r(k) ) / ( r(k) A r(k) )
x(k+1) = x(k) + αk r(k)
r(k+1) = r(k) - αk A r(k)
Algoritmo (Gradiente precondiz.)
- Dato x(0) e scelto P
z(0) = calo.
Per k = 0, 1, ...
→ Risolvo P z(k) = r(k)
αk con k 2 (v. sopra punto in rosso)