• Non ci sono risultati.

Calcolo numerico:

N/A
N/A
Protected

Academic year: 2022

Condividi "Calcolo numerico:"

Copied!
21
0
0

Testo completo

(1)

Analisi Numerica

(R. BROGLIA)

Ingegneria Meccanica

Anno Accademico 2003-04

(2)

Libri di Testo:

• L. Gori: Calcolo Numerico, (IV Ed.) Ed. Kappa, 1999

• L. Gori, M.L. Lo Cascio: Esercizi di Calcolo Numerico, (II Ed.) Ed. Kappa, 1999

• A. Quarteroni, F. Saleri: Introduzione al Calcolo Scientifico, Springer, 2002

Sito internet:

• Dipartimento MeMoMa: http://www.dmmm.uniroma1.it (corsi, laurea triennale,….)

• Home page: http://www.dmmm.uniroma1.it/~broglia

Contatti:

Riccardo Broglia Tel: 06.50299297

[email protected]

(3)

Calcolo numerico:

nozioni introduttive

(4)

Calcolo numerico: generalità

Cosa si intende per calcolo numerico?

Per calcolo numerico si intende quella branca della matematica che studia e sviluppa modelli e metodi al fine di risolvere tramite algoritmi numerici imple-

mentati in un calcolatore, problemi matematici.

(5)

Calcolo numerico: errori

Problema Fisico

Ipotesi semplificative (errori inerenti)

Modello Matematico

Know out, fantasia e arte (errori di troncamento)

Modello Numerico

Algoritmo (stabilità) e computer (errori di arrotondamento)

Soluzione Numerica

(errore computazionale)

La soluzione numerica può essere accettata se e solo se si ha una stima degli errori di cui è certamente affetta

(6)

Errore computazionale: definizioni

Err. computazionale: è la somma degli errori di troncamento e di arrotondamento, argomenti di interesse fondamentale dell’analisi numerica.

Err. troncamento: è dovuto al passaggio dal continuo al discreto.

Err. arrotondamento: è dovuto dalla precisione finita dei calcolatori, così come la sua propagazione.

Detta x la soluzione approssimata e x* quella esatta:

Errore assoluto x*

x − ε =

( )



=

=

=

% 100

/

/ * * *

r r

r x x x x

ε ε

ε

ε

Errore relativo

(7)

Errore di arrotondamento: propagazione

) ,

...

, ,

(x1 x1 xn f

Y = Calcolo di una funzione:

Nel caso di funzione di una variabile:

) (

)

( *

* f x f x

Y

Y − = −

Sviluppando in serie la f(x*) nell’intorno di x:

(

*

)

2 *

*) ( ) ( ) ( )

(x f x f x x x O x x x

f

x

x − + ∆ = −

+

=

ε 3ε

2 1 Sostituendo:

) ( )

( )

( )

( 2

* xf x O x f x f x

Y

Y − = ∆ x + ∆ ≤ ε x = ε x

(8)

Errore di arrotondamento: propagazione

Formula generale di propagazione degli errori:

) (x f

Y ≤ ε x

Nel caso di funzione di più variabili:

) ,

...

, ( )

, ...

,

( 1 1

1 fx1 x xn n fx x xn

Y ≤ ε + + ε n

∆ L

* i i

i = xx

ε Errore sul dato i-esimo

Esercizio: esprimere l’errore commesso per le operazioni di somma algebrica (cancellazione numerica), prodotto e

rapporto tra due valori.

(9)

Propagazione: esempio

Esempio 1.4.1:

4 2

2

4 1

1

10 5

. 0 1233

. 0

10 5

. 0 1234

. 0

=

=

ε ε

x x

0001 .

) ,

(x1 x2 = x1 x2 = f

% 100 10 1

10

4 4

2 1

2

1 = = ⇒ =

≤ +

x r

x Y

Y ε ε ε

• Esercizio consigliato [G] 1.4.2

(10)

Propagazione: esempio

Esempio:

( )

1 7

21 35

35 21

7 )

(

1 )

