Estratto del documento

Appunti per il corso di calcolo numerico

Ingegneria informatica e delle telecomunicazioni

Anno accademico 2004-2005. Si precisa che i seguenti appunti sono estratti da quelli del corso di calcolo numerico della Professoressa R. Morandi. La presente versione ne costituisce infatti una versione rivista per i corsi di Ingegneria Informatica e delle Telecomunicazioni tenuti dalla Dott.ssa Costanza Conti. È importante che lo studente tenga presente che tali appunti costituiscono solo delle linee guida per la preparazione dell’esame. Tutti gli argomenti saranno discussi più in dettaglio a lezione (incluso gli esercizi relativi ad ogni argomento) e comunque sono rintracciabili in uno dei testi consigliati. Gli eventuali errori contenuti in questi appunti (di stampa e non) saranno senz’altro segnalati a lezione.

Testi consigliati

  • D. Bini, M. Capovani, O. Menchi: Metodi Numerici per l’Algebra Lineare, Zanichelli, Bologna, 1988.
  • D. Bini, R. Bevilacqua, M. Capovani, O. Menchi: Metodi Numerici, Zanichelli, Bologna, 1992.
  • G. Monegato: Fondamenti di Calcolo Numerico, Levrotto e Bella, Torino, 1998.

Algoritmi

Un algoritmo è:

  • Una successione finita di istruzioni assegnate in modo non ambiguo
  • La cui esecuzione consenta di passare da una situazione iniziale (dati) ad una situazione finale (risultati)
  • In un tempo finito

Requisiti fondamentali

  • Generalità (adatto a risolvere una classe di problemi)
  • Ottimalità (rispetto al tempo, al numero di operazioni, alla stabilità, ecc.)

Calcolare la somma di n numeri

  1. Leggi: n, a1, a2, ..., an
  2. Poni s = 0
  3. Per i = 1, 2, ..., n, poni s = s + ai
  4. Scrivi s
  5. Stop

Calcolare il prodotto di n numeri

  1. Leggi: n, a1, a2, ..., an
  2. Poni p = 1
  3. Per i = 1, ..., n, poni p = p × ai
  4. Scrivi p
  5. Stop

Determinare N, N > 0 mediante un procedimento iterativo

  1. Individua m, n > 0 tali che 22m < N < nm+n
  2. Calcola c = 2
  3. Se c = N, allora c = N → Stop
  4. Se c < N, sostituire c a m e tornare a 2
  5. Se c > N, sostituire c a n e tornare a 2

Nota Bene: il procedimento può non finire (es. N = 2), quindi non è un algoritmo

Criterio di arresto

Decidiamo di fermarci se 2|c - N| ≤ ε, ε > 0 è una tolleranza. C è un'approssimazione di N nei limiti del criterio di arresto scelto e della tolleranza scelta ε.

Algoritmo

  1. Leggi: N, m, n, ε
  2. Calcola c = (m + n)/2
  3. Se |c - N| ≤ ε, vai a 5
  4. Se c < N, poni m = c e vai a 2. Altrimenti poni n = c e vai a 2
  5. Scrivi c
  6. Stop

Nota Bene: rischio: [M, N] grande e/o ε piccolo potrebbero implicare troppo tempo di calcolo, quindi può essere una buona idea fissare un numero massimo di iterazioni.

Calcolo del valore di un polinomio in un punto α

P(x) = a0 + a1x + a2x2 + ... + anxn

Algoritmo (1)

  1. Leggi: n, a0, a1, ..., an; α
  2. Poni p = 1
  3. Poni s = a0
  4. Per i = 1, 2, ..., n, poni p = α · p, s = s + ai · p
  5. Scrivi s
  6. Stop

Operazioni: 2n moltiplicazioni, n addizioni

Formulazione di Horner

P(x) = (...((anx + an-1)x + an-2)... + a1)x + a0

Algoritmo (2)

  1. Leggi: n, a0, a1, ..., an; α
  2. Poni s = an
  3. Per i = n - 1, n - 2, ..., 0, poni s = s · α + ai
  4. Scrivi s
  5. Stop

