A Enza Pellegrino Elisabetta Santi Calcolo numerico Metodi ed applicazioni usando Matlab Copyright © MMXIV ARACNE editrice S.r.l. www.aracneeditrice.it [email protected] via Raffaele Garofalo, /A–B Roma () ---- I diritti di traduzione, di memorizzazione elettronica, di riproduzione e di adattamento anche parziale, con qualsiasi mezzo, sono riservati per tutti i Paesi. Non sono assolutamente consentite le fotocopie senza il permesso scritto dell’Editore. I edizione: settembre Indice PREFAZIONE............................................................................................ 9 ALCUNI CONCETTI DI BASE DEL CALCOLO NUMERICO ............................. 11 1.1 1.2 1.3 1.4 1.5 1.6 INTRODUZIONE ........................................................................................ 11 I SISTEMI DI NUMERAZIONE ........................................................................ 15 LA RAPPRESENTAZIONE DEI NUMERI SUL CALCOLATORE................................... 16 ARROTONDAMENTO DI UN NUMERO REALE .................................................. 21 OPERAZIONI DI MACCHINA IN ARITMETICA FLOATING POINT ............................ 25 ERRORI NELLA RISOLUZIONE DEI PROBLEMI ................................................... 29 COMPLEMENTI DI ALGEBRA LINEARE ..................................................... 47 2.1 2.2 2.3 2.4 2.5 SPAZI VETTORIALI ..................................................................................... 47 I VETTORI DI n . LE NORME VETTORIALI ..................................................... 53 LE MATRICI. LE NORME DI MATRICI .............................................................. 56 ALCUNI RICHIAMI SU AUTOVALORI ED AUTOVETTORI ...................................... 67 MATRICI CON CARATTERISTICHE PARTICOLARI ............................................... 78 SISTEMI LINEARI.................................................................................... 83 3.1 CONCETTI GENERALI ................................................................................. 83 3.2 CONDIZIONAMENTO DI UN SISTEMA LINEARE ................................................ 88 3.3 METODI DIRETTI: METODO DI GAUSS .......................................................... 96 3.4 FATTORIZZAZIONE DI UNA MATRICE ........................................................... 105 3.4.1 Fattorizzazione di Gauss: A = L U ................................................ 106 3.4.2 Fattorizzazione di Cholesky ............................................................ 110 3.4.3 Fattorizzazione Q R ..................................................................... 112 3.4.4 Fattorizzazione SVD ........................................................................ 114 3.5 RAFFINAMENTO ITERATIVO ...................................................................... 118 5 66 Indice Indice Indice 3.6 SISTEMI RETTANGOLARI .......................................................................... 121 3.7 GLI OPERATORI MATLAB \ , / ................................................................ 131 3.8 METODI ITERATIVI (INDIRETTI) DI TIPO PICARD ............................................ 134 3.8.1 Generalità....................................................................................... 134 3.8.2 Criteri d’arresto .............................................................................. 139 3.8.3 I metodi di Jacobi, Gauss-Seidel e le loro generalizzazioni ............ 143 3.8.4 Altri risultati di convergenza .......................................................... 147 EQUAZIONI E SISTEMI NON LINEARI .....................................................155 4.1 CONCETTI GENERALI. CASO MONODIMENSIONALE ....................................... 155 4.2 APPROSSIMAZIONE DELLE SOLUZIONI. ORDINE DI CONVERGENZA ................... 165 4.3 METODO DELLA BISEZIONE (O DI BIPARTIZIONE O DICOTOMICO) .................... 167 4.4 METODI ITERATIVI AD UN PUNTO (O METODI DI PUNTO FISSO)....................... 171 4.5 METODO DI NEWTON O DELLE TANGENTI .................................................. 189 4.6 RADICI MULTIPLE. RADICI VICINE .............................................................. 201 4.6.1 Radici multiple................................................................................ 201 4.6.2 Radici molto vicine ......................................................................... 203 4.7 CRITERI DI ARRESTO. STIMA DELL’ORDINE E DELLA COSTANTE ASINTOTICA ....... 207 4.8 LE FUNZIONI MATLAB FZERO E ROOTS .................................................... 212 4.8.1 La function fzero ............................................................................ 212 4.8.2 La function roots ed altre function relative ai polinomi ............... 215 4.9 SISTEMI NON LINEARI ............................................................................. 218 4.9.1 Metodo del punto fisso .................................................................. 218 4.9.2 Metodo di Newton ......................................................................... 226 4.10 LA FUNZIONE DI MATLAB FSOLVE............................................................ 231 PROBLEMI DIFFERENZIALI DI CAUCHY ..................................................235 5.1 5.2 5.3 5.4 5.5 5.6 5.7 INTRODUZIONE ...................................................................................... 235 IL METODO DI EULERO ............................................................................ 254 GENERALITÀ SUI METODI NUMERICI .......................................................... 256 ERRORI DI TRONCAMENTO, CONSISTENZA, CONVERGENZA ............................ 263 I METODI DI RUNGE-KUTTA ESPLICITI A R STADI ........................................... 268 CONVERGENZA DEI METODI ONE-STEP ESPLICITI. ......................................... 273 CENNO SUI METODI DI RUNGE-KUTTA IMPLICITI A R STADI ............................ 285 Indice Indice Indice 77 5.8 METODI MULTISTEP LINEARI..................................................................... 286 5.9 ANALISI DEI METODI MULTISTEP................................................................ 295 5.9.1 Consistenza ..................................................................................... 296 5.9.2 Zero stabilità ................................................................................... 300 5.9.3 Propagazione dell’errore. Assoluta stabilità .................................. 304 5.10 METODI DI TIPO PREDICTOR-CORRECTOR ................................................. 310 5.11 PROBLEMI STIFF ................................................................................... 315 5.12 ODE SUITE ........................................................................................... 321 APPROSSIMAZIONE DI DATI E FUNZIONI .............................................. 329 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 INTRODUZIONE ...................................................................................... 329 INTERPOLAZIONE POLINOMIALE ................................................................ 333 ALCUNE PROPRIETÀ DELLE DIFFERENZE DIVISE ............................................. 343 QUESTIONI NUMERICHE ED ALGORITMI ...................................................... 347 L’ERRORE NELL’INTERPOLAZIONE POLINOMIALE ........................................... 351 FUNZIONI SPLINE INTERPOLANTI ............................................................... 360 LE FUNCTION MATLAB PER L’APPROSSIMAZIONE DI DATI E FUNZIONI ............. 371 APPROSSIMAZIONE DISCRETA AI MINIMI QUADRATI ...................................... 377 APPROSSIMAZIONE POLINOMIALE AI MINIMI QUADRATI ................................ 382 BIBLIOGRAFIA ..................................................................................... 391 Prefazione Il Calcolo Numerico è quel ramo della Matematica che sviluppa, analizza ed applica metodi atti a risolvere i modelli matematici proposti nei tempi desiderati e con la precisione richiesta. La simulazione matematica è divenuta infatti, nel corso degli ultimi anni, strumento indispensabile per lo studio delle scienze applicate ed in particolare di fenomeni fisici, a volte sostituendo la stessa sperimentazione fisica, con notevoli vantaggi in termini di sicurezza, costi e tempi. La risoluzione dei modelli non può prescindere dall’uso di metodi di calcolo numerico, anche quando è nota la soluzione analitica, soprattutto quando il modello è complicato e la rappresentazione della soluzione risulta inutilizzabile o troppo costosa in termini di operazioni aritmetiche. Il testo è rivolto a studenti delle lauree in Ingegneria, Matematica e Fisica che affrontano per la prima volta lo studio del Calcolo Numerico. Vengono affrontate le problematiche che ispirano la costruzione dei metodi numerici di base che sono spesso passi intermedi nella risoluzione di modelli più complessi; si esaminano le proprietà di stabilità ed accuratezza degli algoritmi, i vantaggi e gli svantaggi di un metodo. Ogni capitolo è corredato di esempi ed esercizi, atti a chiarire la teoria trattata ed a permettere allo studente di acquisire le conoscenze necessarie per decidere sulle metodologie numeriche da utilizzare. Essi vengono risolti utilizzando il programma MATLAB che presenta semplicità di approccio ed ampia diffusione. 9 10 Prefazione Il contenuto del testo si sviluppa su sei capitoli. Il primo è dedicato all’introduzione dei concetti generali e degli elementi di base dell’aritmetica discreta; il secondo è dedicato ai richiami di algebra lineare. I successivi capitoli sono dedicati alla risoluzione di sistemi lineari (Capitolo III), di equazioni e sistemi non lineari (Capitolo IV), di problemi differenziali di Cauchy alle derivate ordinarie (Capitolo V); il Capitolo VI, infine, tratta dell’approssimazione di dati e funzioni. Chi desidera conoscere il codice MATLAB delle function utilizzate nei vari capitoli del testo, può rivolgere la richiesta ad uno dei seguenti indirizzi: [email protected]; [email protected]. L’Aquila, luglio 2014 Enza Pellegrino Elisabetta Santi Capitolo I Alcuni concetti di base del Calcolo Numerico Desideriamo porre, in questo capitolo le basi per poter comprendere meglio le potenzialità del Calcolo Numerico, conoscere come analizzare i risultati evidenziandone soprattutto gli errori, per capire come evitarli e, se ciò non fosse possibile, come ridurli al minimo. 1.1 Introduzione Molti problemi delle Scienze Applicate, dalla Fisica all’Economia alla Medicina, possono essere affrontati e risolti attraverso lo studio del corrispondente modello matematico che in generale si ottiene dando una formulazione matematica del problema reale mediante opportune procedure d’astrazione e semplificazione. Modello matematico è una relazione in termini logico-matematici tra le variabili caratteristiche del problema in esame. La risoluzione del problema matematico così ottenuto, fornirà in generale, le informazioni riguardanti l’evoluzione del fenomeno dopo avere effettuato una validazione del risultato ovvero un confronto con la realtà. Un operatore di Scienze Applicate procederà secondo il seguente schema: 11 12 Calcolo Numerico: metodi ed applicazioni usando Matlab Come si può osservare dallo schema, il Calcolo Numerico (o Analisi Numerica o Calcolo Scientifico) interviene nella risoluzione e nell’esame della soluzione ottenuta. Possiamo dire che: Obiettivo del CALCOLO NUMERICO è trovare gli algoritmi che risolvono un problema matematico nel minor tempo possibile e con la massima accuratezza. La necessità di operare in tal modo è determinata dal fatto che molto spesso i problemi da trattare non possono essere risolti con metodi esclusivamente analitici; a volte poi, pur possedendo la soluzione in forma analitica essa è difficile da trattare in ulteriori operazioni quali ad esempio l’integrazione, e molto spesso inoltre, ha notevole importanza la conoscenza dei valori numerici che essa assume per dati assegnati. Consideriamo i seguenti due esempi legati alla dinamica di una popolazione. Un semplice modello di crescita di una popolazione può essere ottenuto considerando tale crescita dipendente dal numero di nascite n(t) e dal numero delle morti m(t), per unità di tempo. Per semplificare ulteriormente, indicando con y(t) il numero di individui della popolazione al tempo t, supponiamo che n(t) e m(t) siano proporzionali ad esso, ossia n(t) = y(t), m(t) = y(t) con e valori costanti chiamati rispettivamente tasso di natalità e di mortalità. Alcuni concetti di base del Calcolo Numerico Alcuni concetti di base del Calcolo Numerico 13 13 Misurando quindi con y t la variazione del numero di individuinell’unità di tempo, otteniamo l’equazione differenziale lineare ed omogenea proposta da Malthus nel 1798 y t y t y t , è detto tasso di crescita. Si può considerare quindi, il seguente problema: conoscendo il numero di individui y(0) = y0 , al tempo t = 0, e sapendo che al tempo t = t , tale numero è diventato y t , si individui il valore del tasso di crescita . La soluzione si ottiene allora, risolvendo il problema di Cauchy y '(t ) y(t ) ; (1.1.1) y (0) y0 y0 0 essa coincide con la funzione y(t ) y0et . Il richiesto valore di si determina pertanto, risolvendo t l’equazione y t y0e la cui soluzione è: 1 yt ln . t y0 La soluzione del problema in questo caso, è ottenuta nella forma chiusa (analitica) (1.1.2). Si supponga ora, che la popolazione non sia isolata ma sia soggetta a fenomeni di immigrazione od emigrazione nell’unità di tempo, la variazione y t soddisfa quindi la relazione y(t ) n(t ) m(t ) s(t ), dove s(t) indica in questo caso, il numero di individui che si aggiungono nell’unità di tempo. Consideriamo allora un problema analogo al precedente ma relativo al diverso problema di Cauchy: y '(t ) y (t ) s(t ) . (1.1.3) y (0) y0 y0 0 Supponiamo anche, s(t) = d; il valore di s(t) è perciò costante. (1.1.2) La soluzione del problema (1.1.3) è: 14 14 Calcolo Numerico: metodi ed applicazioni usando Matlab Calcolo Numerico: metodi ed applicazioni usando Matlab d d d y(t ) et et 1 y0 y0 et e per determinare , si dovrà risolvere l’equazione non lineare y t y0 d e t d la cui soluzione, diversamente dal caso pre cedente, non può essere ottenuta in forma chiusa, come combinazione di funzioni elementari. Da questo semplice esempio si deduce quindi la necessità di utilizzare opportune procedure basate su tecniche che risultano efficaci in più situazioni, come ad esempio i procedimenti iterativi. Dal momento che uno stesso problema può essere risolto con più metodi numerici, la scelta di un metodo sarà dettata sia dalle sue caratteristiche (efficienza, velocità di convergenza, ecc.), che dagli obiettivi che si vogliono raggiungere (approssimazione più o meno raffinata, costi computazionali ecc.) ed è affidata anche all’abilità ed esperienza di chi deve risolvere il problema. Tale scelta è quindi il risultato di: un’attenta analisi del problema; un’analisi comparativa dei diversi metodi numerici disponibili, sulla base del loro costo e della loro accuratezza. Ai metodi numerici come si è già detto, si associano gli algoritmi: descrizioni complete e ben definite di operazioni logiche ed aritmetiche che consentono di ottenere in un numero finito di passi i risultati y dai dati x. Infine, componente imprescindibile di un progetto di algoritmo è la disponibilità di un calcolatore e l’uso di un linguaggio di programmazione. In ciascuna delle fasi che conducono dal problema reale alla determinazione dei risultati, si introducono errori che possono essere classificati e, per quanto possibile, valutati, ridotti o tenuti in debito conto all’atto della validazione del modello (valutazione della sua attendibilità). Prima di intraprendere la loro trattazione è conveniente premettere dei richiami sui sistemi di numerazione e rappresentazione dei numeri. Alcuni concetti di base del Calcolo Numerico Alcuni concetti di base del Calcolo Numerico 1.2 15 15 I sistemi di numerazione Un qualsiasi numero intero B > 1 può essere assunto come base di un Sistema di Numerazione S, che utilizza quindi i B simboli 0, 1, ..., B 1. Anche se dal punto di vista astratto tutte le basi sono tra loro equivalenti, tre sono le basi generalmente usate: base 2 o binaria, base 10 o decimale, base 16 o esadecimale. Potremo quindi assumere che la base B sia un numero pari. Nel sistema binario B = 2, si utilizzano i simboli 0, 1 in quello decimale B =10, si utilizzano i simboli 0, 1,...,9; in generale, se B 11, si utilizzano numeri e lettere. Se ad esempio B = 16, (sistema esadecimale) si utilizzano 0, 1, ..., 9, A, B, C, D, E, F. In S ogni numero reale x ha la forma detta rappresentazione posizionale (1.2.1) x cncn1...c0 .c1c2 ..., cn 0 il punto che compare tra c0 e c1 è detto punto decimale se la base è 10, punto binario se la base è 2. La (1.2.1) si può scrivere nella forma seguente: x cn B n cn 1B n 1 ... c0 B 0 c1B 1 c2 B 2 ... (1.2.2) B n cn i B i i 0 e gli interi ci , con 0 ci B 1, sono detti Cifre della Rappresentazione. In generale x 0 , eccetto il caso in cui è presente una successione di infinite cifre ak B 1, k 1, per x si ha un’unica rappresentazione in S nella forma detta normalizzata (il primo coefficiente della somma è diverso da 0): (1.2.3) x sign( x) B e ak B k k 1 16 16 Calcolo Numerico: metodi ed applicazioni usando Matlab Calcolo Numerico: metodi ed applicazioni usando Matlab con e intero, 0 a1 B 1 , e 0 ak B 1, k 2. Nella (1.2.3) la serie a B k 1 k k , è una serie convergente. Le sue ridotte n Sn ak B k , per n 1, costituiscono infatti, una successione k 1 Sn n0 non decrescente e superiormente limitata, e quindi conver- gente. Per l’ipotesi di positività dei coefficienti, si verifica che Sn Sn1 n 1 n k 1 k 1 infatti: Sn1 ak B k ak B k an1B ( n1) Sn . Per verificare la limitatezza basta considerare che: n Sn a B n k ( B 1) B k ( B 1) B 1 1 B n 1 B n 1. 1 B k 1 k 1 e k Il numero verso cui converge la serie B ak B è inoltre positivo k 1 k 1 essendo a1 1 . Osservazioni 1 - La serie di tipo (1.2.3) si riduce ad una somma finita se risulta ak 0, per k n , in questo caso il numero x rappresentato, ha un numero finito di cifre. 2 - Considerando per semplicità, un numero reale x > 0, esiste un unico esponente e tale che Be1 x Be . 1.3 La rappresentazione dei numeri sul calcolatore Ogni operazione effettuata su calcolatore è affetta da errori di arrotondamento (round off). Essi sono dovuti al fatto che su un calcolatore può essere rappresentato solo un sottoinsieme finito dell’insieme dei numeri reali. Alcuni concetti di base del Calcolo Numerico Alcuni concetti di base del Calcolo Numerico 17 17 Ma questo non delegittima la rappresentazione dei numeri reali su calcolatore (dunque con un numero finito di cifre) perché tutti i numeri reali si possono approssimare bene con numeri aventi una rappresentazione finita. Se si fissa infatti la base B, vale la seguente proprietà (1.3.1) 0, x , y : x y dove y ha rappresentazione posizionale finita. Un numero reale x è infatti, sempre compreso tra due numeri razionali cioè: a a 1 a a a a A p.i. 1 22 nn x p.i. 1 22 n n C , B B B B B B si è indicata con p.i. la parte intera del numero. Fissato quindi 0 , si può scegliere n in modo che C A e la relazione (1.3.1) è pertanto dimostrata. Ricordiamo anche che più piccola è la base, più lunga è la stringa dei caratteri necessari per rappresentare lo stesso numero. Ad esempio x = 1/10 si scrive 0.110 , nella base 2 diventa 0.000110011....2 ; il numero x ha quindi un numero finito di cifre in base 10 ma ne ha infinite (e periodiche) nella base binaria. Per ogni numero reale viene resa disponibile nel calcolatore una parola costituita da un numero finito N di bit (binary digit). Il modo più intuitivo per utilizzare le N posizioni di memoria per la rappresentazione di un numero x 0 sarebbe quello di fissarne una per il segno del numero, N – k – 1 per la parte intera, e k per le cifre dopo il punto cioè: (1.3.2) x sign x aN 2 aN 3 ak .ak 1 a0 . Un insieme di numeri di questo tipo è detto sistema dei numeri a virgola fissa o fixed point. L’uso della virgola fissa limita però il valore del numero massimo e minimo rappresentabili sul calcolatore a meno di non avere N molto grande e quindi viene limitato alla rappresentazione dei numeri interi. Per superare l’inconveniente suddetto, si utilizza per un numero reale non nullo, la rappresentazione in virgola mobile o floating point 18 18 Calcolo Numerico: metodi ed applicazioni usando Matlab Calcolo Numerico: metodi ed applicazioni usando Matlab data da: e e t (1.3.3) x sign x 0.a1a2 at B sign x m B , con e, numero intero, detto esponente; il numero naturale t, fornisce il numero consentito di cifre significative ai , 0 ai B 1, i 1,..., t , con a1 0 (mantissa normalizzata). Il numero intero m è detto infatti mantissa; esso è definito da: m : a1a2 at a1Bt 1 a2 Bt 2 at B0 . t 1 t 1 k Risulta allora: B m B 1 B B 1 k 0 1 Bt Bt 1 . 1 B Se non considerassimo la mantissa normalizzata, non avremmo un’unica rappresentazione per ogni numero reale, caratteristica importante per evitare qualsiasi ambiguità. Ad esempio, nella base B = 10, supponendo t = 4, il numero 1 potrebbe avere le seguenti rappresentazioni: 0.1000 101 , 0.0100 102 , 0.0010 103 , 0.0001104 ed altre ancora. Nella rappresentazione in virgola mobile, le N posizioni di memoria, che costituiscono una parola, vengono quindi distribuite tra il segno (una posizione), le cifre significative (t posizioni), e le cifre dell’esponente (N – t – 1 posizioni). Il numero 0 che non può esprimersi nella forma (1.3.3) ha, pertanto, una rappresentazione a parte. Tipicamente sui calcolatori sono disponibili due formati per la rappresentazione floating point di un numero: la semplice precisione (N = 32 bit) e la doppia precisione (N = 64 bit). Il MATLAB lavora in doppia precisione e base B=2 ma è in grado di lavorare in singola precisione utilizzando comandi opportuni. Rappresentazione floating point in semplice precisione N= 32 bit s e ( 8 bit) m (23 bit) Alcuni concetti di base del Calcolo Numerico Alcuni concetti di base del Calcolo Numerico 19 19 Rappresentazione floating point in doppia precisione N = 64 bit s e (11 bit) m (52 bit) Denotiamo con F(B, t, L, U) l’insieme dei numeri macchina (o numeri floating point), con base B 2 e t cifre significative; si ha inoltre 0 ai B 1, i 1,..., t , a1 0, esponente L e U , dove L 0, U 0. Tale insieme è definito da: t s e F B , t , L , U : 0 x : x 1 B (1.3.4) ai Bi i 1 dove si è indicato con 1 , s 0,1 il segno di x. s Con semplici passaggi si trova che il più piccolo numero positivo nell’insieme dei numeri macchina è xmin B L B 1 B L1 , il più grande t è xmax BU B 1B i BU 1 B t . i 1 N. B. Volendo valutare quest’ultima quantità dovremmo scrivere BBU 1 1 B t , questo per evitare la situazione di overflow che si avrebbe calcolando invece la quantità BU che verrebbe scritta in mantissa normalizzata, BU 0.1BU 1 . I valori estremi relativamente a MATLAB, si ottengono digitando rispettivamente: realmin e si ottiene la risposta: ans = 2.2251e-308, realmax la risposta in questo caso è: ans = 1.7977e+308. Naturalmente ogni numero positivo in F ha il suo corrispondente negativo ancora contenuto in F. Calcoliamo allora la cardinalità dell’insieme F, cioè il numero degli elementi in esso contenuti, risulta: t 1 (1.3.5) card F 2 B 1 B U L 1 1, 20 Calcolo Numerico: metodi ed applicazioni usando Matlab essendo B 1 B le possibili configurazioni della mantissa, (U – L +1) le possibili configurazioni dell’esponente; compare il fattore 2 perché ci sono i numeri positivi e negativi, ed infine va aggiunto 1 per lo zero. t 1 N. B. Il Matlab lavora di default in doppia precisione (t = 52), in base binaria, con L= 1021 e U=1024, cioè usa l’insieme F 2,52, 1021,1024 e visualizza i risultati in formato decimale, F 10,16, 308, 308 , cioè con 16 cifre significative. Esempio 1.3.1 Si determinino i numeri positivi contenuti nell’insieme F(2, 3, 1, 2): B = 2, t = 3, L = 1, U = 2. Nella Figura 1.3.1 sono visualizzati i punti corrispondenti ai valori trovati per l’insieme considerato al fine di evidenziarne la distribuzione. -0.2 0 0.2 0 0.5 1 1.5 2 2.5 3 3.5 4 Figura 1.3.1 Distribuzione dei valori positivi di F sulla retta reale Tali numeri sono complessivamente 2 1 231 2 1 1 16 , il 1 7 ed il più grande è 22 1 23 . 4 2 Calcoliamo tutti i numeri positivi contenuti in F. Essi sono: numero più piccolo è 211 Alcuni concetti di base del Calcolo Numerico Alcuni concetti di base del Calcolo Numerico 7 , 2 7 .111 21 , 4 7 .111 20 , 8 7 .111 21 , 16 .111 22 1.4 5 , 2 3 5 .110 21 , .101 21 , 2 4 3 5 .110 20 , .101 20 , 4 8 3 5 .110 21 , .101 21 , 8 16 .110 22 3, .101 22 21 21 .100 22 2, .100 21 1, 1 , 2 1 .100 21 . 4 .100 20 Arrotondamento di un numero reale Su un calcolatore è quindi disponibile solo l’insieme discreto F(B, t, L, U ) che è un sottoinsieme di ; questo pone alcuni problemi pratici, primo fra tutti quello della rappresentazione interna di un generico numero reale x e delle conseguenze nell’esecuzione delle operazioni. Se xF (B, t, L, U ) si pone allora il problema di associare, in modo adeguato, a x un numero macchina che indichiamo con fl x . Supponiamo per semplicità x > 0 (analoghi risultati si hanno, ovviamente, se x < 0), e B numero pari (ipotesi verificata per le basi utilizzate in questo contesto). Si possono verificare le seguenti situazioni una volta che si sia scritto x nella forma floating point (1.2.3): a) l’esponente e[L, U]. Possiamo distinguere due casi: a1 e < L situazione di underflow. Solitamente si assume come valore approssimato del numero x il valore zero. In generale viene segnalata una warning ma il calcolo prosegue. a2 e > U situazione di overflow. Tale situazione viene segnalata ed il calcolo si arresta. b) e L,U ma xF (B, t, L, U) perché le cifre ai , con i > t, non sono tutte nulle. Allora, l’approssimazione di x con il numero fl x F (B, t, L, U) può essere effettuata mediante due procedimenti:
© Copyright 2024 Paperzz