(

2 3

4 5

6 7

2

7 1

+

+

+

=

=

x x

x x

x x

x x

f

x x

f

Le due funzioni sono identiche in senso algebrico;

calcolo di f1(x) e di f2(x) per x∈[0.9998,1.0002]:

>>x=linspace(0.9998,1.0002,100)

>> f1=(x-1).^7;

>> f2=x.^7-7*x.^6+21*x.^5-35*x.^4+35*x.^3-21*x.^2+7*x-1;

>> plot(x,f1)

>> plot(x,f2)

(11)

Propagazione: esempio

0.9998 0.9999 1 1.0001 1.0002

-1.5 -1 -0.5 0 0.5 1

1.5x 10-26

0.9998 0.9999 1 1.0001 1.0002

-1.5 -1 -0.5 0 0.5 1

1.5x 10-14

f

1

(x) f

2

(x)

( )

7

1

( x ) = x − 1

f

(12)

Propagazione: condizionamento

Consideriamo il calcolo di una funzione y=f(x); e valutiamo quale è l’effetto sul risultato finale di una perturbazione ∆x=x-x* del dato di input:

) (

) ) (

( f x

x x f

Y x Y

f x

Y

∆ ≤

′ ⇒

x C x

x f

x f

x x

x Y

Y

p

= ∆

∆ ′

∆ ≤

) (

) (

Cp: numero di condizionamento del problema

(13)

Propagazione: condizionamento

) (

) (

x f

x f

Cp xx =

C x Y

Y

p

≤ ∆

Se Cp è “grande” il problema è mal condizionato, ossia a piccole perturbazione dei dati iniziali si hanno grandi varia- zioni dei risultati. Viceversa se Cp è “piccolo”, il problema è ben condizionato.

Il condizionamento non dipende dall’algoritmo usato, dipen- de dal problema (f(x)) e dipende dai dati di ingresso (x). Un problema può essere ben condizionato per certi valori di input e mal condizionato per altri.

(14)

Condizionamento: esempio

Esempio 1.5.1:



=

=

=

⇒ =



= +

= +

( ) /(1 )

) 1

/(

1 )

( 0

1

2 2

) 1

( 2 α α α

α α

α

α

α z g

f y

z y

z y

2 2

1 1 )

(

) (

α α α

α α

= +

= ′

g Cz g

2 2

1 2 )

(

) (

α α α

α α

= −

= ′

f Cy f

Il problema del calcolo di y e z è mal condizionato per valori di α prossimi ad 1.

(15)

Condizionamento: esempio

1.0 1.0

1.0 10-4 -2499.75

2500.25 0.9998

-4999.75 5000.25

0.9999

3.4 10-4 1.6 10-4

1.8 10-4 -0.803145670

1.446067105 0.5554

1.446299444 y

-0.803419341

z |∆y/y|

0.5555

|∆z/z|

|∆α/α|

α

Esercizio: stimare il condizionamento del problema del calcolo della y e della z nei due casi.

(16)

Algoritmo: definizione

Il problema numerico è risolto tramite un algoritmo:

ossia una successione di operazioni logiche e aritme- tiche finita e non ambigua, che consente di ottenere il risultato numerico a partire dai dati di input.

Stabilità numerica: sensibilità di un algoritmo alla perturbazione dei dati di input. Un algoritmo è detto stabile se gli errori assoluti sui dati non sono ampli- ficati durante l’elaborazione. Viceversa, l’algoritmo è detto instabile.

(17)

Stabilità di un algoritmo: esempio

0 lim

, 0 1 1 d

0 > =

=

n n n

x n

n x e x I I

I e

Esempio 1.6.1:

Integrando per parti:

0 1

1

3 2

1 1

0

1

! ) 1 ( ) 1 (

) 1 (

) 1 ( 1

) )

