Metodi Numerici

Embed Size (px)

DESCRIPTION

Appunti di metodi numerici

Citation preview

  • 7/15/2019 Metodi Numerici

    1/294

    Universit di Torino

    QUADERNI DIDATTICIdel

    Dipartimento di Matematica G. Peano

    Quaderno # 47 Settembre 2010

    MARIA GARETTO

    Metodi Numerici

    Corso di Laurea Magistrale in Informatica

    A.A. 2010/2011

  • 7/15/2019 Metodi Numerici

    2/294

  • 7/15/2019 Metodi Numerici

    3/294

    A Irene

  • 7/15/2019 Metodi Numerici

    4/294

  • 7/15/2019 Metodi Numerici

    5/294

    Prefazione

    Dipartimento di Matematica

    i

    Prefazione

    In questo quaderno sono state raccolte le lezioni del corso di Metodi Numerici per il Corso di

    Laurea Magistrale in Informatica presso lUniversit di Torino.

    Obiettivo del testo di fornire unintroduzione teorica ai principali metodi numerici per risolvere

    problemi di algebra lineare numerica, interpolazione e approssimazione, integrazione e equazioni

    differenziali; ogni argomento esaminato negli aspetti teorici accompagnato da numerosi esempi

    svolti nei dettagli, in modo da consentire agli studenti di acquisire la capacit di applicare in modo

    corretto i metodi numerici trattati.

    Il corso di Metodi Numerici prevede unattivit di laboratorio in cui viene utilizzato il software

    scientifico Matlab, con il quale pu essere ulteriormente approfondito ogni aspetto applicativo dei

    metodi illustrati; per alcuni di essi sono riportati nel testo gli algoritmi in pseudocodifica, utili come

    suggerimento agli studenti per il lavoro di laboratorio.

    I grafici presentati in questo testo sono stati realizzati con Matlab.

    Maria Garetto

    Dipartimento di Matematica

    Universit di Torino

    Torino, settembre 2010

  • 7/15/2019 Metodi Numerici

    6/294

    ii M. Garetto Metodi Numerici

    Universit di Torino

  • 7/15/2019 Metodi Numerici

    7/294

    M. Garetto - Statistica

    Quaderni Didattici del Dipartimento di Matematica

    iii

    Indice

    Capitolo 1 Nozioni introduttive 1

    1.1 Modelli matematici 1

    1.2 Rappresentazione dei numeri e sistemi numerici 3

    1.3 Rappresentazione dei numeri in floating point 5

    1.4 Troncamento e arrotondamento 8

    1.5 Errore assoluto, errore relativo 10

    1.6 Aritmetica floating point 12

    1.7 Generazione degli errori nel computer 15

    1.7.1 Problemi del calcolo con i numeri reali 15

    1.7.2 Cancellazione numerica 17

    1.7.3 Calcolo del valore di una funzione 18

    1.7.4 Discretizzazione 191.7.5 Iterazione 20

    1.8 Tipi di errore 21

    1.9 Propagazione degli errori 21

    1.10 Problemi mal condizionati 22

    1.11 Algoritmi instabili 24

    1.12 Efficienza computazionale 29

    1.13 Codifica degli algoritmi 31

    Capitolo 2 Algebra lineare numerica 35

    2.1 Introduzione 35

    2.2 Operazioni fra vettori 35

    2.3 Operazioni fra matrici 372.4 Matrice trasposta 41

    2.5 Determinante 42

    2.6 Matrice inversa 43

    2.7 Norme di vettori e matrici 45

    2.8 Classificazione delle matrici 46

    2.9 Matrici speciali 47

    2.10 Soluzione di sistemi lineari: definizioni e propriet 49

    2.11 Metodi numerici per la soluzione di sistemi lineari 53

    2.12 Sorgenti di errore 54

    2.13 Condizionamento di un sistema lineare 54

    2.14 Metodi diretti 58

    2.15 Metodo di eliminazione di Gauss 622.16 Metodo di eliminazione di Gauss con pivoting 72

    2.17 Calcolo del determinante 78

    2.18 Calcolo della matrice inversa 79

    2.19 Fattorizzazione triangolare di una matrice 81

    2.20 Matrici di tipo particolare 93

    2.21 Metodi iterativi 94

    2.22 Metodo iterativo di Jacobi 95

    2.23 Metodo iterativo di Gauss-Seidel 101

    2.24 Autovalori e autovettori 108

    2.25 Localizzazione degli autovalori 120

    2.26 Metodi numerici per il calcolo degli autovalori 125

    2.27 Metodo delle potenze 126

  • 7/15/2019 Metodi Numerici

    8/294

    Indice

    Universit di Torino

    iv

    Capitolo 3 Interpolazione e approssimazione 133

    3.1 Introduzione 133

    3.2 Interpolazione polinomiale. Formula di interpolazione di Lagrange 134

    3.3 Errore per la formula di interpolazione di Lagrange 139

    3.4 Formula di interpolazione lineare 1423.5 Formula di interpolazione di Newton 145

    3.6 Polinomi di Chebyshev 151

    3.7 Convergenza delle formule di interpolazione 155

    3.8 Interpolazione con funzioni polinomiali a tratti 157

    3.9 Interpolazione trigonometrica 170

    3.10 Metodo dei minimi quadrati 176

    3.11 Regressione lineare 177

    3.12 Regressione polinomiale 183

    3.13 Metodi di linearizzazione 185

    Capitolo 4 Integrazione numerica 199

    4.1 Introduzione 1994.2 Formule di quadratura di tipo interpolatorio 200

    4.3 Formule di quadratura di Newton-Cotes di tipo chiuso 201

    4.4 Formula dei trapezi 202

    4.5 Formula di Simpson 203

    4.6 Formula di Simpson8

    3204

    4.7 Formule di quadratura composte 209

    4.8 Formule di quadratura di Newton-Cotes di tipo aperto 218

    4.9 Formula del punto medio composta 220

    4.10 Formule di quadratura gaussiane 223

    4.11 Metodo di estrapolazione di Richardson 234

    Capitolo 5 Equazioni differenziali ordinarie 239

    5.1 Introduzione 239

    5.2 Condizionamento di unequazione differenziale 242

    5.3 Metodi numerici per la soluzione di equazioni differenziali 247

    5.4 Metodo di Eulero 248

    5.5 Metodi di Runge-Kutta 259

    5.6 Metodi di Runge-Kutta di ordine due 260

    5.7 Metodo di Runge-Kutta di ordine quattro 267

    5.8 Metodi multistep 272

    Bibliografia 277Formulario F-1

  • 7/15/2019 Metodi Numerici

    9/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    1

    1. Nozioni introduttive

    1.1 Modelli matematici

    La matematica uno strumento per modellizzare il mondo reale: in forma schematica un modello

    la rappresentazione di un sistema o di un processo, ottenuta sostituendo con semplificazioni,

    astrazioni e analogie, al fenomeno reale un fenomeno in un campo pi familiare.

    In particolare, in un modello matematico tale rappresentazione fatta in termini di variabili,

    parametri e relazioni funzionali, che definiscono un problema matematico.

    In ogni settore scientifico o tecnologico, i modelli matematici che approssimano levolversi

    dellevento oggetto di studio consentono di simulare, e quindi prevedere, lo sviluppo del fenomeno

    senza dover effettuare fisicamente esperimenti complessi, costosi e in alcuni casi anche pericolosi.

    Ad esempio nella progettazione di un aereo la forma delle ali pu essere successivamente adattata,

    senza dover costruire alcun prototipo, in base ai risultati delle simulazioni numeriche fatte con il

    calcolatore; lo studio dellinquinamento ambientale, quale il propagarsi di una sostanza tossicanelle acque di un fiume, pu essere condotto mediante calcolatore con un adeguato modello

    matematico, senza dover realizzare, anche in forma ridotta, un reale pericoloso esperimento.

    Poich lo scopo della costruzione di un modello di chiarire mediante la sua analisi gli aspetti

    incogniti del fenomeno reale, condizione indispensabile affinch il modello sia utile che sia

    risolubile.

    Per un modello matematico, la risolubilit equivale a richiedere che il problema matematico

    associato risulti:

    ben posto: si deve poter stabilire lesistenza e lunicit della soluzione; ben condizionato: a piccole perturbazioni nei dati devono corrispondere piccole perturbazioninei risultati; tali perturbazioni possono essere dovute ad errori sperimentali o ad errori di

    arrotondamento nella rappresentazione numerica dei dati. In altre parole il modello deve possedere

    buone propriet riguardanti la propagazione degli errori.Il processo di risoluzione di un problema del mondo reale pu essere cos schematizzato: una

    prima fase di modellizzazione, in cui al problema reale si associa un modello matematico che lo

    approssima; una seconda fase in cui il modello matematico viene analizzato e da questo si ricavano

    propriet qualitative della soluzione, come esistenza, unicit, regolarit; una terza fase in cui si

    individuano dei metodi di risoluzione e se ne analizza lefficienza; infine una quarta fase in cui il

    metodo di risoluzione viene implementato su un calcolatore mediante un adeguato linguaggio di

    programmazione.

    Le propriet del modello matematico prima evidenziate danno un carattere di affidabilit al

    modello, ma non esauriscono il significato di risolubilit.

    Generalmente un modello matematico un modello continuo, ad esempio un sistema di equazioni

    differenziali, uno sviluppo in serie, un integrale; per il modello continuo, che in genere consente di

    individuare propriet qualitative della soluzione, quali esistenza, unicit, regolarit, non sempre

    per possibile determinare analiticamente la soluzione.

    Spesso poi la soluzione del problema matematico non data in forma esplicita, ad esempio

    mediante funzioni elementari, e comunque le sole propriet qualitative non sono sufficienti per gli

    scopi richiesti. In questo caso si presenta per il problema matematico una situazione analoga a

    quella che si ha per il problema reale; ossia, per conoscere il comportamento della soluzione del

    problema matematico, pu essere necessaria lintroduzione di un nuovo modello, che in questo

    caso si configura come una rappresentazione in dimensione finita, ottenuta mediante una

    discretizzazione del problema continuo.

    Il fatto che talvolta il modello discreto possa essere interpretato come un modello costruito a partire

    direttamente dal fenomeno reale non cambia la sostanza delle considerazioni che seguono.

  • 7/15/2019 Metodi Numerici

    10/294

    2 M. Garetto Metodi Numerici

    Universit di Torino

    Successivamente si presenta la necessit di risolvere algoritmicamente il problema matematico,

    cio di ottenere mediante un numero finito di operazioni aritmetiche e/o logiche una soluzione,

    spesso approssimata, ma adeguata alle richieste.

    Si parla cos di risoluzione numerica del problema, intendendo che la soluzione ottenuta

    calcolata a partire da un insieme finito di numeri, rappresentati con un numero finito di cifre,attraverso un numero finito di operazioni aritmetiche ed espressa ancora mediante un insieme

    finito di numeri.

    Il modello discreto o modello numerico presenta caratteristiche in parte simili a quelle viste per il

    modello continuo. In particolare, sono ancora propriet necessarie lesistenza, lunicit e la stabilit

    della soluzione.

    La sequenza di approssimazioni illustrata nello schema seguente

    In ogni passaggio da un blocco allaltro pu essere commesso un errore di approssimazione. Inoltre

    i risultati effettivamente ottenuti utilizzando il calcolatore sono alterati dagli errori generati dalle

    operazioni aritmetiche svolte con unaritmetica finita e dagli errori generati dalla rappresentazione

    dei dati con un numero finito di cifre.

    Questo processo di risoluzione di un problema del mondo reale sempre stato adottato anche nel

    passato: lultima fase era necessariamente risolta con carta e penna, e ci limitava lo sviluppo dei

    metodi numerici a quei metodi che potevano essere applicati con mezzi di calcolo solo manuali.

    Rimangono due importanti questioni da esaminare. La prima riguarda la capacit del modello

    discreto di descrivere il modello continuo o il modello reale. In altre parole si tratta di vedere se la

    soluzione discreta pu essere resa vicina quanto si vuole alla soluzione del problema continuo,

    ossia pi precisamente di esaminare la convergenza del metodo.

    Una questione collegata alla convergenza la stima dellerrore, che permette di stabilire la bont

    dellapprossimazione e fornisce un criterio di scelta di un particolare modello.

    Unaltra questione riguarda la scelta di un particolare algoritmo per risolvere effettivamente ilproblema numerico. Ad esempio se il modello numerico richiede la soluzione di un sistema lineare

    di equazioni, si pu scegliere fra pi algoritmi diversi: la scelta di un particolare algoritmo sar

    orientata sia dalle propriet della matrice dei coefficienti, che dallo strumento di calcolo a

    disposizione.

    Nella risoluzione di problemi di analisi matematica, che generalmente hanno natura continua,

    questo processo algoritmico, necessariamente discreto poich finito, si inquadra nel settore noto

    come analisi numerica.

    Obiettivo principale dellanalisi numerica trovare gli algoritmi che risolvono un problema

    matematico nel minimo tempo e con la massima accuratezza, di solito mediante un calcolatore.

    Lanalisi numerica ha assunto le caratteristiche di una disciplina autonoma solo con lintroduzione

    e luso dei calcolatori. La disponibilit di calcolatori programmabili, potenti e affidabili, uno tra i

    motivi pi importanti dello sviluppo delanalisi numerica ed una componente imprescindibile nelprogetto di un algoritmo; essendo legata ad aspetti tecnici in continuo sviluppo, quali velocit,

    Fenomeno naturale

    Modello matematico continuo Modello matematico discreto

    Metodo numerico di soluzione

    Soluzione

  • 7/15/2019 Metodi Numerici

    11/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    3

    capacit di memoria, possibilit di uso interattivo, di calcolo parallelo, pu suggerire nuovi

    orientamenti, rendere superati alcuni metodi, rivalutarne altri.

    Il grande interesse attuale verso lanalisi numerica dovuto, oltre che alla disponibilit di idonei

    strumenti di calcolo, anche allidea sempre pi diffusa che la matematica un utile strumento per lo

    studio del mondo reale. In questo senso lanalisi numerica un aspetto della matematica applicata e

    la conoscenza dei metodi numerici diventata un elemento indispensabile per tutti gli studiosi che

    operano nelle scienze applicate.

    In maniera schematica, si possono distinguere nellanalisi numerica i seguenti aspetti:

    la metodologia, che tratta la costruzione di algoritmi specifici, la loro efficienza,limplementazione per un particolare calcolatore;

    lanalisi, che studia i principi di fondo, le stime degli errori, la convergenza dei metodi.Il primo un aspetto pi pratico, mentre il secondo pi teorico, di base. Nella risoluzione

    numerica di un problema i due aspetti, in generale entrambi presenti, si integrano a vicenda.

    1.2 Rappresentazione dei numeri e sistemi numerici

    Un problema rilevante che si deve affrontare nei processi di elaborazione dellinformazione la

    rappresentazione dellinformazione sia numerica che non numerica.

    Allinterno degli elaboratori elettronici linformazione rappresentata mediante fenomeni fisici

    relativamente semplici che possono essere ridotti a due stati, livelli di tensione o magnetizzazione

    di opportuni dispositivi, e la rappresentazione dellinformazione sar prodotta dallassociazione tra

    questi stati e i simboli di un alfabeto binario.

    Tutte le informazioni sono rappresentate da sequenze di simboli binari: numeri, parole, immagini,

    pi in generale oggetti, devono quindi essere espressi mediante codici binari.

    Poich siamo interessati alla rappresentazione dellinformazione numerica, tratteremo i sistemi

    numerici, con particolare riferimento a quello decimale e a quello binario.

    Luomo abituato a compiere le operazioni aritmetiche usando il sistema di numerazione decimale;

    tutti hanno dimestichezza con la nozione di posizione decimale: si sa ad esempio che per

    moltiplicare un numero per 10 si sposta il punto decimale di una posizione verso destra o, se il

    numero intero, si pone uno zero alla destra del numero.

    Il sistema decimale un sistema in base 10, poich fa uso di dieci simboli diversi: si usano le cifre

    da 0 a 9 introdotte dagli Arabi.

    I calcolatori, daltra parte, possiedono caratteristiche fisiche che non si prestano a utilizzare il

    sistema decimale. I computer compiono tutte le operazioni utilizzando un sistema di numerazione

    diverso dal nostro e maggiormente rispondente alle caratteristiche dei materiali impiegati: il

    sistema binario (base 2), che meglio si presta a codificare situazioni come corrente positiva e

    corrente negativa, magnetizzazione positiva e magnetizzazione negativa.

    Il sistema binario daltra parte inadatto alla mente umana, che difficilmente manipola lunghe

    sequenze di 0 e 1, e inoltre la conversione dei numeri da binario a decimale e viceversa non immediata.

    In campo informatico si fa anche uso di altri due sistemi di numerazione: lottale con otto simboli

    diversi e lesadecimale che ne usa sedici.

    Va comunque rilevato che facendo uso dei sofisticati prodotti software esistenti oggi, lutente non

    ha mai la necessit di operare con basi diverse da quella decimale e non ha alcun contatto diretto

    con il sistema binario. La comunicazione fra utente e computer avviene nella base 10, ma il

    computer usa la base 2; unapposita interfaccia converte linput dalla base 10 alla base 2, i calcoli

    vengono eseguiti in base 2, poi il risultato viene di nuovo convertito dallinterfaccia nella base 10.

    Un sistema numerico determinato quando si fissano alcuni elementi che lo caratterizzano:

    un insieme limitato di simboli, le cifre, che rappresentano quantit intere prestabilite, adesempio alcune lettere dellalfabeto nel sistema di numerazione romano, le cifre arabe nel nostro

    sistema di numerazione; le regole che devono essere applicate per costruire i numeri.

  • 7/15/2019 Metodi Numerici

    12/294

    4 M. Garetto Metodi Numerici

    Universit di Torino

    Questi elementi portano a una differenziazione fra sistemi numerici.

    I sistemi numerici si distinguono in:

    non posizionali: il valore delle cifre indipendente dalla loro posizione allinterno del numero;ad esempio, nella numerazione romana la cifra M vale sempre mille, da sola, preceduta o seguita da

    altre cifre; posizionali: a ogni posizione allinterno della rappresentazione associato un peso.Nei sistemi numerici posizionali un numero intero non negativo N rappresentato come una

    sequenza di simboli (cifre) n,...,,i,di 10 =

    N= 011 dd....dd nn

    il valore del numeroN dato da

    valore(N) = 001111 pdpd...pdpd nnnn ++++ dovepi rappresenta il peso associato alla i esima posizione.

    Tra i sistemi posizionali sono di rilevante interesse quelli abase fissa nei quali si ponei

    i rp = con nim dover la base del sistema di numerazione.

    Esempio 1

    r= 10 N= 743

    Il valore di N

    valore(N) = 7 102 + 4 101 + 3 100

    d2 p2 d1 p1 d0 p0

    p2 = 102 p1 = 10

    1 p0 = 10

    0

    Pi in generale nei sistemi numerici posizionali a base fissa r, un numeroNnon intero pu essere

    rappresentato nel seguente modoN= mnn dd.dddd 1011

    Il valore diNsar

    valore(N) = mmn

    nn

    n rdrdrdrdrdrd

    +++++++1

    10

    01

    11

    1 =

    = =

    n

    mi

    ii rd con 0 dir 1

    dove

    id cifra i-esima

    r base

    n+1 numero di cifre della parte intera

    m numero di cifre della parte decimalend cifra pi significativa

    md cifra meno significativa.

    Sistema decimale

    Il sistema numerico decimale quello usato nella vita quotidiana ed caratterizzato da

    base r= 10 cifre id {0,1,2,3,4,5,6,7,8,9}

    N= mmn

    n dddd

    +++++ 101010101

    10

    0

    Esempio 2

    123.4510 = 1 102

    + 2 101 + 3 100 + 4 10 1 + 5 102

    12.2510 = 1 101 + 2 100 + 2 10 1 + 5 102

  • 7/15/2019 Metodi Numerici

    13/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    5

    Sistema binario

    Un sistema numerico binario caratterizzato da

    base r= 2 cifre id {0,1}

    N= mmn

    n dddd

    +++++ 22221

    10

    0

    Una cifra binaria detta bit.

    Esempio 3

    1012 = 1 22

    + 0 21 + 1 20 = 510

    101.012 = 1 22

    + 0 21 + 1 20 + 0 2 1 + 1 2 2 = 5.2510

    La rappresentazione di un numero in base 2 richiede pi cifre rispetto alla rappresentazione

    decimale, perch le potenze di 2 crescono pi lentamente delle potenze di 10.

    1.3 Rappresentazione dei numeri in floating point

    E utile vedere come lelaboratore rappresenta i numeri ed esegue le operazioni aritmetiche:

    laritmetica del computer generalmente inesatta e gli errori commessi, anche se molto piccoli, si

    possono propagare e possono avere effetti tali da compromettere la bont del risultato ottenuto.

    In un calcolatore si deve riservare uno spazio finito di memoria per la rappresentazione di ogni

    numero reale: ogni numero viene rappresentato usando un numero fisso e finito di cifre binarie

    (bit). Pertanto si possono rappresentare esattamente solo quei numeri che, in base alla convenzione

    di rappresentazione scelta, possono essere contenuti nello spazio previsto per ognuno di essi; questi

    numeri sono chiamati numeri di macchina.

    Esaminiamo le convenzioni che nei moderni calcolatori vengono usate per la rappresentazione dei

    numeri di macchina.

    La rappresentazione che viene pi convenientemente utilizzata per i numeri non interi larappresentazione in floating point (virgola mobile), che consente di risolvere in modo efficace il

    problema di trattare numeri con ordini di grandezza molto diversi.

    Questo sistema di rappresentazione basato sulla notazione scientifica o esponenziale

    comunemente usata in fisica, chimica, ingegneria, matematica.

    La notazione scientifica si ottiene spostando il punto decimale e moltiplicando per unopportuna

    potenza di 10. Ogni numero realex pu essere scritto nella formaqrpxsignx = )(

    dove sign(x) il segno del numerox,p un numero reale, r la base del sistema di numerazione

    scelto e q un intero relativo.

    Esempio 4

    Il numero reale decimale x = 23.701 pu essere scritto nei modi seguentix = 23.701 = 23701 103 = 237.01 101 = 0.23701 102 = 0.00023701 105 =....

    Il numero reale 3.14159265 (valore approssimato di ) pu essere scritto nei modi seguenti3.14159265 = 3.14159265 100 = 0.314159265 101 = 31.4159265 101 =....

    Come si vede dallesempio, la rappresentazione non unica, anzi esistono infinite rappresentazioni

    in notazione scientifica dello stesso numero, ottenibili una dallaltra spostando il punto decimale e

    cambiando convenientemente lesponente.

    La rappresentazione di un numero x 0 si dice normalizzata quando la cifra della parte intera 0 e la prima cifra dopo il punto decimale diversa da 0.

    Esempio 5

    La rappresentazione normalizzata di x = 123.71510 x = 0.123715 103.La rappresentazione normalizzata di x = 0.00071810 x = 0.718 10

    3.

  • 7/15/2019 Metodi Numerici

    14/294

    6 M. Garetto Metodi Numerici

    Universit di Torino

    Nella rappresentazione normalizzata di un numerox chiamiamopmantissa e qcaratteristica o

    esponente di x;p un numero reale compreso fra 0 e 1, q un intero.

    Fissata la base r, ogni numero reale x 0 univocamente definito dalla coppia (p,q), ossia larappresentazione normalizzata unica; pertanto sufficiente memorizzare la coppia (p,q).

    Con questa notazione possibile la scrittura in uno spazio limitato di numeri aventi ordini digrandezza molto diversi tra loro; viene in ogni caso evidenziata linformazione essenziale, che la

    sequenza di cifre significative nella mantissa, mentre la caratteristica fornisce lordine di

    grandezza, espresso in potenze della base.

    Poich un numero reale univocamente individuato dalla coppia di interi (p,q), per rappresentare

    un numero reale si deve stabilire:

    quanti bit devono essere utilizzati complessivamente per la rappresentazione di un numeroreale in notazione esponenziale normalizzata;

    quanti di essi devono rappresentare la mantissa e con quali convenzioni sono utilizzati; quanti, analogamente, per la caratteristica.Il numero totale di bit stabilito per rappresentare un numero fissato dallarchitettura del computer.

    Nei moderni calcolatori, per la memorizzazione dei numeri reali in aritmetica floating point esiste

    la possibilit di riservare a ciascun numero una lunghezza complessiva di 32 bit (laritmetica inquesto caso viene definita in semplice precisione), oppure di 64 bit (aritmetica in doppia

    precisione).

    Come numeri reali di macchina si intendono quei numeri le cui mantisse e caratteristiche sono

    rappresentabili esattamente negli spazi a loro riservati.

    In particolare, se lo spazio dedicato alla rappresentazione della mantissa corrisponde a tcifre nel

    sistema di numerazione scelto, saranno rappresentabili solo quelle mantisse che non hanno pi di t

    cifre.

    Lesponente invece dovr soddisfare una disuguaglianza del tipo m q M, dove m < 0 eM> 0sono interi. Di solito per evitare di dover memorizzare, oltre al segno del numero, anche il segno

    dellesponente, non si memorizza lesponente q, ma la quantit q* = q m, che risulta sempre non

    negativa.

    Definizione

    Linsieme dei numeri di macchina floating point, con rappresentazione normalizzata, in base r

    con t cifre nella mantissa, e con esponente q compreso fra m e M indicato con il simbolo

    (r,t,m,M), ed costituito dai numeri esattamente rappresentabili nel calcolatore nello spaziostabilito per la rappresentazione floating point.

    Si osservi che linsieme dei numeri di macchina deve contenere anche lo 0, che non

    rappresentabile con una mantissa normalizzata, e quindi non rappresentabile in modo univoco. Di

    solito lo 0 rappresentato con mantissa nulla ed esponente m.

    Nella figura seguente si schematizza una possibile rappresentazione interna a un calcolatore di un

    numero di macchina su 32 bit (semplice precisione), nel caso della base r= 2, con un bit per ilsegno del numero, con t= 23 cifre per la mantissa e con 8 bit per lesponente

    esponente (8 bit) mantissa (23 bit)

    segno (1 bit)

    Con questa scelta si possono rappresentare esponenti q compresi fra m = 127 eM= 128; per nondover memorizzare il segno dellesponente, si memorizza lesponente traslato q

    *= q + 127 (si

    ricordi1

    che con 8 bit si possono rappresentare numeri interi positivi compresi fra 0 e 255).

    1In generale con n bit si rappresentano numeri interi positivi compresi fra 0 e 12 n

  • 7/15/2019 Metodi Numerici

    15/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    7

    Nella doppia precisione si usano 64 bit e i 32 bit aggiuntivi possono essere tutti destinati alla

    mantissa, oppure parte alla mantissa e parte allesponente; tale scelta dipende dallarchitettura

    dellelaboratore; una suddivisione spesso applicata consiste nel destinare 52 bit per la mantissa e 11

    bit per lesponente.

    In un computer che usa 32 bit per rappresentare un numero (semplice precisione) e riserva 23 bit

    per la mantissa e 8 per lesponente, pi 1 bit per il segno del numero, si ottiene una precisione di

    circa 7 cifre decimali e si possono rappresentare numeri aventi un ordine di grandezza compreso fra

    1039

    e 10+38

    .

    Se il computer usa invece 64 bit per rappresentare un numero (doppia precisione) e riserva 52 bit

    per la mantissa e 11 per lesponente, si ottiene una precisione di circa 15 cifre decimali e si possono

    rappresentare numeri aventi un ordine di grandezza compreso fra 10308

    e 10+308

    .

    La maggior parte dei personal computer di attuale generazione si basano su questo tipo di standard,

    detto standard IEEE (Institute for Electrical and Electronics Engineers) dal nome dellistituto che

    ha codificato per la prima volta nel 1985 la scelta sopra descritta per laritmetica floating point.

    Attualmente di solito, soprattutto nellambito dei software di tipo matematico, viene usata per

    default la doppia precisione, mentre in tempi meno recenti cera la possibilit di scegliere fra

    semplice e doppia precisione, per ragioni legate alla minor velocit di calcolo e alla minordisponibilit di memoria degli elaboratori meno recenti.

    Esempio 6

    Con questo esempio si vuole mostrare che linsieme dei numeri di macchina un insieme che ha un

    numero finito di elementi; lesempio ha significato puramente didattico, non esistendo ovviamente

    nessun elaboratore che abbia queste caratteristiche, ma negli elaboratori realmente esistenti si

    verifica lo stesso tipo di situazione.

    Scriviamo tutti i numeri dellinsieme (2,3,1,1) e li rappresentiamo sulla retta reale.Linsieme (2,3,1,1) caratterizzato da: base r= 2; t= 3 cifre per la mantissa con prima cifra della mantissa diversa da 0; esponenti compresi fra 1 e 1.Le mantisse che possono essere rappresentate con 3 bit sono le seguenti; accanto a ciascuna

    mantissa in base 2 indicato a destra il corrispondente valore in base 10, in forma di frazione.

    8

    7

    8

    1

    4

    1

    2

    12121210.1111110

    4

    3

    4

    1

    2

    12021210.1101100

    8

    5

    8

    1

    2

    12120210.1011010

    2

    12020210.1001000

    2-2-1-

    22

    2-2-1-22

    2-2-1-22

    2-2-1-22

    =++=++=

    =+=++=

    =+=++=

    =++=

    .

    .

    .

    .

    Associando a ciascuna mantissa tutti i possibili esponenti si ottengono i seguenti numeri di

    macchina positivi; accanto a ciascuno di essi si indica il corrispondente valore decimale

    4

    7

    28

    7

    20.1118

    7

    28

    7

    20.11116

    7

    28

    7

    21110

    2

    32

    4

    320.110

    4

    32

    4

    320.110

    8

    32

    4

    321100

    4

    52

    8

    520.101

    8

    52

    8

    520.101

    16

    52

    8

    521010

    122

    120.100

    2

    12

    2

    120.100

    4

    12

    2

    121000

    110011

    110011

    110011

    110011

    ======

    ======

    ======

    ======

    .

    .

    .

    .

  • 7/15/2019 Metodi Numerici

    16/294

    8 M. Garetto Metodi Numerici

    Universit di Torino

    I numeri floating point positivi rappresentabili in questo elaboratore sono quindi 12; a questi si

    aggiungono i corrispondenti 12 numeri negativi e lo 0; complessivamente in questo elaboratore si

    possono rappresentare esattamente solo 25 numeri reali: questi 25 numeri costituiscono linsieme

    dei numeri di macchina (2,3,1,1).

    I numeri di macchina possono essere rappresentati sulla retta reale; quelli positivi sonorappresentati nella figura seguente

    4

    7

    2

    3

    4

    51

    8

    7

    4

    3

    8

    5

    2

    1

    16

    7

    8

    3

    16

    5

    4

    10

    4434421

    underflow

    43421

    overflow

    Il pi piccolo numero positivo 4

    121000 1 = . ; il pi grande

    4

    721110 1 =. .

    I numeri negativi sono i simmetrici dei positivi. Ogni altro numero reale non pu essere

    esattamente rappresentato in questa macchina e dovr essere approssimato da uno di questi numeriscelto secondo certe regole (vedere 1.4).

    Si pu osservare che i numeri di macchina non sono distribuiti in modo regolare: i punti sono

    raggruppati in modo pi fitto tra2

    1e

    4

    1che tra 1 e

    4

    7.

    Di conseguenza se numeri x arbitrari compresi nellintervallo4

    7

    4

    1

    , e non coincidenti con

    numeri di macchina devono essere approssimati con numeri di macchina in virgola mobile, tale

    approssimazione sar pi accurata per certi numeri che per altri.

    1.4 Troncamento e arrotondamento

    Vediamo ora come rappresentare un numero reale positivox in forma normalizzata in un sistema di

    numeri di macchina (r,t,m,M); per i numeri negativi si ottengono risultati analoghi.Si possono presentare i seguenti casi:

    1 il numero x tale che Mqm e inoltre il numero delle cifre della mantissa minore ouguale a t; allorax un numero di macchina ed rappresentato esattamente.

    Sex non appartiene a (r,t,m,M), si pone il problema di associare in modo adeguato a x un numerodi macchina x .

    2 la caratteristica q non appartiene allintervallo [m,M].

    Se q < m si dice che si verifica un underflow; solitamente si assume come valore approssimato delnumero x il numero 0; la presenza di underflow pu portare a situazioni critiche, ad esempio

    divisione per 0.

    Se q >M, si verifica un overflow e non si pu effettuare alcuna approssimazione con un numero di

    macchina. Nei computer di pi vecchia generazione in situazioni di questo tipo avveniva larresto

    del calcolo; nei calcolatori pi recenti pu essere usato uno standard detto virgola mobile estesa

    in cui, in aggiunta ai numeri di macchina, sono consentiti i simboli Inf (infinito) e NaN (Not a

    Number) e sono previste regole per eseguire operazioni del tipo 0=Inf

    x, Inf

    x=

    0, NaN=

    0

    0.

    3 la caratteristica q appartiene allintervallo [m,M], ma le cifre della mantissa dix sono in numeromaggiore di t. In questo caso si pone il problema di scegliere per il numerox un suo rappresentante

    x . Tale operazione viene indicata comunemente come operazione di arrotondamento, ecomporta un errore, detto errore di arrotondamento (rounding error oanche round-off error).Per effettuare loperazione di arrotondamento si possono utilizzare due tecniche diverse:

  • 7/15/2019 Metodi Numerici

    17/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    9

    troncamento (chopping) dix alla tesima cifra: si trascurano tutte le cifre della mantissa dopola tesima cifra.

    arrotondamento (rounding) dix alla tesima cifra: larrotondamento tiene conto della primacifra da trascurare, la (t+1)esima cifra. Se la (t+1)esima cifra minore di

    2

    r, larrotondamento

    coincide con il troncamento; se invece la (t+1)esima cifra maggiore o uguale a2

    r, si aumenta di

    uno lultima cifra che si conserva nella mantissa (tesima cifra) e poi si effettua il troncamento.

    Si noti che se si lavora in base r= 10 , si ha 52

    =r

    .

    Esempio 7

    (10,3, 4,4) base 10a x = 9824 = 0.9824 104

    x = 0.982 104 con troncamento

    x = 0.982 104 con arrotondamentoIn questo caso il numero arrotondato coincide con il numero troncato.

    b x = 9827 = 0.9827 104x = 0.982 104 con troncamento

    x = 0.983 104 con arrotondamentoIn questo caso il numero arrotondato e il numero troncato sono diversi.

    Esempio 8

    (10,5, 4,4) base 10x = = 3.1415926 = 0.31415926 101x = 0.31415 101 con troncamento

    x = 0.31416 101

    con arrotondamento

    Il troncamento unoperazione pi semplice, ma conduce ad errori2

    di arrotondamento pi grandi;

    infatti riferendoci allesempio 7, caso b, si ha

    x = 9827 = 0.9827 104x = 0.982 104 con troncamento

    Errore (con il troncamento)

    144 10701098201098270 == ...xx

    x = 0.983 104 con arrotondamentoErrore (con larrotondamento)

    144

    10301098301098270 == ...xx Riferendoci invece allesempio 8, si ha

    x = = 3.1415926 = 0.31415926 101x = 0.31415 101 con troncamento

    Errore (con il troncamento)

    411 109301031415010...314159260 = ...xx

    x = 0.31416 101 con arrotondamentoErrore (con larrotondamento)

    511 107401031416010...314159260 = ...xx

    2 Vedere il successivo 1.5 per le definizioni di errore.

  • 7/15/2019 Metodi Numerici

    18/294

    10 M. Garetto Metodi Numerici

    Universit di Torino

    1.5 Errore assoluto, errore relativo

    Sex rappresenta il valore esatto di un numero e x una sua approssimazione (per esempio il numero

    di macchina con cui rappresentatox), gli errori assoluto e relativo associati a x sono definiti nel

    modo seguente.

    Definizione

    Errore assoluto xx =AE

    Errore relativo 0ER

    = x,x

    xx.

    Esempio 9

    a 110500 = .x 110510 = .x 0

    A 1010E == .xx

    11

    0

    R 102010500

    1010E

    =

    =

    = .

    .

    .

    x

    xx

    b 310500 = .x 310510 = .x 4

    A 1010E== .xx

    1

    3

    4

    R 102010500

    1010E

    =

    =

    = .

    .

    .

    x

    xx

    c 410500 = .x 410510 = .x 3

    A 1010E == .xx

    1

    4

    3

    R 102010500

    1010E

    =

    =

    = .

    .

    .

    x

    xx

    Il confronto fra questi tre casi mostra che si possono avere errori assoluti molto diversi, ma lo

    stesso errore relativo; in altre parole, come misura di accuratezza lerrore assoluto pu essere

    fuorviante, mentre lerrore relativo maggiormente significativo. Lerrore relativo da preferire

    nella misura dellaccuratezza per numeri floating point, perch legato direttamente alla mantissa.

    Esempio 10

    a 1000000=x 999996=x

    49999961000000EA === xx

    5R 1040

    1000000

    4E

    ==

    = .x

    xx

    Lerrore assoluto grande, ma lerrore relativo piccolo: x pu essere considerato una buona

    approssimazione perx.

    b 0000120.x = 0000090.x = 5

    A 103000000900000120E=== ...xx

    05

    R 10250

    0000120

    1030E =

    =

    =

    .

    .

    .

    x

    xx

    Lerrore relativo grande: x non una buona approssimazione perx.

  • 7/15/2019 Metodi Numerici

    19/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    11

    Definizione

    Se, lavorando in base 10, risulta

    1102

    1EA =

    kxxk

    allora lapprossimazionex hakcifre decimali corrette.Se risulta

    1102

    1ER

    = k

    x

    xxk

    allora lapprossimazione x ha almeno k cifre significative corrette (potrebbero essere anchek+1).

    Lerrore assoluto fornisce quindi informazioni sul numero delle cifre decimali corrette, mentre

    lerrore relativo fornisce informazioni sul numero delle cifre significative corrette.

    Esempio 11

    4)sonorealt(incorretteivesignificatcifre3almenoha3

    102010202840

    1040E

    corrette.decimalicifre6ha6

    102

    11040102028010202840E

    002028000202840

    32

    6

    R

    6622A

    xk

    ..

    .

    x

    xx

    xk

    ...xx

    .x.x

    =

    =

    =

    =

  • 7/15/2019 Metodi Numerici

    20/294

    12 M. Garetto Metodi Numerici

    Universit di Torino

    Esempio 14

    33A

    22

    102

    11030E

    109919970199799109920000200099

  • 7/15/2019 Metodi Numerici

    21/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    13

    Nellaritmetica floating point valgono solo alcune delle propriet delle operazioni elementari.

    Per laritmetica di macchina in generale non valgono le seguenti propriet, valide invece

    nellaritmetica esatta.

    Propriet 1 - Associativa delladdizione

    (x y ) z x (y z )Propriet 2 - Associativa della moltiplicazione

    (x y ) z x (y z )

    Esempio 17

    (10,2,5,5)x = 0.11 100 y = 0.13 10-1 z = 0.14 10-1

    ( )

    ( ) ( )

    ento!arrotondam

    101401027010110

    101401013010110

    101301014010120

    101401013010110

    010

    110

    010

    110

    ====

    ==

    ==

    ...

    ...zyx

    ...

    ...zyx

    Esempio 18

    (10,2, 5,5)x = 0.11 101 y = 0.31 101 z = 0.25 101

    ( ) ( )

    ( ) ( )108601078010110

    102501031010110

    108501025010340

    102501031010110

    111

    111

    111

    111

    ==

    ==

    ==

    ==

    ...

    ...zyx

    ...

    ...zyx

    Propriet 3 - Distributiva del prodotto rispetto alladdizione

    x (y z ) (x y ) (x z )

    Esempio 19

    (10,2, 5,5)x = 0.11 101 y = 0.23 101 z = 0.24 101

    ( ) ( )

    ( ) ( ) ( ) ( )

    105101026010250

    10240101101023010110

    105201047010110

    102401023010110

    111

    1111

    111

    111

    ==

    ==

    ====

    ...

    ....zxyx

    ...

    ...zyx

    Propriet 4 - Legge di cancellazione

    zxyyzyx == implicanon0,

    Esempio 20

    (10,2, 5,5)x = 0.51 101 y = 0.22 101 z = 0.52 101

  • 7/15/2019 Metodi Numerici

    22/294

    14 M. Garetto Metodi Numerici

    Universit di Torino

    !ma

    101101022010520

    101101022010510

    211

    211

    zx

    ...yz

    ...yx

    ==

    ==

    Propriet 5 - Semplificazione

    x y ( y)x

    Esempio 21

    (10,2, 5,5)x = 0.70 101 y = 0.80 101

    (yx )x = 0.70 101 (0.80 101 0.70 101) == 0.70 101 0.11 101 = 0.77 101y

    Possiamo pertanto concludere che espressioni che sono equivalenti in aritmetica esatta non

    risultano generalmente tali nellaritmetica di macchina.Malgrado ci, due espressioni (non nulle) saranno definite equivalenti dal punto di vista del

    calcolo numerico quando, calcolate con un computer, forniscono risultati che differiscono per una

    tolleranza relativa dellordine della precisione di macchina.

    In un elaboratore che usa laritmetica floating point ci sono infiniti numeri realix non nulli tali che

    11 =x dove x1 il valore della somma calcolato dal computer; nellaritmetica esatta questa relazione ovviamente falsa per ognix non nullo!

    Il pi piccolo fra tutti i numeri di macchina x(r,t,m,M) per i quali nellaritmetica del computersi verifica 11 >x detto epsilon di macchina.

    DefinizioneSi definisce epsilon di macchinala quantit

    ( ){ }11: >= xM,m,t,rxmineps

    Lepsilon di macchina una costante caratteristica di ogni aritmetica floating point e dipende anche

    dalla tecnica scelta per le operazioni di arrotondamento (chopping o rounding).

    Nellinsieme di numeri di macchina (r,t,m,M) lepsilon di macchina dato da

    =

    entoarrotondamconoperasise2

    1

    mentocon troncaoperasise

    1

    1

    t

    t

    r

    r

    eps

    Il numero eps rappresenta la massima precisione di calcolo raggiungibile con il calcolatore su cui

    implementata una data aritmetica floating point, e non ha senso cercare di determinare

    approssimazioni con precisione relativa inferiore alla precisione di macchina eps.

    Esempio 22

    (10,3,2,2) con arrotondamento

    0050102

    1 2 .eps ==

    11 1010001101010

    e)arrotondareare(normalizz0051005011

    ==

    ===

    ..

    ..eps

    Invece per 0040.x = (e per ogni altro numerox minore di eps) si ha

    1101000

    e)arrotondareare(normalizz00410040111 ==

    ===.

    ..x

  • 7/15/2019 Metodi Numerici

    23/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    15

    Osservazione

    Laritmetica di macchina floating point con arrotondamento pu essere facilmente implementata sia

    in Maple che in Matlab3. Il comando Maple

    > Digits:=n;

    permette di svolgere tutti i calcoli in aritmetica floating point con arrotondamento con n cifresignificative; il valore di n scelto dallutente entro un limite massimo che dipende dal computer

    utilizzato.

    Loperazione di macchina

    xy =fl(fl(x) +fl(y))pu essere svolta in floating point con n cifre con il comando Maple

    > evalf(evalf(x)+evalf(y));

    In modo analogo si svolgono le altre operazioni.

    Come applicazione si riportano i comandi Maple e i risultati ottenuti per lesempio 17.

    > Digits:=2;digits: =2

    > x:=0.11;x: =0. 11

    > y:=0.013;y: =0. 013

    > z:=0.014;z: =0. 014

    > a:=evalf(evalf(x)+evalf(y))+evalf(z);a: =0. 13

    >b:=evalf(x)+evalf(evalf(y)+evalf(z));b: =0. 14

    1.7 Generazione degli errori nel computer

    In questo paragrafo esaminiamo in dettaglio alcuni dei problemi legati alluso di un computer per

    svolgere calcoli di tipo numerico e descriviamo alcuni esempi di algoritmi tipici dellanalisi

    numerica.

    1.7.1 Problemi del calcolo con i numeri reali

    Il calcolatore, essendo una macchina finita, deve operare su numeri rappresentati con una sequenza

    finita di cifre; ad esempio numeri reali irrazionali come o 2 , la cui rappresentazione richiedeinfinite cifre, non possono essere trattati nelle elaborazioni numeriche se non commettendo un

    errore di arrotondamento.

    Lo stesso problema si presenta anche con numeri razionali la cui rappresentazione decimale ha uno

    sviluppo periodico: ad esempio il numero3

    1ha la rappresentazione periodica 30. , e pu essere

    rappresentato solo troncandone lo sviluppo e quindi commettendo un errore.

    3

    Maple uno dei numerosi software scientifici, detti Computer Algebra Systems (CAS), oggi disponibili peril calcolo simbolico e numerico; altri prodotti simili sono Mathematica e Matlab, pi orientato al calcolo

    numerico.

  • 7/15/2019 Metodi Numerici

    24/294

    16 M. Garetto Metodi Numerici

    Universit di Torino

    Non ci si deve perci stupire di fronte a un risultato del tipo4

    9999999903

    13 .= .

    Nella maggior parte dei calcolatori la rappresentazione interna dei numeri viene fatta usando una

    base diversa dalla base 10: di solito si usa la base 2 o la base 16, mentre nei dispositivi di input-output (tastiera, video, stampante) i numeri compaiono nella loro rappresentazione in base 10;

    questo fatto rende meno evidente la presenza degli errori dovuti alla rappresentazione con un

    numero finito di cifre. Ad esempio, introducendo il numero decimale 0.1 dalla tastiera di un

    personal computer, che utilizza la base 2 per la rappresentazione interna e la base 10 per la

    rappresentazione sullo schermo, si pu leggere sul video il numero decimale 0.1, cio10

    1, per il

    numero effettivamente immesso nella memoria del calcolatore non 0.1 ma una sua

    approssimazione, perch10

    1in base 2 ha la rappresentazione periodica 001100. , e il computer non

    pu rappresentare un numero con infinite cifre.

    Quindi in generale si commettono errori gi nellimmissione dei dati, prima ancora di eseguireeffettivamente i calcoli.

    Poich linsieme dei numeri rappresentabili sul calcolatore un insieme finito e limitato (insieme

    dei numeri di macchina), ovviamente non tutti i numeri sono rappresentabili esattamente; in

    particolare non possono essere rappresentati i numeri troppo grandi o troppo piccoli.

    A causa di questa limitazione lelaborazione pu essere problematica per il verificarsi di overflow,

    con generazione di risultati di modulo troppo elevato, o di underflow, con risultati di modulo

    troppo piccolo.

    I dati, i risultati intermedi e i risultati finali devono essere tutti approssimati con numeri di

    macchina. Queste approssimazioni possono produrre seri effetti sul calcolo complessivo.

    Per esempio, la maggior parte dei programmi di libreria per il calcolo delle funzioni

    trigonometriche sin x e cos x, sottraggono o aggiungono multipli di 2 allargomento in modo da

    ottenere un argomento compreso fra e .Questo cambiamento dellargomento ovviamente non modifica formalmente il risultato, perch, ad

    esempio, vale la propriet sin x = sin(x 2k), k = 1,2,...Ma il numero non pu essere rappresentato esattamente nel calcolatore, quindi la modificaeffettuata sullargomento provoca un cambiamento nel risultato: in effetti, a causa di questo

    problema, difficile calcolare in modo accurato sin x per grandi valori dix.

    La rappresentazione con un numero finito di cifre impone inoltre, come gi visto precedentemente,

    luso di unaritmetica di macchina finita, che introduce errori anche nellesecuzione delle

    operazioni aritmetiche.

    Pi in generale dunque, ogni procedimento numerico che coinvolga numeri reali che non possono

    essere rappresentati esattamente nel computer deve essere usato con particolare attenzione.

    Esempio 23

    Si vuole calcolare il valore della somma

    =

    =N

    i

    S

    110

    1.

    4 Si osservi il comando Maple e il risultato (in aritmetica floating point con 8 cifre significative)> digits:=8;

    digits: =8

    > x:= evalf(evalf(3.0)*evalf(1.0/3.0));x: =0. 99999999

  • 7/15/2019 Metodi Numerici

    25/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    17

    PerN= 10000000 il valore esatto S= 1000000; con Matlab5

    (che opera in doppia precisione) si

    ottiene

    S= 999999.999838975

    Lerrore (piuttosto elevato) dovuto al fatto che per rappresentare

    10

    1, che in base 2 ha la

    rappresentazione periodica 001100. , il computer deve operare un troncamento, non potendo

    rappresentare un numero con infinite cifre. Si ha quindi un errore di conversione dalla base 10 alla

    base 2; a questo errore si aggiungono altri errori dovuti alle successive operazioni di somma e alla

    conversione del risultato dalla base 2 alla base 10.

    1.7.2 Cancellazione numerica

    Una delle conseguenze pi gravi della rappresentazione dei numeri con precisione finita, e della

    conseguente introduzione dellaritmetica floating point, il fenomeno della cancellazione

    numerica, ossia la perdita di cifre significative dovuta ad operazioni di sottrazione fra due numeri

    circa uguali.

    Esempio 24

    Calcoliamo la differenza fra i valori di xe per

    2

    100

    1

    =x e per2

    1000

    1

    =x , lavorando con 8

    cifre significative

    ( )

    ( )

    000099000

    999999000

    999900000

    2

    10001

    2

    1001

    .bac

    .eb

    .ea

    ==

    ==

    ==

    I valori di a e b hanno 8 cifre significative, mentre c ha solo pi 4 cifre significative.

    Leffetto degli errori di arrotondamento grande, la sottrazione fra numeri circa uguali fa perdere

    accuratezza.

    Ripetiamo gli stessi calcoli lavorando ora con 16 cifre significative.

    ( )

    ( )

    00666700009899500

    00500099999900000

    99833399990000490

    2

    10001

    2

    1001

    .bac

    .eb

    .ea

    ==

    ==

    ==

    I valori di a e b hanno ora 16 cifre significative, mentre c ha 12 cifre significative6.

    Esempio 25

    Si voglia calcolare il valore della funzione ( )x

    exf

    x 1= per valori dix tendenti a 0.

    5 I comandi necessari per calcolare con Matlab la somma richiesta sono i seguenti>> format long e

    >> v=0.1*ones(1,10000000);

    >> s=sum(v) s =

    9.999999998389754e+005

    6 I calcoli sono stati effettuati con Maple, con 8 e 16 cifre rispettivamente.

  • 7/15/2019 Metodi Numerici

    26/294

    18 M. Garetto Metodi Numerici

    Universit di Torino

    E noto che

    11

    0=

    x

    elim

    x

    x

    Quandox prossimo a 0, xe assume valori vicini a 1, quindi nel calcolo di ( )xf al numeratore sicalcola la differenza fra due numeri circa uguali e si ha un aumento dellerrore di arrotondamento,

    dovuto alla cancellazione numerica, peggiorato ulteriormente dalla divisione perx.

    Effettuando i calcoli in semplice precisione (8 cifre significative) e in doppia precisione (16 cifre

    significative) si ottengono i seguenti risultati7:

    Semplice precisione

    ( )

    ( )

    ( ) 002

    677721612

    000448012

    25

    24

    10

    .xfx

    .xfx

    .xfx

    ==

    ==

    ==

    Doppia precisione

    ( )( )

    ( ) 002

    42624125899906812

    45536000000020512

    51

    50

    25

    .xfx

    .xfx

    .xfx

    ==

    ====

    Anche se si opera in doppia precisione, il problema dovuto alla cancellazione numerica continua a

    verificarsi, ma si presenta per valori dix pi piccoli.

    Come si osserva in questi esempi, il problema dellerrore di arrotondamento pu essere almeno in

    parte risolto aumentando la precisione del calcolo, ma non pu essere del tutto eliminato: anche con

    il raddoppio della precisione si ha una diminuzione (certamente meno importante) delle cifre

    significative.

    Se il cambiamento del numero di cifre di precisione fa cambiare in modo rilevante i risultati di un

    calcolo, allora molto probabile che il calcolo sia seriamente affetto da errori di arrotondamento.Questo problema sar approfondito nel 1.11, dove si vedr come sia spesso possibile modificare

    un algoritmo in modo da evitare il problema della cancellazione numerica.

    1.7.3 Calcolo del valore di una funzione

    La maggior parte dei problemi matematici richiede luso di funzioni. Ci sono solo due modi per

    rappresentare una funzione in un calcolatore: mediante una tabella di valori oppure con un

    algoritmo che consenta di calcolare i valori della funzione in punti assegnati.

    Poich nellaritmetica di macchina in un computer sono definite solo le quattro operazioni

    aritmetiche, le funzioni effettivamente calcolabili esattamente su un calcolatore, a meno degli erroridi arrotondamento, sono solo le funzioni che richiedono un numero finito di queste operazioni.

    Tali funzioni sono dette funzioni razionali e possono essere scritte nella forma

    ( )( )( )xqxp

    xr =

    dove p(x)e q(x) sono polinomi di grado rispettivamente n e m nella variabilex

    ( )

    ( ) mm

    nn

    xb...xbxbbxq

    xa...xaxaaxp

    ++++=

    ++++=

    2210

    2210

    I coefficienti ka e kb e il valore x in cui la funzione deve essere calcolata sono rappresentati con

    numeri di macchina; il valore calcolato per la funzione affetto dallerrore di arrotondamento

    dovuto allaritmetica floating point.

  • 7/15/2019 Metodi Numerici

    27/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    19

    Tutte le altre funzioni devono essere calcolate per mezzo di algoritmi con i quali si ottiene un

    valore approssimato della funzione; tale valore affetto, oltre che dallerrore di arrotondamento,

    anche da un errore dovuto al metodo scelto per approssimare la funzione.

    Molte funzioni, ad esempio le funzioni trigonometriche, possono essere approssimate da opportune

    funzioni razionali; numerose funzioni elementari possono essere approssimate nellintorno

    dellorigine per mezzo dello sviluppo in serie di Taylor.

    Nel calcolo di una generica funzione f il valore effettivamente calcolato in corrispondenza a un

    dato valorex quindi affetto da errori indotti da diversi fenomeni:

    errore generato dalla rappresentazione dei dati come numeri di macchina; errore generato dal fatto che le operazioni sono effettuate in aritmetica floating point; errore generato, se la funzione non razionale, dalla sua approssimazione con una funzionerazionale, oppure con lo sviluppo di Taylor o con altri metodi.

    1.7.4 Discretizzazione

    Molti problemi sono inizialmente formulati in termini di oggetti matematici quali funzioni o curvee coinvolgono operazioni come lintegrazione, la differenziazione o i limiti.

    Il procedimento di sostituire concetti matematici di tipo continuo mediante quantit calcolabili

    numericamente chiamato discretizzazione.

    Si consideri ad esempio il problema di calcolare lintegrale

    ( )=b

    a

    dxxfI (1.1)

    dovef(x) una funzione continua su [a,b], calcolabile in ogni puntox [a,b].Loperazione di integrazione pu essere sostituita da una somma finita, commettendo ovviamente

    un errore.

    La maggior parte dei metodi di integrazione numerica per approssimare lintegraleI consiste nello

    scegliere un certo numero di puntix0,x1, ... ,xn nellintervallo [a,b] e nellapprossimare lintegraleI con una somma finita del tipo

    ( )=

    n

    k

    kk xfm

    0

    (1.2)

    dove i coefficienti mk, k = 0, 1, ...,n , sono scelti in modo opportuno.

    Lalgoritmo che si implementa sul calcolatore risolve il problema discreto (1.2), anzich il

    problema continuo (1.1).

    Se ad esempio si sceglie x0 = a, x1 = b, si pu costruire la formula del trapezio

    ( ) ( )[ ]bfafh

    I +2

    h = b a

    illustrata dalla fig. 1, nel caso semplice in cui ( ) 0>xf per ogni x [a,b].

    (x)

    a=x0 b=x1 x Figura 1

  • 7/15/2019 Metodi Numerici

    28/294

    20 M. Garetto Metodi Numerici

    Universit di Torino

    1.7.5 Iterazione

    Spesso la soluzione di un problema matematico formulata sotto la forma di un processo infinito:

    esempi di tali processi sono lintegrazione, la differenziazione, i limiti, le somme infinite. Molti di

    questi processi infiniti possono essere formulati come iterazioni.Un metodo iterativo fornisce una successione di approssimazionix0 ,x1 , ... ,xk,... della soluzionex;

    tale successione pu convergere alla soluzione stessa.

    Una particolare iterata calcolata con unopportuna formula, servendosi delle iterate precedenti.

    Esempio 26

    La costante e definita dalla serie

    +

    =

    =0

    !

    1

    kk

    e

    Poich la somma di una serie definita come il limite delle somme parziali (ridotte), si pu scrivere

    il procedimento iterativo seguente

    =+==

    ,....,kk

    SS

    S

    kk 21!

    11

    1

    0

    La successione di valori che si calcola con questo metodo iterativo

    66666672!3

    150000002

    50000002!2

    12

    0211

    01

    3

    2

    1

    0

    ..S

    .S

    .S

    .S

    =+=

    =+=

    =+=

    =

    .......................

    2.7166667!5

    170833342

    70833342!4

    166666672

    5

    4

    =+=

    =+=

    .S

    ..S

    che converge al valore 71828182.e .

    Esempio 27

    Il numero irrazionale 2 la soluzione positiva dellequazione x2

    = 2.

    Si pu dimostrare che la soluzione di questa equazione il limite della successione di iterate

    =

    +=

    =

    ,...,k

    xxx

    x

    kkk 21

    2

    2

    1

    2

    11

    0

    La successione di valori che si calcola con questo metodo iterativo

    ( )

    ......................

    .x

    .x

    .x

    x

    41421571

    4166713

    4

    2

    3

    2

    1

    51122

    1

    2

    3

    2

    1

    0

    =

    =

    +=

    =+=

    =

    che converge al valore 4142135612 .

  • 7/15/2019 Metodi Numerici

    29/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    21

    Si presentano a questo punto due problemi.

    Il primo legato al fatto che pu essere calcolato solo un numero finito di iterate, quindi si deve

    decidere quale iterata pu essere assunta come approssimazione della soluzione cercata; la scelta

    dei criteri di arresto per processi iterativi non sempre semplice.

    Il secondo problema quello della convergenza e consiste nel chiedersi se il procedimentoconverge e, in caso affermativo, se converge alla soluzione cercata.

    Ad esempio, per risolvere lequazione x2

    = 2 si pu anche considerare il metodo iterativo

    ==

    =

    ,...,k

    xx

    x

    kk 21

    2

    2

    1

    0

    La successione di valori che si determina con questo metodo

    {2, 1, 2, 1, 2, 1,.....}che ovviamente non converge.

    Risulta quindi necessario avere una conoscenza chiara del procedimento iterativo, in modo da poter

    dire, prima di applicarlo, se la successione delle iterate converge.

    1.8 Tipi di errore

    Le considerazioni precedenti hanno reso evidenti vari errori che nascono nel corso della soluzione

    numerica di un problema matematico; questi errori possono essere sostanzialmente di due tipi

    diversi.

    Il primo tipo di errore detto errore di arrotondamento7

    ed causato dalla rappresentazione

    finita dei numeri allinterno del calcolatore; questo errore si presenta ad esempio quando dei dati

    devono essere arrotondati o troncati a un certo numero di cifre per essere memorizzati nel

    computer.

    Pi in generale gli errori di arrotondamento nascono quando si effettua una operazione aritmetica

    su numeri nel calcolatore, e si produce un risultato che viene anchesso approssimato con un

    opportuno numero di macchina.

    Il secondo tipo di errore detto errore di troncamento8

    e si presenta in varie forme. Il

    procedimento di approssimazione di una funzione per mezzo di unopportuna funzione razionale

    introduce un errore di questo tipo; analogamente il processo di discretizzazione, cos come

    larrestare un procedimento iterativo dopo un numero finito di passi.

    In molti casi, lerrore di troncamento introdotto prima che il calcolo numerico venga iniziato. Ad

    esempio quando un integrale sostituito da una somma finita, si introduce un certo errore di

    troncamento, mentre il calcolo numerico della somma introduce solo errori di arrotondamento.

    Quando lerrore di troncamento causato da un processo di discretizzazione, di solito accade che

    tanto pi piccolo questo errore, tanto pi complicato il corrispondente procedimento numerico.

    Inoltre generalmente lerrore di arrotondamento direttamente proporzionale alla complessit delcalcolo, perci in molti casi ridurre lerrore di troncamento causa un aumento dellerrore di

    arrotondamento.

    Normalmente questi due errori vengono analizzati separatamente; bisogna comunque tener presente

    che spesso c una connessione tra di loro, che deve essere tenuta in considerazione.

    1.9 Propagazione degli errori

    La questione di come gli errori sui dati di un problema si propagano sui risultati di fondamentale

    importanza per la risoluzione numerica di un problema.

    7Attenzione a non confondere gli errori di arrotondamento e troncamento con le tecniche di arrotondamento

    e troncamento introdotte nel 1.4 per approssimare i numeri.

  • 7/15/2019 Metodi Numerici

    30/294

    22 M. Garetto Metodi Numerici

    Universit di Torino

    Studiamo come gli errori si possono propagare effettuando successivamente dei calcoli;

    consideriamo il semplice caso della somma di due numerix ey (valori esatti); siano x e y i valori

    approssimati dix ey, con i rispettivi errori x e y

    xxx += yyy += .Calcoliamo la somma

    ( ) ( ) ( ) ( )yxyx yxyxyx +++=+++=+ .Lerrore sulla somma la somma degli errori sugli addendi.

    In modo simile, ma un po pi complicato, si pu operare nel caso del prodotto; in generale un

    errore iniziale si propaga in una sequenza di calcoli. Una qualit auspicabile per ogni processo

    numerico che un errore piccolo sui dati iniziali produca piccoli cambiamenti sul risultato finale.

    Dato un problema matematico, per quanto riguarda la propagazione degli errori possiamo, in

    maniera schematica, distinguere il comportamento del problema e il comportamento di un

    particolare algoritmo utilizzato per risolvere tale problema.

    Nel primo caso, facendo lipotesi ideale di essere in grado di risolvere esattamente il problema, si

    interessati a vedere come piccoli cambiamenti (perturbazioni) sui dati del problema si trasmettonosui risultati; per caratterizzare un problema rispetto a questo tipo di comportamento si utilizza il

    termine di condizionamento.

    Definizione

    Un problema matematico per il quale piccole variazioni nei dati producono grosse variazioni nei

    risultati detto mal condizionato.

    Viceversa se il problema tale che piccoli cambiamenti sui dati causano cambiamenti dello stesso

    ordine di grandezza sulla soluzione, allora il problema detto ben condizionato.

    Nel caso di un algoritmo, per indicare il suo comportamento rispetto alla propagazione degli errori

    si usa il termine di stabilit.

    Definizione

    Un algoritmo nel quale la successione delle operazioni non amplifica gli errori di arrotondamento

    si dice stabile; se invece gli errori vengono pesantemente amplificati, lalgoritmo si dice instabile.

    La distinzione tra il condizionamento di un problema e la stabilit di un algoritmo importante

    perch, come si vedr negli esempi seguenti, mentre per un problema ben condizionato possibile

    in generale trovare algoritmi stabili, invece per un problema mal condizionato opportuna una sua

    riformulazione, perch nessun algoritmo in grado di risolverlo senza un grave aumento degli

    errori sul risultato.

    1.10 Problemi mal condizionati

    Il condizionamento proprio del problema e non ha alcun legame n con gli errori di

    arrotondamento delle operazioni di macchina, n con il particolare procedimento di calcolo

    numerico seguito per determinarne la soluzione.

    Nel caso di un problema mal condizionato gi linevitabile perturbazione dei dati dovuta alla

    rappresentazione finita di macchina genera errori elevati nei risultati, qualunque sia poi lalgoritmo

    utilizzato.

    Gli esempi seguenti illustrano alcuni tipici casi di problemi mal condizionati.

  • 7/15/2019 Metodi Numerici

    31/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    23

    Esempio 28 Sistema di equazioni lineariSi consideri il seguente sistema di equazioni lineari.

    =+

    =+

    200110001001

    2

    yx

    yx(1.3)

    Risolviamo il sistema con il metodo di Cramer, con aritmetica esatta

    11

    120011001

    211

    10002001

    12

    110001001

    11

    21

    21

    ====

    ====

    ==

    D

    Dy

    D

    Dx

    DD

    D

    Alteriamo ora di100

    1il coefficiente dix nella prima equazione

    =+

    =+

    +

    200110001001

    2100

    11

    yx

    yx(1.4)

    La soluzione di questo sistema

    110002001

    12

    910011000100

    11

    10001001

    1100

    11

    1 ==

    =

    +=+=

    D

    D

    900

    1901

    9

    1

    100190120022001

    10011

    20011001

    2100

    1

    1

    21

    2

    ====

    =

    +=+=

    D

    Dy~

    D

    Dx~

    D

    Il piccolo cambiamento del coefficiente dix ha causato un cambiamento rilevante nella soluzione:

    si tratta di un problema mal condizionato.

    Si noti che entrambe le soluzioni sono calcolate in aritmetica esatta, quindi non sono stati introdotti

    errori di arrotondamento dovuti alluso del computer.

    La natura del mal condizionamento del problema precedente pu essere descritta mediante

    uninterpretazione geometrica. Le due equazioni del sistema (1.3) hanno come grafico le due rette

    tracciate nella figura seguente e la loro intersezione ha per coordinate la soluzione del sistema.

    Figura 2

  • 7/15/2019 Metodi Numerici

    32/294

    24 M. Garetto Metodi Numerici

    Universit di Torino

    Poich le due rette formano tra loro un angolo molto piccolo, perturbando la prima equazione si

    altera di poco la posizione della prima retta, ottenendo la retta tratteggiata, ma cambia molto la

    posizione del punto di intersezione e quindi le sue coordinate, che sono le soluzioni del sistema

    perturbato (1.4).

    Esempio 29 Soluzione di equazioni

    Calcoliamo le radici dellequazione

    042 =+ xx .

    Per = 4 lequazione diventa

    ( ) 02 2 =x e ha le due radici coincidenti

    x1 =x2 = 2

    mentre per 6104 = , che corrisponde a una perturbazione del termine noto di 10 6, si hanno leradici

    x1 = 2 103

    x2 = 2 + 103

    .

    La perturbazione nei dati quindi amplificata nei risultati di un fattore 103.Si noti che anche in questo esempio tutti i calcoli sono svolti in aritmetica esatta, quindi senza

    alcun errore di arrotondamento; si tratta di nuovo di un problema mal condizionato.

    Un esempio analogo dato dal calcolo degli zeri del polinomio

    ( ) ( )( ) ( )2021 = xxxxP In questo caso, a differenza del precedente, gli zeri

    2021 2021 === x,.....,x,x sono distinti e ben separati.

    Sviluppando il polinomio si ottiene

    ....xx)x(P += 1920 210Il polinomio

    ( ) ( ) 19232 xxPxP =

    ottenuto perturbando soltanto il coefficiente di19

    x di una quantit dellordine di 107

    , ha cinque

    coppie di zeri complessi coniugati e tra i restanti dieci zeri reali il pi grande, approssimato a 8

    cifre significative, 8469082020 .x = .Si pu osservare che un cambiamento molto piccolo in un solo coefficiente (cambiamento

    dellordine degli errori di arrotondamento di macchina in semplice precisione) ha prodotto dei

    grossi errori sui risultati.

    Questi risultati sono stati ottenuti con unaritmetica con precisione molto elevata, per cui gli errori

    non sono imputabili a problemi di arrotondamento, ma sono dovuti al mal condizionamento del

    problema.

    La risoluzione di equazioni algebriche di grado elevato un problema in generale malcondizionato.

    1.11 Algoritmi instabili

    Molti metodi per risolvere problemi matematici funzionerebbero molto bene se si usasse

    laritmetica esatta. Con gli esempi che seguono si vuole mostrare che laritmetica floating point del

    calcolatore e gli errori di arrotondamento possono rendere completamente inefficace un algoritmo.

    Si osservi che per uno stesso problema si possono usare pi algoritmi diversi; esistono quindi

    algoritmi stabili e algoritmi instabili.

    Il fenomeno della cancellazione numerica molto spesso alla base di gran parte dei casi di

    instabilit numerica degli algoritmi.

  • 7/15/2019 Metodi Numerici

    33/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    25

    Esempio 30

    Soluzione dellequazione di secondo grado

    02 =++ cbxax .

    Le due radici si ottengono con le note formule risolutive

    a

    acbbx

    a

    acbbx

    2

    4

    2

    4 22

    2

    1=+= (1.5)

    Si pu presentare cancellazione numerica nel calcolo di x1 se acb 42 quasi uguale a b,

    oppure in x2 se acb 42 quasi uguale a b.

    Si consideri ad esempio lequazione

    052453152010010002 =+ .x.x I coefficienti sono dati con 8 cifre significative; effettuando i calcoli con 8 cifre significative si ha

    0025001251000

    2

    01501000011000

    2

    524531524011000011000

    21

    2

    21

    .x.x

    ...).(.x ,

    ==

    =

    +=

    Si pu osservare che nella radice x2 si sono perse ben 6 cifre significative: ci dovuto alla

    cancellazione nella sottrazione effettuata nel calcolo dix2.

    In questo caso si tratta di instabilit dellalgoritmo. Il fenomeno della cancellazione numerica pu

    essere evitato ricordando che

    a

    cxx =21

    e perci, se la cancellazione numerica si presenta nel calcolo di x2, dopo aver calcolato x1 con la

    formula risolutiva (1.5), si calcolax2 con la formula

    1

    2ax

    cx =

    e viceversa se la cancellazione si presenta in x1.

    In questo esempio si ha

    0025244999001251000

    524531522 .

    .

    .x =

    =

    con 8 cifre significative in entrambe le radici.

    Esempio 31

    Confrontare i risultati del calcolo dei valori delle funzioni

    ( ) ( ) ( )xx

    xxgxxxxf

    ++=+=

    11

    per 500=x , effettuando i calcoli con 6 cifre significative.Per la prima funzione si ottiene( ) ( ) 1500110223000500360722383022500500501500500 ....f ====

    Per la seconda funzione si ha

    ( ) 174811743744

    500

    360722383022

    500

    500501

    500500 .

    ...g ==

    +=

    +=

    La seconda funzione ottenuta dalla prima moltiplicando e dividendo per xx ++1

    ( ) ( ) ( )( )( ) xx

    x

    xx

    xxxxxxxxxf

    ++=

    ++

    +++=+=

    11

    111

    Il valore esatto a 16 cifre significative, ottenuto con Maple, 11.17475530074720.

  • 7/15/2019 Metodi Numerici

    34/294

    26 M. Garetto Metodi Numerici

    Universit di Torino

    Gli errori assoluti sono rispettivamente

    ( )

    ( ) 4

    1

    1045017481147201747553007115004720174755300711

    1025015001147201747553007115004720174755300711

    ==

    ==

    ...g.E

    ...f.E

    g

    f

    Il valore ottenuto per ( )500g pi preciso di ( )500f , perch nellespressione di ( )xg non si hacancellazione numerica.

    Le due funzioni sono algebricamente equivalenti e rappresentano lo stesso problema; il

    condizionamento del problema quindi lo stesso. Sono per disponibili due algoritmi diversi, di

    cui il secondo stabile, mentre il primo non lo : infatti nel primo interviene la cancellazione

    numerica, mentre nel secondo la cancellazione scomparsa, avendo effettuato formalmente

    loperazione di razionalizzazione dellespressione.

    Esempio 32

    Si supponga di voler utilizzare il calcolatore per avere delle indicazioni sul valore del limite

    ( )xflimx +

    con

    ( )

    += xxxxf 12 (1.6)

    calcolando il valore dif(x) per valori crescenti dix.

    Si osservi che la funzionef(x) pu essere scritta anche nella forma algebricamente equivalente

    ( )xx

    x

    xx

    xxxxx

    xf

    ++=

    ++

    ++

    +

    =11

    11

    22

    22

    (1.7)

    Nella tabella seguente si riportano i valori dif(x)ottenuti con le due espressioni in corrispondenza a

    valori crescenti dix, effettuando i calcoli con 7 cifre significative.

    x (1.6) (1.7)

    100 0.5000000 0.4999875

    500 0.5000000 0.4999995

    700 0.4900000 0.4999996

    800 0.4800000 0.4999997

    1000 0.0000000 0.5000000

    2000 0.0000000 0.5000000

    3000 0.0000000 0.5000000

    Le informazioni ottenute sono discordanti. In base ai valori ottenuti con la (1.6) si potrebbe dedurre

    che( ) 0=

    +xflim

    x

    Invece con la (1.7) si pu dedurre il valore corretto del limite

    ( )2

    1=

    +xflim

    x

    Le ragioni di questo comportamento sono del tutto analoghe a quelle dellesempio precedente: nel

    calcolo con lespressione (1.6) si verifica la cancellazione numerica dovuta al fatto che per valori

    grandi dix si ha

    xx +12

  • 7/15/2019 Metodi Numerici

    35/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    27

    Esempio 33

    Si vuole approssimare il valore di e9 con lo sviluppo in serie di Taylor

    ...n

    x...

    xxxxe

    nx +++++++=

    !!4!3!21

    432

    Ponendo in questa formulax = 9 si ottiene

    ...e ++=!4

    9

    !3

    9

    !2

    991

    4329

    (1.8)

    Effettuando i calcoli con 7 cifre significative, le cifre significative del risultato ottenuto sommando

    n termini della (1.8) si stabilizzano sul valore S= 0.1784883 103 per n 40; poich e9 unnumero positivo, lalgoritmo che si basa sulla formula (1.8) fornisce un risultato completamente

    inattendibile. Anche in questo caso la causa dellinstabilit dellalgoritmo la cancellazione

    numerica nella formula (1.8).

    Si pu per osservare che vale lidentit

    x

    x

    ee

    1=

    e si ottiene cos unaltra formula per il calcolo di e9

    ...e

    e

    +++++

    ==

    !4

    9

    !3

    9

    !2

    991

    11

    4329

    9

    (1.9)

    Pern 27 con la formula (1.9) si ottiene il risultato con 7 cifre significative corrette39

    1012340980 = .e .

    Molti metodi numerici calcolano una successione di valori, ciascuno dei quali ottenuto dai valori

    calcolati precedentemente: tale tecnica si chiama ricorsione.

    Se piccoli errori nei valori precedenti vengono fortemente amplificati nei calcoli successivi, il

    risultato finale pu essere molto inaccurato. Lesempio seguente illustra un metodo di ricorsione:lalgoritmo utilizzato instabile e viene modificato in modo da ottenere la stabilit.

    Esempio 34

    Si vuole determinare il valore dellintegrale

    1

    0

    125 dxex x

    Posto

    =1

    0

    1dxexI xkk

    si integra per parti e si ottiene

    ==1

    0

    111

    1

    0

    1 1 kxkxk

    k kIdxexkexI .

    Inoltre

    === 1

    0

    1

    0

    110

    11

    eedxeI xx .

    Si pu quindi trovare 25I partendo da 0I e calcolando successivamente 1I , 2I ,, 25I con la

    formula di ricorrenza

    25211 1 ,...,,kkII kk == (1.10)

  • 7/15/2019 Metodi Numerici

    36/294

    28 M. Garetto Metodi Numerici

    Universit di Torino

    Si ottiene la seguente tabella di valori8

    8

    I valori di questa tabella e della successiva sono stati calcolati con Matlab

    k kI

    0 6.3212 101

    1 3.6788 101

    5 1.4554 101

    10 8.3878 10215 5.9034 10220 3.0192 10124 7.7114 10625 1.9279 108

    I risultati sono inattendibili per grandi valori di k; infatti ogni kI deve essere positivo, mentre

    alcuni dei valori approssimati sono negativi. Inoltre kI tende a zero al crescere di k, mentre i valori

    approssimati della tabella crescono.

    Il grande errore dovuto al fatto che lerrore su 1kI viene moltiplicato perke propagato su kI .Un errore anche piccolo su 0I viene propagato su 1I , poi moltiplicato per 2 nel calcolo di 2I , poi

    ancora moltiplicato per 3 nel calcolo di 3I , e cos via.

    Nel calcolo di 25I lerrore iniziale su 0I amplificato del fattore 25! 1025. Pi precisamente,

    indicando con kI i valori calcolati di kI e con 0E lerrore su 0I si ha

    ( )

    ( )

    ( )

    02525

    040334

    03030223

    02010112

    010001

    000

    !25

    !4!34141

    !3623131

    22212121

    11

    EII

    .....

    EIEIII

    EIEIEIII

    EIEIEIII

    EIEIII

    EII

    =

    +===

    ==+==

    +=+===

    ===

    +=

    Molti algoritmi ricorsivi mostrano questo tipo di comportamento: si tratta di instabilit numerica.

    Una tecnica per evitarla consiste in questo esempio nel seguente procedimento: ricaviamo 1kI

    dalla relazione di ricorrenza (1.10), e troviamo

    25111

    1 ,...,N,NkIkk

    I kk == (1.11)

    In questa forma lerrore ad ogni passo viene moltiplicato perk1 , e quindi si riduce.

    Da quale valore NI si deve iniziare? Sappiamo che

    0=

    kk

    Ilim

    quindi ragionevole assumere 0=NI per un opportuno valore N> 25 sufficientemente grande e

    poi calcolare 1NI , 2NI ,. fino a 25I .

  • 7/15/2019 Metodi Numerici

    37/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    29

    Per analizzare il comportamento dellerrore, usando le stesse notazioni di prima, si ha

    ( )

    ( )

    ( )( ) ( )( ) N

    NNNNNN

    NNNNNN

    NNN

    ENN...NNN

    II

    ....

    ENN

    IEN

    INN

    INN

    I

    EN

    IEINN

    INN

    I

    EII

    2621

    1

    1

    11

    1

    1

    1

    1

    1

    1

    1

    1

    11111

    2525

    2112

    11

    =

    +=

    =

    =

    =+==

    +=

    Per esempio scegliendoN= 40, nel calcolo di 25I lerrore E40 sul valore di 40I viene moltiplicato

    per il fattore( )( ) ( )

    23102624014040

    1 ...

    : lerrore diventa del tutto trascurabile!

    Partendo da 040 =I e procedendo nel modo sopra descritto, si ottiene la seguente tabella

    k kI

    40 0.0

    35 2.704628971076339 10230 3.127967393216807 10229 3.229067753559440 10228 3.336928698153123 10227 3.452252546494531 10226 3.575842498277980 10225 3.708621442373924 102

    Un interessante esperimento consiste nel calcolare 25I partendo da 140 =I oppure da 140 =I ,anzich da 040 =I : i risultati saranno gli stessi perch lerrore su 40I viene completamenteeliminato.

    1.12 Efficienza computazionale

    Il tempo di macchina richiesto per il completamento di unoperazione aritmetica in floating point

    di solito molto pi lungo del tempo necessario per fare altri tipi di operazioni, quali operazioni su

    interi, operazioni di confronto o logiche.

    Inoltre, la maggior parte degli algoritmi numerici non richiede un gran numero di operazioni non

    aritmetiche.Pertanto una stima ragionevole del tempo macchina richiesto da un certo algoritmo pu essere

    ottenuto con il conteggio del numero di operazioni aritmetiche in floating point.

    In quasi tutti i calcolatori addizioni e sottrazioni richiedono circa lo stesso tempo di esecuzione, per

    cui queste operazioni possono essere contate insieme. Invece le moltiplicazioni e le divisioni hanno

    un tempo di esecuzione sensibilmente diverso, perci vengono contate separatamente.

    Si usa la notazione

    E= a A + b M + c D

    per indicare un calcolo che richiede a addizioni, b moltiplicazioni e c divisioni floating-point.

    Il numero E di operazioni in virgola mobile eseguite con un certo algoritmo serve come utile

    misura dellefficienza dellalgoritmo.

    Se sono disponibili due algoritmi per risolvere lo stesso problema, preferibile in generale quello

    per cui il numeroE pi piccolo.

  • 7/15/2019 Metodi Numerici

    38/294

    30 M. Garetto Metodi Numerici

    Universit di Torino

    Calcolo del valore di un polinomio in un punto: metodo di Horner

    Uno dei calcoli numerici pi comuni la valutazione di un polinomio in un punto. Descriviamo

    due algoritmi per farlo e vediamo come unattenta analisi dellefficienza possa essere utile per

    scegliere lalgoritmo migliore.

    Dato un polinomio ( )xPn di grado n e coefficienti ai , i = 0,1,...,n( ) nnn xa...xaxaaxP ++++=

    2210

    il modo pi ovvio per calcolare il valore di ( )xPn in un assegnato puntox consiste nel calcolare ivalori dei singoli monomi e sommarli.

    Questo metodo richiede n addizioni e 2 n moltiplicazioni; la sua efficienza data dal numero

    E= n A + 2 n M

    Lalgoritmo non consigliabile; un algoritmo molto pi efficiente il seguente, chiamato metodo

    di Horner, che descriviamo per semplicit nel caso del calcolo del valore di un polinomio di

    quarto grado

    ( ) 443

    32

    2104 xaxaxaxaaxP ++++= .

    ( )xP4

    pu anche essere scritto nella forma seguente (forma nidificata)

    ( )

    ( )( )( )( )xaaxaxaxa

    ...xaaxxaxaa

    xaxaxaxaaxP

    43210

    4332

    210

    44

    33

    22104

    ++++=

    ==++++=

    =++++=

    In generale si pu scrivere un polinomio ( )xPn di grado n nella forma nidificata( ) ( )( )( )...xaax....axaxaxP nnn +++++= 1210

    Questo algoritmo richiede n addizioni e n moltiplicazioni e la sua efficienza

    E= n A + n M.

    Il metodo di Horner ottimale, nel senso che non possibile calcolare il valore di un polinomio,

    dato attraverso i suoi coefficienti, con meno di n addizioni e n moltiplicazioni.

    Esempio 35

    Calcolare il polinomio

    ( ) 323 31842381 x.x.x..xP ++= inx = 4.71 usando laritmetica floating point con 3 cifre significative e con arrotondamento.

    Si noti che larrotondamento va effettuato dopo ogni calcolo.

    La tabella seguente riassume i risultati dei calcoli

    x 2x 3x x.23 284 x. 331 x.

    valore esatto 4.71 22.1841 104.487111 15.072 106.48368 135.8332443

    valoreapprossimato con

    arrotondamento 4.71 22.2 105 15.1 107 136

    Dettagli sui calcoli con 3 cifre significative:

    136105311.31072228484

    105714222222714

    32

    2322

    ====

    =====

    .x..x.

    ..xxx..x

    Il valore esatto del polinomio ( )xP3 inx = 4.71 ( ) 22156434683324431354836810607215817143 ......P =++=

    Con laritmetica floating point a 3 cifre significative con arrotondamento si ottiene

    ( ) 945136107115817143 ....P =++=

  • 7/15/2019 Metodi Numerici

    39/294

    Capitolo 1 Nozioni introduttive

    Dipartimento di Matematica

    31

    Lerrore relativo

    00650221564346

    945221564346.

    .

    ..Erel

    =

    Il numero di operazioni effettuate con questo metodo

    E= 3A + 5 MIl metodo alternativo consigliato basato sullalgoritmo di Horner, con il quale si ottiene

    ( ) ( )( )x..x.x.xP 318423813 +++= Sostituendo x = 4.71 e effettuando i calcoli con 3 cifre significative con arrotondamento in ogni

    passo del calcolo si ha

    ( ) ( )( ) 246714318471423714817143 .........P =+++= Lerrore relativo ora

    000470221564346

    246221564346.

    .

    ..Erel

    =

    Il numero di operazioni effettuate con questo metodo

    E= 3A + 3 M

    Il calcolo con lalgoritmo di Horner ha ridotto sensibilmente lerrore relativo, e ci dovuto alla

    diminuzione del numero di operazioni effettuate: un modo per ridurre lerrore di arrotondamento

    consiste nel ridurre il numero di operazioni che producono errore.

    I polinomi dovrebbero sempre essere scritti nella forma nidificata di Horner, prima di valutarli in

    un punto.

    1.13 Codifica degli algoritmi

    Un algoritmo, come noto, un procedimento formato da una sequenza logica di istruzioni

    elementari, non ambigue che, eseguite in un ordine stabilito, consentono di trovare la soluzione diun problema in un numero finito di passi.

    Gli algoritmi vengono di solito formalizzati seguendo opportuni standard di utilizzo comune, che

    ne consentono poi unagevole traduzione in un programma eseguibile da un computer. Uno tra i

    formalismi pi diffusi la pseudocodifica basata su un linguaggio molto vicino a quello naturale

    scritto.

    La pseudocodifica presenta notevoli vantaggi, tra i quali si pu ricordare la possibilit di redigerla

    utilizzando un normale programma di videoscrittura e la facilit estrema di traduzione in un

    linguaggio di programmazione strutturato.

    Per la pseudocodifica si impiega lindentazione, una tecnica che prevede il rientro di gruppi di

    istruzioni cos da evidenziare i limiti di cicli ripetitivi di istruzioni o di alternative possibili.

    Le convenzioni e le strutture su cui basata la pseudocodifica sono le seguenti.

    Tipi di dati: la maggior parte delle variabili sono numeri interi o reali oppure arrays, vettori ematrici; per indicare il generico elemento di un vettore vo di una matrice Asi usano le notazioni

    v(i) o A(i,j).

    Struttura a blocchi: si usa lindentazione per mettere in evidenza i blocchi di istruzioni. Istruzione di assegnazione: per loperatore di assegnazione si usa il simbolo = . Struttura sequenziale: una sequenza di istruzioni viene scritta su righe separate.

  • 7/15/2019 Metodi Numerici

    40/294

    32 M. Garetto Metodi Numerici

    Universit di Torino

    Struttura condizionale: ha la formaif < condizione > then

    else

    end if

    Se al momento dellesecuzione la condizione vera si esegue la sequenza di istruzioni A, altrimenti

    si esegue la sequenza B.

    Lalternativa else pu essere omessa se vuota; si possono usare strutture condizionali annidate.

    Strutture ripetitive: nel caso in cui il numero di iterazioni sia indefinito si usa il ciclo while.Ilciclo while ha la forma

    while < condizione > do

    end while

    Se la condizione vera si esegue il blocco di istruzioni S; poi si ripete il test sulla condizione: se

    falsa il ciclo termina, altrimenti si ripete il blocco di istruzioni S. Il processo continua finch la

    condizione diventa falsa.

    Se il numero di iterazioni noto e definito, si pu usare la struttura ripetitiva controllata da

    contatore, che ha due forme a seconda che il contatore incrementi o decrementi il suo valore

    1- for i = n to m do 2 - for i = m downto n do

    < blocco istruzioni > < blocco istruzioni >

    end for end for

    Istruzioni di ingresso-uscita: si sintetizzano nella formaInput {lista di ingresso}Output {lista di uscita}

    Fine dellalgoritmo: si indica con listruzioneEnd

    Esempio 36

    Come primo esempi