Sei sulla pagina 1di 3

ESERCITAZIONE

1
Esercitazione 1. Aritmetica di macchina.

Esempi di errori numerici. Cancellazione numerica


Un noto problema numerico quello della cancellazione di cifre signicative nella sottrazione di due numeri quasi uguali alla precisione di macchina. Ad esempio, calcolando con Matlab/Octave lespressione (( x + 1) 1)/ x per x = 1015 , il cui risultato esatto ovviamente 1, si ottiene:
>>> x = 1 . e 15 x = 1 . 0 0 0 0 e 15 >>> ( ( 1 + x ) 1)/x ans = 1 . 1 1 0 2

Se effettuiamo le operazioni precedenti in questaltro ordine:


>>> (1 1)+x ans = 1 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e 15

possiamo vedere che in generale la somma di macchina non associativa. Esercizio 1 Si consideri x = 1.005, ed il problema di calcolare p7 ( x ) = ( x 1)7 . Chiamiamo ). Come noto il polinomio si puo scrivere anche nella forma = p7 ( x 7 ( x ) = x7 7x6 + 21x5 35x4 + 35x3 21x2 + 7x 1. p = p 7 (x ). Si ottengono due valori diversi come si verica calcolando lerrore Chiamare relativo | |. Spiegare i risultati ottenuti. Esercizio 2 Al variare di x = 101 , 102 , 103 , . . . , 1015 , si deniscano i numeri reali a = 1 + x e b = 1. Si confronti il valore numerico della somma a + b calcolato con Matlab/Octave con il valore esatto della somma, cio x (impostare il formato di visualizzazione |( a + b) x | a format long e ). Calcolare lerrore relativo . Commentare landamento x degli errori al variare di x. Qual la percentuale dellerrore relativo per x = 1015 ? Suggerimento: si possono usare ad esempio le seguenti istruzioni: 1

Calcolo Numerico AA 1213.

Ingnegneria Industriale. Canali 2 e 5

x =10.^( [1:15]) ; a=ones ( 1 5 , 1 ) +x ; b=ones ( 1 5 , 1 ) ; e r r _ r e l =abs ( ( a+bx ) . / x ) ; [ a+b , x , e r r _ r e l ]

Esercizio 3 Utilizzando opportunamente la formula di Taylor centrata si pu ricavare unapprossimazione della derivata seconda della funzione f ( x ) in un generico punto x0 come segue: f ( x0 ) = d f 2( h ) + ( h ) = f ( x0 h ) 2 f ( x0 ) + f ( x0 + h ) + ( h ). h2

f 4 ( ) con x0 , cio 24 tende a 0 al tendere di h a zero. In artitmetica innita ci si aspetta dunque che lerrore decresca al diminuire di h. Daltra parte al diminuire di h si osserva il fenomeno della cancellazione numerica al numeratore della formula approssimata. Si scriva uno script M atlab/Octave per lapprossi mazione della derivata seconda della funzione f ( x ) = sin x x + 1 + 2x3 , nel punto x0 = 1 utilizzando la formula approssimata precedente per valori di h = 2k , k = 1, 2, . . . , 30. Una volta denito lerrore (in modulo) e(h) = |d f 2(h) f ( x0 )|, con f ( x0 ) calcolato esattamente derivando esplicitamente la funzione data, si visualizzi in un graco con scala logaritmica (comando loglog di Matlab/Octave ) landamento dellerrore e(h) e dellerrore di troncamento (h) al variare di h. Commentare in una breve relazione i risultati ottenuti. Allegare inoltre alla relazione i le .m necessari unitamente alle gure prodotte. noto che lerrore di troncamento di tale approssimazione = h2

Stabilit di un algoritmo
Ricordiamo che un metodo numerico (formula, algoritmo) si dice stabile se non propaga eccessivamente gli errori presenti nei dati iniziali. Altrimenti si dice instabile. La stabilit quindi un concetto legato allalgoritmo usato per risolvere un determinato problema. Si consideri il seguente esercizio: Esercizio 4 Per il calcolo della successione di integrali deniti In = 1 e
1 0

x n e x dx,

si consideri la seguente formula ricorsiva per il calcolo di In : s0 = s n +1 s1 1 1 x 1 e dx = 1 e 0 e = 1 ( n + 1) s n , n0 1 = e

Esercitazione 1: Aritmetica di macchina Ricordando che la successione In descrescente e verica 0 < In < 1, n, si scriva un m-le che implementa lalgoritmo precedente e calcola sn per un n ssato. Si calcoli ad esempio I25 . La ricorrenza stabile? Una possibile implementazione dellalgoritmo instabile la seguente:
% SCRIPT MATLAB PER I L CALCOLO DELLA SUCCESSIONE RICORRENTE . % SUCCESSIONE " s_n " ( IN AVANTI) . CALCOLA s_n=I_n , PER n = 1 : 2 5 s ( 1 ) = e x p ( 1) ; n=25; f o r k = 1 : n1 s ( k +1) =1 (k +1) s ( k ) ; end s e m i l o g y ( 1 : n , a b s ( s ) , k ) ; h o l d on ; t i t l e ( Valori c a l c o l a t i in avanti );

Per calcolare I25 utilizzare un algoritmo stabile. Posto m = 40, si implementi la seguente ricorrenza: 1 1 m x tm = x e dx e 0 1 tk t k 1 = , k = m, m 1, . . . , 26, . . . , 2 k dove si pone per esempio t40 = 0.5 (valore arbitrario minore di 1). Per ottenere la certezza che lalgoritmo implementato corretto si calcoli t1 (precedente 1 algoritmo per k = 2) e si confronti tale valore con il valore vero di I1 = . Lerrore e commesso dovrebbe essere dellordine della precisione di macchina. Esercizio 5 (Facoltativo). Per il calcolo della seguente successione di integrali deniti xn dx, 0 x+5 si consideri la seguente formula ricorsiva per il calcolo di In :
1

In =

s0 = ln(1.2) 1 sn = 5 s n 1 n>0 n Ricordando che la successione In descrescente e verica 0 < In < 1/6, n, si scriva un mle che implementa lalgoritmo precedente e calcola sn per un n ssato. Si calcoli ad esempio I40 . La ricorrenza stabile? Per calcolare I40 utilizzare un algoritmo stabile. Suggerimento. Si proceda come nel precedente Esercizio. Per lalgoritmo stabile si parta ad esempio da un valore approssimato di I65 .

NOTA BENE: Si devono consegnare: una relazione scritta con la soluzione di questi esercizi, i graci ottenuti e gli m-les Matlab/Octave utilizzati.

Potrebbero piacerti anche