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
CALCOLO NUMERICO
ALGORITMI
Definizione qualitativa: un algoritmo è una sequenza finita di istruzioni che date n variabili di partenza permette di fornire una soluzione a un calcolo risolvibile in un tempo finito.
L’algoritmo quindi, oltre a restituire la soluzione si deve assicurare che darà il messaggio giusto dove quest’ultima dèboreva per permettere al calcolatore di capire.
I METODI sono algoritmi con tempi di risoluzione infiniti.
Gli algoritmi sono scritti nel METALINGUAGGIO, ovvero in una lingua non ambigua.
Un tipo di istruzione che apre l’algoritmo è allo stesso tempo chi lo chiude è quello di assegnazione: N := E, dove E è un’espressione matematica e N è una variabile numerica. Prima si calcola E e poi si memorizza il risultato con il nome della variabile N.
Algoritmo della somma di m numeri:
Dati a1, a2, ..., an, calcoliamo Σ ai = S
S := 0 (inizializzazione della variabile somma)
- Per i = 1, ..., mS := S + ai
Quando i = 1, S = 0 e S = 0 + a1
Quando i = 2, S = a1 S := a1 + a2
Quando i = m S := a1 + ... + am, S = a1 + ... + am
Per il prodotto di m numeri:P = a1, a2...am
P := 1 (elemento neutro)
- P := P · ai per i := 1, ..., m
Per calcolare il massimo tra n numeri:
Algoritmo - dati a1, a2, ..., an, calcolo M := max ai
Poi si confrontano gli elementi due a due M := a1
Per i := 1, ..., m (il primo confronto è tra M e A2)
Se M < ai allora M := ai (aggiorna il valore del massimo)
Quando arriva a n ha trovato il massimo.
Queste algoritmi è applicabile a ogni problema simile. Gli algoritmi devono risolvere problemi con dimensione aritmetica.
Entrambi gli errori sono considerati senza segno, ma l'errore assoluto si rifà ad un ordine di grandezza di X, e l’errore relativo normalizza l'errore con la grandezza di X a cui si sta guardando. Quindi, l’errore relativo ci dà l’accuratezza dell’approssimazione.
es: X1 = 10
X2 = 1000
X’1 = 11 X’2 = 10001
L’errore assoluto Ea è 1 in entrambi i casi, ma
Er1 = 1/10 = 10-1
Er2 = 1/1000 = 10-4
RAPPRESENTAZIONE IN VIRGOLA MOBILE NORMALIZZATA (floating point)
Un qualunque numero in forma normalizzata è del tipo:
X = ±a1a2 ... as · 10E
L’ipotesi fondamentale per questo standard è che sia:
0 < ai ≤ 9 e a1 ≠ 0
Grazie a questo standard posso scrivere i numeri in modo univoco.
es: 27,43 in forma normalizzata è 0,2743 · 102
0,00833 in forma normalizzata è 0,833 · 10-3
La sequenza delle cifre dopo la virgola si chiama MANTISSA, e viene moltiplicata per la caratteristica, che nella rappresentazione normalizzata è unica.
esempio: prendo i due numeri X1 = 583,54 e X2 = 0,0058354, tali che X2 = 0,000058350
I due rappresenti in virgola mobile normalizzata:
X1 = 0,58350 · 105 X’1 = 0,58350 · 105
X2 = 0,5835 · 10-2 X’2 = 0,58350 · 10-2
X̄ e X̂ hanno stessa caratteristica e mantissa uguale tranne l’ultima cifra.
Ea1 = Ea2 = 4 · 10-5 —> l’errore assoluto è molto diverso
Er1 = Er2 = 7 · 10-5 —> l’errore relativo è uguale.
La grandezza dell’errore relativo ci dice quante cifre sono accurate nel numero.
Nelle situazioni reali conosciamo X̄ e non X, quindi X̄ deve essere più accurate possibile.
CIFRE SIGNIFICATIVE
Sono le cifre sicuramente attendibili in X̄. Se X e X̄ sono espressi in virgola mobile normalizzata e :
|X - X̄|/|X| ≤ 10-k
allora X̄ approssima X̄ con k cifre significative (certe, esatte, attendibili).
Queste cifre significative possono essere non esatte rispetto a X ma sicuramente attendibili.
La tolleranza negli strumenti è la precisione con cui lo strumento effettua misure.
-54-
Epsilon di macchina
È il piú piccolo numero positivo che sommato a 1 rende un numero diverso da 1.
1⊕εps=1
Se: 0<ε≤εps 1⊕ε≠1
Es: 0,100010⊕0,50010≠0,310; 0,100110⊕010-4 per la regola dell'errore
0,0000510 ⬅ EPS
Proprietà della macchina
- ⎜(a⊙b)-(a⊗b)⎟≤εm ⎜a⊙b⎟⎜a⊙b⎟
- ⎜(a/b)-(a⊗b)⎟≤εm (a≠0 b≠0)⎜a/b⎟
valgono solo per i numeri in macchina
- si esegue il prodotto o la divisione tra le mantisse e si somma (per il prodotto) o si sottraggono (per la divisione) le caratteristiche
- si ricava il floating del risultato
Esempio: β=10, m=3, metodo del troncamento, εm=10-2
- 0,3210 ⊙ 0,302⋅10 110 ⊙ 0,459⋅10 -10,058010⋅10-2
- 0,15210⋅10-1 ⊙ 0,210⋅10-1 = 0,210⋅10-10,165⋅10-110 ⬅ 0,1652173⋅10-3
In macchina a causa delle approssimazioni piú succedere che:
- a⊗b = a onde se b≠0
La proprietá associativa non é garantita.(a⊙b)⊙c ≠ a⊙(b⊙c)
Stabilità di un algoritmo
Un algoritmo si dice stabile se restituisce risultati accurati nei limiti della precisione di macchina, altrimenti instabile.
Per esempio: per un ε=10-16 un algoritmo é stabile se restituisce un risultato con inaccuratezza comparabile con 10-16 indipendentemente da come si sono propagati gli errori.
La norma che propaga meno l'errore di arrotondamenti é quella infinita.
- |g(Xk)| ≪ 1 con εm ≪ γ ≪ 1 con γ tolleranza ≅ 10-3
- |Xk+1 + Xk| ≤ |1 - μ|k ⇒ non vale se g'(Xk) è abbastanza vicino a zero: distanza tra due iterate troppo piccola.
ALGORITMO: dati X0, kmax e ε
Per k = 0, 1, ..., kmax
- Calcola g(Xk) e g'(Xk). Se g'(Xk) = 0 stop
- Definisci Xk+1 = Xk + g(Xk)/g'(Xk)
- Se |g(Xk+1)| ≤ ε stop oppure se |Xk+1 - Xk| ≤ ε|Xk| + γ stop
APPROSSIMAZIONI DI DATI E DI FUNZIONI
Ci approcciamo al problema di avere un insieme discreto di punti e di cercare una funzione che li approssima.
INTERPOLAZIONE:
vuol dire passare per i nodi (punti). Questo problema fu conosciuto già ai tempi di Newton. Se abbiamo da i = 0, ..., m (quindi m + 1 punti) tali che Xi, Xj se i ≠ j.
I nodi (le ascisse) sono due a due distinti.
Bisogna trovare una funzione tale che g(Xi) = Yi ∀i tra 0 e m, per tutti i punti.
Posso applicare l'interpolazione per due situazioni:
- Yi = g(Xi) ma la funzione g(x) è incognita, non ho la sua forma esplicita.
- Se è l'inverso: dai nodi e mi serve g(x) approssimo il valore di g(x) con g(x) dove g(x) è costruita.
g(x) ≅ g(Xi) (g è noto solo per i punti)
Conosco la forma analitica di g ma non riesco a fare un'operazione per il tipo di interesse. Sostituisco g e la approssimazione che riesco a integrare.
∫g(x)dx ≅ ∫g(Xi)dx
INTERPOLAZIONE POLINOMIALE:
sostituisco alla funzione un polinomio. Se ho m + 1 punti sui quali passa la funzione, mi cerco il polinomio di grado al più m che passa per tutti.
Trovare il polinomio di grado al più m (potrebbe essere più piccolo) tale che Pm(Xi) = Yi con i = 0, ..., m.
Se ho due punti cerco una retta, se ne ho tre una parabola.
Pm(x) = a0 + a1x + a2x2 + ... + amxm con:
- Pm(X0) = Y0
- Pm(X1) = Y1
- Pm(Xm) = Ym
n + 1 condizioni e n + 1 incognite.
-15