Operazioni: n moltiplicazioni, n addizioni

Rappresentazione dei numeri

Sistemi di numerazione

  • Binario: cifre 0, 1
  • Ottale: cifre 0, 1, 2, 3, 4, 5, 6, 7
  • Decimale: cifre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Notazione posizionale:

Es. (123)10 = 1 × 102 + 2 × 101 + 3 × 100

In un elaboratore i numeri sono rappresentati in una base diversa da β = 10, quindi in generale sono necessari algoritmi di conversione.

Rappresentazione dei numeri interi

(am, am-1, ..., a1, a0), con ai, i = 1, ..., m cifre del sistema di numerazione 0 ≤ ai < β.

Numeri reali

Un numero reale x si rappresenta nella forma di virgola mobile normalizzata (V.M.N.):

b±0.a1a2...am β, a1 ≠ 0

Esempi:

  • 0.1471 → 0.1471 × 102
  • 337.1 → 0.371 × 103
  • 0.0371 → 0.371 × 10-1

Nota: x = 0 ha per convenzione mantissa = 0, caratteristica = 0.

Rappresentazione in macchina dei numeri interi

Un elaboratore dispone di un certo numero di bit per rappresentare i numeri (interi e reali).

Numeri interi:

Locazioni di 16/32 bit (più comuni)

  • 1 bit per il segno
  • Avendo a disposizione t bit, solo t-1 bit sono per la rappresentazione vera e propria

Qual è il massimo numero N rappresentabile con t bit?

Es: β = 10; N = 947584

t = 7 → 0 9 4 7 5 8 4 | {z } t = 5 → overflow

Nmax = 10t-1 - 1

Rappresentazione in macchina dei numeri reali

Segno, caratteristica, mantissa. Numeri reali di macchina: numeri con mantisse e caratteristiche rappresentabili esattamente con i bit a disposizione.

Il limite sulla caratteristica delimita l’ordine di grandezza dei dati.

Il limite sulla mantissa caratterizza la precisione.

Precisione

Il numero di cifre che l’elaboratore riserva alla mantissa dei numeri reali (m) determina la precisione con la quale l’elaboratore lavora. Se x ≠ 0 è un numero reale tale che la sua rappresentazione in v.m.n. richiede più di m cifre di mantissa:

x = ±0.a1a2...amam+1...am+i β, a1 ≠ 0

In questo caso x viene approssimato, cioè viene sostituito da un numero reale ad esso vicino che è chiamato fl(x) (floating di x).

La determinazione di fl(x) può avvenire mediante:

  • Troncamento: fl(x) = ±0.a1a2...am β
  • Arrotondamento: fl(x) = ±0.a1a2...(am + 1) β, se am+1 ≥ β/2

Esempio

β = 10, m = 5

x = 0.9345781 × 103

Tronc. → fl(x) = 0.93457 × 103

Arr. → fl(x) = 0.93458 × 103

Errori nella rappresentazione

Si definisce:

  • Errore assoluto: eA = |x - fl(x)|
  • Errore relativo: eR = |x - fl(x)| / |x|

Esempio

β = 10, m = 4

Tronc/Arr

  1. x = 0.5895 × 105, fl(x) = 0.5895 × 105
  2. |x - fl(x)| = 0.00004 × 105 = 0.4 × 10-3
  3. eA = 0.4 × 10-3
  4. eR = 0.4 × 10-3 / 0.58954 × 105

Il numero di cifre che l’elaboratore riserva alla mantissa dei numeri reali (m) determina la precisione con la quale l’elaboratore lavora. Se x ≠ 0 è un numero reale tale che la sua rappresentazione in v.m.n. richiede più di m cifre di mantissa:

x = ±0.a1a2...amam+1...am+i β, a1 ≠ 0

In questo caso x viene approssimato, cioè viene sostituito da un numero reale ad esso vicino che è chiamato fl(x) (floating di x).

La determinazione di fl(x) può avvenire mediante:

  • Troncamento: fl(x) = ±0.a1a2...am β
  • Arrotondamento: fl(x) = ±0.a1a2...(am + 1) β, se am+1 ≥ β/2