2 (

1 )(

1 (

1 )

) 1 (

1 ( 1

1 1 d

I n k

n n

n

I n

n n n

I n

n

nI x

e x

n e e

I

n n

k

k

n n

n x

n n

+ +

+

=

=

+

=

=

=

=

=  −

=

L

L Algoritmo

1 1

= n

n nI

I

...

2856 6321205588

. 0 )

1 1 (

1 1 d

0 = =

= e

e x e e

Io x

Con:

(18)

Stabilità di un algoritmo: esempio

)

!

!

! (!

10 436

. 3 0

2865 2072766470

. 0

! 3 2 3 3 1

5712 2642411176

.

! 0 2 2

1

7144 3678794411

. 1 0

2856 6321205588

. 0

10 26

25 3 0 2 0 1 0 0

=

=

=

+

=

= +

=

=

=

=

I I I I I I I I I

M M

0 0.25 0.5 0.75 1

0 0.2 0.4 0.6 0.8 1

n=0

n=1 n=2 n=4

n=26

14 cifre significative

x n

n x e

x e

y 1

) ( =

(19)

Stabilità di un algoritmo: esempio

Propagazione dell’errore iniziale ε0=I0-I0* nel calcolo di In? L’algoritmo è lineare, quindi:

0

* 0 0

* 0 0

* ( ) ( ) ( 1) !( ) ( 1) !ε

εn = In In = f I f I = nn I I = nn

[ ]

[ ]

0*

1 1

* 0

0 1

0 1

! ) 1 ( )

1 (

) 1 (

) 1 ( 1

) (

! ) 1 ( )

1 (

) 1 (

) 1 ( 1

) (

I n k

n n

n I

f

I n k

n n

n I

f

n n k

k n n

k

k

+ +

+

=

+ +

+

=

=

=

L L

Il termine (-1)nn!, rapporto tra l’errore al “passo” n e quello al “passo” 0, è detto coefficiente di amplificazione dell’er- rore iniziale. L’errore cresce con n, l’algoritmo è instabile.

(20)

Stabilità di un algoritmo: esempio

L’algoritmo può essere così modificato:

n I I

nI

In = n n = 1 n

1 1 1

Sapendo che: e posto Ilim n = 0 N=0 per N fissato:

n I

K , 1 1 ,

0 1 = =

= k N N

k I I

IN k k

(21)

Stabilità di un algoritmo: esempio

Propagazione dell’errore:

) 1 (

1 1

1 1

1

* 1 1

2

*

*

* 1 1

1

=

=

=

=

=

=

=

N N N

N I I

N N

I I

N I N

I I I

N N

N N

N

N N

N N

N N

N N

ε ε ε

ε ε

L’errore si riduce l’algoritmo è stabile.

Esercizio: valutare il valore approssimato di I0 con N=10 e N=15, stimare l’errore commesso; usare tale algoritmo per valutare I7. calcolare I7 a partire da un valore di I0 accurato alla quarta cifra decimale con il metodo instabile.

Riferimenti

Documenti correlati

 le stesse operazioni possono essere applicate nel caso di vettori colonna o più in generale nel caso di matrici.. La cosa essenziale è che gli operandi siano

 se siamo nella stessa directory dove è salvato il file digitare il nome dello script nella linea di comando.  se siamo in una directory diversa rsipetto a quella in cui è

 Al posto di eseguire i comandi direttamente da linea di comando, possiamo memorizzare la successione dei comandi in un file di testo, salvarli e successivamente

 Nel metodo di Gauss , come anche nella fattorizzazione LU , si richiedono divisioni per gli elementi della diagonale principale della matrice considerata.  se

 Tutti i calcoli vengono effettuati in doppia precisione, mentre diversa è la visualizzazione delle variabili che viene determinata con il comando format.  Il

 Un nuovo file .m deve essere memorizzato in una directory contenuta nel path (in genere è quella di lavoro work), oppure si può aggiungere la directory in cui è contenuto al

 il condizionamento dipende dal problema e dai dati di input: uno stesso problema può essere ben condizionato per alcuni valori dei dati e mal condizionato per altri

Se un algoritmo stabile `e applicato ad un problema ben condizionato, allora la soluzione y + δy `e vicina alla soluzione esatta y , cio`e l’errore relativo:.