Viene fatto lo stesso tipo di operazione su x e y con lo stesso risultato. L’errore relativo è lo stesso, ma l’errore assoluto non è lo stesso.

L’errore assoluto è influenzato dall’ordine di grandezza del dato. L’errore relativo non è influenzato dall’ordine di grandezza del dato. L’errore relativo dà indicazioni sull’approssimazione operata sulla mantissa del dato, ovvero sulla accuratezza (o precisione) con cui il dato è approssimato.

L’errore relativo non dipende dalla caratteristica, ma dipende dalla mantissa.

Precisione di macchina

Limitazione superiore degli errori relativi:

  • Se si opera per troncamento: |x - fl(x)| / |x| ≤ β1-m, ∀x ≠ 0
  • Se si opera per arrotondamento: |x - fl(x)| / |x| ≤ β1-m / 2, ∀x ≠ 0

La quantità β1-m o β1-m / 2 è detta precisione di macchina e viene di solito indicata con il simbolo εm. Più avanti vedremo un algoritmo per determinarla.

Aritmetica finita

Dati e risultati sono memorizzati con un numero finito di cifre (m) di mantissa e qualunque operazione viene effettuata con un numero finito di cifre (m) di mantissa.

Nota: risultati temporanei delle operazioni sono memorizzati in apposite locazioni con più cifre di mantissa, ma in ogni caso il numero è finito (si effettua un troncamento/arrotondamento).

Le 4 operazioni effettuate su numeri di macchina non producono necessariamente un numero di macchina, quindi il risultato deve essere trasformato nel suo floating.

Quindi:

  • x + y si scrive x ⨁ y e fl(fl(x) + fl(y))
  • x - y si scrive x ⨉ y e fl(fl(x) - fl(y))
  • x × y si scrive x ⨀ y e fl(fl(x) × fl(y))
  • x/y si scrive x ⟋ y e fl(fl(x) / fl(y))

Operazioni in macchina

Somma algebrica di due numeri reali

  1. Si trasforma il numero con caratteristica minore in modo che i due numeri abbiano la stessa caratteristica (uno dei due perde la forma v.m.n.);
  2. Si sommano le mantisse (lasciando invariate le caratteristiche);
  3. Si ricava il floating del risultato (si rinormalizza il numero troncando o arrotondando se necessario)

Prodotto/Divisione di due numeri reali

  1. Si producono/dividono le mantisse e si sommano/sottraggono le caratteristiche
  2. Si fa il floating del risultato (si rinormalizza il numero troncando o arrotondando se necessario)

β = 10, m = 4, b = 2, tronc. x = 10-1, y = -0.000540-3

fl(x) = 0.1000 × 100, fl(y) = -0.5400 × 100
x ⨁ y = 0.1000 × 100 ⨉ 0.0005 × 100 = 0.0995 × 100 = 0.9950 × 10-3
x ⨀ y = 0.1000 × 100 ⟋ (-0.0005) × 10-3 = -0.5 × 10-4

Alcune conseguenze della precisione finita

Per le operazioni di macchina valgono ancora le proprietà delle quattro operazioni aritmetiche? Spesso no.

  • Non vale la proprietà associativa
  • Non vale la proprietà distributiva
  • Vale la proprietà commutativa

Formule o algoritmi matematicamente equivalenti (che portano allo stesso risultato se applicati in aritmetica esatta) possono produrre risultati diversi in aritmetica finita. Lo studio degli errori di arrotondamento e della loro propagazione attraverso gli algoritmi è di fondamentale importanza per poter interpretare e valutare i risultati di un qualunque algoritmo che operi con numeri reali.

Esempio

β = 10, m = 4, fl(x) per troncamento

ε = 10-3 ← ε = β-m ma = 2000, b = 2.5, c = 7.84
(a ⨁ b) ⨁ c = (0.2000 × 104 ⨁ 0.2500 × 104) ⨁ 0.7800 × 101
= (0.2000 × 104 ⨁ 0.00025) ⨁ 0.7800 × 101
= 0.2002 × 104 ⨁ 0.7800 × 101
= 0.2002 × 104 ⨁ 0.00078
a ⨁ (b ⨁ c) = 0.2000 × 104 ⨁ (0.2500 × 104 ⨁ 0.7800 × 101)
= 0.2000 × 104 ⨁ 0.1030 × 104
= 0.2000 × 104 ⨁ 0.00103 × 103
= 0.2010 × 104

(a + b) + c = a + (b + c) = 2010.3; (a ⨁ b) ⨁ c ≠ a ⨁ (b ⨁ c)

Note: errori assoluti 2010.3 - 2009 = 1.3; errori relativi 1.3/2010.3 ≈ 10-3

Nota: risultati diversi ma accettabili nei limiti della precisione usata.

Importante

Il concetto di uguaglianza va modificato quando si lavora sui numeri reali in precisione finita. Risultati diversi possono essere considerati uguali nei limiti della precisione usata. Due numeri sono uguali quando hanno uguale caratteristica e uguale mantissa. Due numeri sono da considerarsi uguali quando la loro differenza è piccola rispetto alla precisione di macchina.

Ovvero due numeri a, b in precisione finita sono da considerarsi uguali quando |a - b| ≤ ε dove ε è un numero, detto tolleranza, il cui valore dipende dalla precisione di macchina.

Quindi

Nell’esempio del punto medio i due numeri a = 0.651 e b = 0.653 potevano essere considerati uguali. Infatti |b - a| = 2 × 10-3 e ε = 10-m.

Nota Bene: gli stessi numeri non potrebbero essere considerati uguali se fosse ε = 10-8.

Se il risultato di un algoritmo in precisione infinita è zero e l’algoritmo realizzato in precisione finita dà un risultato diverso da zero ma piccolo, non possiamo concludere che l’elaboratore abbia sbagliato.

Se un algoritmo prevede un controllo sull’uguaglianza tra due reali dobbiamo fare molta attenzione nel realizzarlo in un programma. a = b → |a - b| ≤ ε

Il valore ε deve essere scelto tenendo conto della precisione di macchina e, in generale, da considerazioni indotte dal contesto.

Algoritmo per il calcolo di εm

La conoscenza di ε è fondamentale per valutare i risultati e scegliere le tolleranze. Serve un algoritmo per calcolarla. Idea su cui può essere basato l’algoritmo:

β = 10, m = 8, troncamento → ε = 10-7 = β-m
calcoliamo fl(1 + 10-6), fl(1 + 10-7), fl(1 + 10-8)
fl(1 + 10-6) = 0.10000000 × 101 ⨁ 0.10000000 × 101 = 0.10000010 × 101
fl(1 + 10-7) = 0.10000000 × 101 ⨁ 0.10000000 × 101 = 0.10000001 × 101
fl(1 + 10-8) = 0.10000000 × 101 ⨁ 0.10000000 × 101 = 0.100000001 × 101

ε è la più piccola potenza della base β = 10 che viene sentita in macchina se sommata a 1.

Algoritmo per determinare ε in base β

fl(1 + β-p) ≠ fl(1) → ε = β-p-1

  1. Poni εm = 1
  2. Poni εm = β × εm
  3. Poni a = 1 + εm
  4. Se a > 1 vai a 2. Altrimenti vai a 5.
  5. Poni εm = β × εm
  6. Stampa εm

Considerazioni sulle quattro operazioni aritmetiche

Supponiamo di effettuare operazioni esatte. Prodotto:

fl(x1) fl(x2) = x1x2(1 + ε1) × x2(1 + ε2)
= x1x2 - x1x2ε1 - x1x2ε2
Anteprima
Vedrai una selezione di 21 pagine su 100
Calcolo Numerico Pag. 1 Calcolo Numerico Pag. 2
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 6
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 11
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 16
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 21
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 26
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 31
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 36
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 41
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 46
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 51
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 56
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 61
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 66
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 71
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 76
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 81
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 86
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 91
Anteprima di 21 pagg. su 100.
Scarica il documento per vederlo tutto.
Calcolo Numerico Pag. 96
1 su 100
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Calcolo Numerico e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Firenze o del prof Fantechi Alessandro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community