Corso di Matematica per la Chimica

Documenti analoghi
Esercizi su algebra lineare, fattorizzazione LU e risoluzione di sistemi lineari

Corso di Matematica per la Chimica

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Corso di Matematica per la Chimica

Corso di Calcolo Numerico

Precorso di Matematica

Appunti su Indipendenza Lineare di Vettori

SISTEMI LINEARI. x y + 2t = 0 2x + y + z t = 0 x z t = 0 ; S 3 : ; S 5x 2y z = 1 4x 7y = 3

Anno 2. Equazioni di secondo grado

2. Risolvere con il metodo di eliminazione di Gauss con pivoting parziale il seguente sistema lineare:

Corso di Matematica e Statistica 3 Algebra delle matrici. Una tabella rettangolare: la matrice. Una tabella rettangolare: la matrice

Problema numerico. Relazione funzionale chiara e non ambigua tra dati iniziali e soluzione. Dati iniziali e soluzione sono due vettori finiti x, y.

CONTENUTI. Ci proponiamo un ripasso di argomenti sicuramente svolti nelle scuole superiori e quindi noti a tutti. I grado II grado

Esercizi sui sistemi di equazioni lineari.

SISTEMI LINEARI, METODO DI GAUSS

Metodi per la risoluzione di sistemi lineari

Riassumiamo le proprietà dei numeri reali da noi utilizzate nel corso di Geometria.

Sistemi di 1 grado in due incognite

Corso di Geometria BIAR, BSIR Esercizi 2: soluzioni

Corso di Calcolo Numerico

Dipendenza e indipendenza lineare

Esercizi svolti. risolvere, se possibile, l equazione xa + B = O, essendo x un incognita reale

Chi non risolve esercizi non impara la matematica.

I. Foglio di esercizi su vettori linearmente dipendenti e linearmente indipendenti. , v 2 = α v 1 + β v 2 + γ v 3. α v 1 + β v 2 + γ v 3 = 0. + γ.

1 Fattorizzazione di polinomi

Esercitazione di Calcolo Numerico 1 22 Aprile Determinare la fattorizzazione LU della matrice a 1 1 A = 3a 2 a 2a a a 2 A =

SISTEMI LINEARI MATRICI E SISTEMI 1

Progetto Matlab N 2. Calcolo Numerico 6 CFU. Corso di Laurea in Ingegneria delle Comunicazioni 31/05/2014

+2 3 = = =3 + =3 + =8 =15. Sistemi lineari. nelle stesse due incognite. + = + = = = Esempi + =5. Il sistema è determinato

La riduzione a gradini e i sistemi lineari (senza il concetto di rango)

Equazioni, funzioni e algoritmi: il metodo delle secanti

SISTEMI LINEARI: APPROFONDIMENTI ED ESEMPI

Introduzione a Matlab (e al Calcolo Numerico)

2x 5y +4z = 3 x 2y + z =5 x 4y +6z = A =

Un monomio è in forma normale se è il prodotto di un solo fattore numerico e di fattori letterali con basi diverse. Tutto quanto sarà detto di

1 Ampliamento del piano e coordinate omogenee

Esercitazioni di Algebra e Geometria

Matematica per le scienze sociali Equazioni e disequazioni. Francesco Lagona

MATEMATICA EQUAZIONI FRATTE, DI SECONDO GRADO O SUPERIORE GSCATULLO

ESERCIZI SULLE MATRICI

Equazioni di Primo grado

y 3y + 2y = 1 + x x 2.

Equazioni di primo grado ad un incognita

Giuseppe Accascina. Note del corso di Geometria e Algebra

Le eguaglianze algebriche: Identità ed Equazioni

LE EQUAZIONI DI SECONDO GRADO

Numeri di macchina. Lucia Gastaldi. DICATAM - Sez. di Matematica,

DIPARTIMENTO DI MATEMATICA A.S EQUAZIONI DI GRADO SUPERIORE AL 2

I sistemi di equazioni di primo grado

Algebra Lineare (Matematica C.I.), Sistemi di equazioni lineari. 1. Un equazione lineare in una incognita reale x e un equazione del tipo

Calcolo Numerico con elementi di programmazione

Geometria BIAR Esercizi 2

Funzioni elementari: funzioni potenza

Sistemi di equazioni lineari

Sistemi lineari - Parte Seconda - Esercizi

Matlab. Istruzioni condizionali, cicli for e cicli while.

Appunti sulla circonferenza

ANALISI MATEMATICA PER IL CdL IN INFORMATICA ESERCIZI SULLE DISEQUAZIONI

Esercitazione 6 - Soluzione

CORSO ZERO DI MATEMATICA

1.1 Coordinate sulla retta e nel piano; rette nel piano

RETTE E PIANI. ove h R. Determinare i valori di h per cui (1) r h e α sono incidenti ed, in tal caso, determinare l angolo ϑ h da essi formato;

Geometria analitica del piano pag 12 Adolfo Scimone

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Esercizio 1. Esercizio 2

Esercitazione 5: Sistemi a risoluzione immediata.

LEZIONE 15. (15.1.2) p(x) = a 0 x n + a 1 x n a n 1 x + a n = a h x n h.

1. riconoscere la risolubilità di equazioni e disequazioni in casi particolari

Esercizi sulla retta. Gruppo 1 (4A TSS SER, 4B TSS SER, 4A AM )

Algoritmi per operazioni con le matrici

Esercizi di Matematica per la prova di ammissione alla Scuola Galileiana /16

1 Definizione di sistema lineare non-omogeneo.

Anno 2. Risoluzione di sistemi di primo grado in due incognite

4.5 Metodo del simplesso

LEZIONE 3. Typeset by AMS-TEX

3x + x 5x = x = = 4 + 3x ; che equivale, moltiplicando entrambi i membri per 2, a risolvere. 4x + 6 x = 4 + 3x.

I numeri reali e la loro rappresentazione

Matematica II,

Corso di Calcolo Numerico

Pagine di Algebra lineare. di premessa al testo Pagine di Geometria di Sara Dragotti. Parte terza: SISTEMI LINEARI

Esercizi svolti sui sistemi lineari

Il teorema di Rouché-Capelli

LEZIONE 4. { x + y + z = 1 x y + 2z = 3

Esercitazione 1-I parte

Esercizi svolti sui sistemi lineari

ESERCIZI IN PIÙ I NUMERI COMPLESSI

ESERCIZI MATEMATICA GENERALE - Canale III

Disequazioni di secondo grado

Anno 5 Regole di derivazione

Esercizi svolti sugli integrali

ẋ 1 = 2x 1 + (sen 2 (x 1 ) + 1)x 2 + 2u (1) y = x 1

Corso di Calcolo Numerico

Transcript:

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis Dipartimento di Matematica, Informatica e Economia Università della Basilicata a.a. 2014-15 Propagazione degli errori introdotti nei dati iniziali

Condizionamento di un problema L esempio della cancellazione numerica introduce un concetto molto rilevante dell Calcolo Scientifico: il condizionamento di un problema. Nella risoluzione di un problema matematico è in molti casi utile avere una misura di quanto i risultati siano sensibili a piccoli cambiamenti dei dati iniziali. In generale se a piccoli cambiamenti nei dati iniziali corrispondono grandi cambiamenti nei dati finali diremo che il problema è mal condizionato. In caso contrario diremo che è ben condizionato. La quantità responsabile dell amplificazione degli errori nei dati iniziali si chiama indice di condizionamento.

Il condizionamento è una caratteristica propria del problema matematico e non ha alcun legame né con gli errori di arrotondamento delle operazioni macchina, né con gli algoritmi eventualmente scelti per risolverlo.

Determinare l indice di condizionamento di un problema non è sempre facile. Consideriamo il caso semplice del problema numerico della somma. Siano x, y e z tre numeri reali con z = x + y. Supponiamo di perturbare x con x e y con y e sia z = (x + x) + (y + y). Calcoliamo l errore relativo che commettiamo approssimando z con z.

δz = = = z z x + y x x y y = z x + y x + y 1 [ x x + y y ] x + y x + y x y ( max{ x, y } x + y ) x + y x y max{ x, y } (δx + δy). x + y La quantità max{ x, y } x + y rappresenta l indice di condizionamento. Ciò significa che se facciamo la somma tra due numeri molto vicini e di segno opposto, anche se gli errori relativi δx e δy sono piccoli, il valore z approssimerà z con un errore relativo grande, cioè l operazione somma diventa mal condizionata e si verifica il fenomeno della Cancellazione Numerica.

In generale, denotato con f (x) un generico problema numerico avente x come dato iniziale, si cerca di determinare una relazione del tipo f (x) f ( x) f (x) K x x, dove K rappresenta l indice di condizionamento del problema f. Quanto più è piccolo K, tanto più il problema è ben condizionato.

Esempio Consideriamo il sistema lineare di due equazioni in due incognite { x1 x 2 = 1 le cui soluzioni esatte sono x 1 1.00001x 2 = 0 x 1 = 100001, x 2 = 100000. Perturbiamo di una piccola quantitá pari a 0.2 10 4 il coefficiente dell incognita x 2 nella seconda equazione. Il suo nuovo coefficiente sarà 1.00001 + 0.2 10 4 = 0.99999. Il nuovo sistema diventa { y1 y 2 = 1 y 1 0.99999y 2 = 0 e le sue soluzioni sono y 1 = 99999, y 2 = 100000.

Osservazioni Provando a risolvere i precedenti sistemi con il metodo di Cramer o il metodo di sostituzione si ottengono soluzioni diverse da quelle indicate. Per verificare che le soluzioni indicate sono corrette, basta sostituirle in ciascuna riga del sistema. Poichè le soluzioni sono state ricavate lavorando in aritmetica infinita, l unico motivo per il quale, in seguito alla piccola perturbazione, si sono ottenuti risultati tanto diversi è che la risoluzione del sistema di partenza è un problema mal condizionato.

Stabilità di un algortimo Un algoritmo, per un problema numerico, è una sequenza finita di operazioni non ambigue che trasforma i dati di input e fornisce uno o più valori di output. Diremo che un algoritmo è instabile se amplifica gli errori di arrotondamento durante la computazione della soluzione di un problema ben condizionato. Dunque il concetto di stabilità di un algoritmo è strettamente connesso con la precisione di calcolo finita e con le operazioni in cui si risolve l algortimo stesso.

Esempio Consideriamo ora il seguente sistema lineare di due equazioni in due incognite αx 1 +x 2 = 1 + α, x 1 = 1 la cui soluzione esatta è x 1 = x 2 = 1. Si dimostra che il problema della sua risoluzione è ben condizionato.

Nonostante l immediatezza della soluzione, seguiamo lo schema di calcolo del metodo di eliminazione di Gauss. Moltiplicando ambo i membri della prima equazione per 1 α, otteniamo 1 α (αx 1 + x 2 ) = 1 (1 + α), α cioé x 1 1 α x 2 = 1 + α α.

Sommando la precedente equazione alla seconda equazione, otteniamo x 1 1 α x 2 = 1 + α α + x 1 = 1 = 1 α x 2 = 1 1 + α α

Rimpiazzando la seconda equazione con quella ottenuta, otteniamo il seguente sistema equivalente al precedente: αx 1 +x 2 = 1 + α, 1 α x 2 = 1 1+α α Computiamo i coefficienti del sistema per α = 0.5 10 11. Si ha 0.5 10 11 x 1 +x 2 = 1 + 0.5 10 11, 2 10 11 x 2 = 1 1+0.5 10 11 0.5 10 11 e, dunque, eseguendo la computazione in base alla priorità degli operatori aritmetici, ) 1 x 2 = 1 (1+0.5 10 11 ) = 1 2 10 11 ( (0.5 10 11 ) x 1 = (1+0.5 10 11 1) = 1.000000082740371 0.5 10 11

Scambiamo ora le equazioni tra di loro x 1 = 1 αx 1 +x 2 = 1 + α, (1) e ripetiamo la procedura di eliminazione dell incognita x 1 dalla seconda equazione.

Moltiplicando ambo i membri della prima equazione per α, otteniamo αx 1 = α,

Sommando la precedente equazione alla seconda equazione, otteniamo αx 1 = α + αx 1 + x 2 = 1 + α = x 2 = 1 Dunque { x 1 = 1 x 2 = 1. Questa procedura che, sotto opportune condizioni, prevede lo scambio delle righe di un sistema lineare prende il nome di pivoting.

La causa di questo bizzarro comportamento è da ricercarsi nella sequenza di operazioni che ci conducono dai dati iniziali ai risultati, ovvero nell algoritmo. Il metodo di eliminazione di Gauss in generale non è stabile, ma se viene combinato con il pivoting è sempre stabile.

Abbiamo detto che il problema della somma tra due numeri molto vicini è mal condizionato e genera il fenomeno della Cancellazione Numerica. Per questo tipo di problema è ancora più importante scegliere un algoritmo stabile.

Se consideriamo il problema della differenza tra due radicali, abbiamo visto che δ x + δ x =. x + δ + x Come abbiamo già verificato con dei tests numerici, l algoritmo che implementa la formula al primo membro è instabile mentre quello che implementa la formula al secondo membro è sempre stabile.

Analogo discorso si può fare per: il calcolo della differenza tra due coseni con le formule equivalenti: cos (x + δ) cos (x) e 2 sin 2 ( δ 2 ) il calcolo delle radici dell equazione ax 2 + bx + c = 0 con le formule equivalenti: e x 1,2 = b ± b 2 4ac 2a x 1 = b + sign(b) b 2 4ac, x 2 = c 2a ax 1 Abbiamo già verificato con dei tests numerici, che per entrambi l algoritmo che implementa la prima formula è instabile mentre quello che implementa la seconda è sempre stabile.

Dunque il controllo degli errori passa essenzialmente per due fasi: studio del condizionamento del problema matematico; uso di un algoritmo stabile per la soluzione del problema.

Conclusioni qualsiasi algoritmo applicato ad un problema mal condizionato genererà amplificazione degli errori di rappresentazione dei dati. si avrà propagazione degli errori di arrotondamento applicando un algoritmo instabile ad un problema ben condizionato. si raggiunge la massima precisione di calcolo quando un algoritmo stabile viene applicato ad un problema ben condizionato. A volte può accadere che un problema sia ben condizionato per certi dati iniziali e mal condizionato per altri (vedi l operazione di somma). L obiettivo dei matematici che si occupano del Calcolo Scientifico è quello di risolvere problemi numerici di cui hanno studiato a priori il condizionamento con algoritmi che siano il più possibile stabili.

Esercizi in MatLab Risolviamo il sistema { x1 x 2 = 1 x 1 1.00001x 2 = 0 Definiamo la matrice del sistema: >> A=[1,-1;1,-1.00001] A = 1.00000000000000e+000-1.00000000000000e+000 1.00000000000000e+000-1.00001000000000e+000 Definiamo il vettore dei termini noti: >> b=[1;0] b = 1 0

Esercizi in MatLab Risolviamo il sistema Ax = b con la function \ del MatLab: >>x=a\b x = 1.00000999999345e+005 9.99999999993449e+004

Esercizi in MatLab Calcoliamo gli errori relativi: >> err1=abs(100001-1.00000999999345e+005)/abs(100001) err1 = 6.54989706446956e-012 >> err2=abs(100000-9.99999999993449e+004)/abs(100000) err2 = 6.55098119750619e-012 Si ha err1 = 0.65498970644695610 11 = 1 2 0.13099794128939110 10 < 1 2 10 10, err2 = 0.65509811975061910 11 = 1 2 0.13101962395012410 10 < 1 2 10 10, cioé entrambe le soluzioni sono state calcolate con solo 11 cifre significative corrette.

Esercizi in MatLab La function \ del MatLab risolve i sistemi lineari con un algoritmo stabile che implementa il metodo di eliminazione di Gauss con pivoting. Pertanto la perdita di cifre significative è dovuta al mal condizionamento della matrice del sistema. Se A denota la matrice dei coefficienti di un sistema lineare il comando cond(a,inf) del MatLab permette di calcolare l indice di condizionamento del problema della risoluzione del sistema.

Esercizi in MatLab >> c=cond(a,inf) c = 4.00004000007380e+005 Poichè le perturbazioni che induciamo sui dati iniziali A e b del problema sono dell ordine dell epsilon-macchina, moltiplicando l indice di condizionamento ottenuto per la variabile eps del MatLab, otteniamo una stima dell errore con cui calcoleremo la soluzione x. >> deltax=c*eps deltax = 8.88187301500708e-011 cioé deltax = 0.88818730150070810 10 = 1 2 0.17763746030014210 9 < 1 2 10 9. La precedente stima ci dice che nel risolvere un sistema lineare avente A come matrice dei coefficienti con un algoritmo stabile possiamo ottenere almeno 10 cifre significative corrette. Tale stima è confermata dai tests numerici, infatti abbiamo 11 cifre.

Esercizi in MatLab Risolviamo il sistema { y1 y 2 = 1 y 1 0.99999y 2 = 0 Definiamo la matrice del sistema: >> A=[1, -1;1, -0.99999] A = 1.00000000000000e+000-1.00000000000000e+000 1.00000000000000e+000-9.99990000000000e-001 Definiamo il vettore dei termini noti: >> b=[1;0] b = 1 0

Esercizi in MatLab Risolviamo il sistema Ax = b con la function \ del MatLab: >>x=a\b x = -9.99990000004551e+004-1.00000000000455e+005

Esercizi in MatLab Calcoliamo gli errori relativi: >> err1=abs(-99999+9.99990000004551e+004)/abs(-99999) err1 = 4.55101147863424e-012 >> err2=abs(-100000+1.00000000000455e+005)/abs(-100000) err2 = 4.54994733445346e-012 Si ha err1 = 0.45510114786342410 11 < 1 2 10 10, err2 = 0.45499473344534610 11 < 1 2 10 10, cioé entrambe le soluzioni sono state calcolate con solo 11 cifre significative corrette.

Esercizi in MatLab Calcoliamo l indice di condizionamento del problema. >> c=cond(a,inf) c = 4.00000000001820e+005 Poichè le perturbazioni che induciamo sui dati iniziali A e b del problema sono dell ordine dell epsilon-macchina, moltiplicando l indice di condizionamento ottenuto per la variabile eps del MatLab, otteniamo una stima dell errore con cui calcoleremo la soluzione x. >> deltax=c*eps deltax = 8.88178419704167e-011 cioé deltax = 0.88817841970416710 10 = 1 2 0.17763746030014210 9 < 1 2 10 9. Dunque nel risolvere un sistema lineare avente A come matrice dei coefficienti con un algoritmo stabile possiamo ottenere almeno 10 cifre significative corrette. Ne abbiamo ottenute 11.

Esercizi in MatLab Risolviamo il seguente sistema lineare con α = 0.5e 11 αx 1 +x 2 = 1 + α, La sua soluzione esatta è x 1 = 1 x 1 = x 2 = 1 per ogni scelta di α. Definiamo la matrice del sistema e il vettore dei termini noti: >> al=0.5e-11; >> A=[al, 1; 1,0]; >> b=[1+al;1];

Esercizi in MatLab Calcoliamo l indice di condizionamento del problema. >> c=cond(a,inf) c = 1.00000000001000e+000 Poichè le perturbazioni che induciamo sui dati iniziali A e b del problema sono dell ordine dell epsilon-macchina, moltiplicando l indice di condizionamento ottenuto per la variabile eps del MatLab, otteniamo una stima dell errore con cui calcoleremo la soluzione x. >> deltax=c*eps deltax = 2.22044604927252e-016 cioé deltax = 0.22204460492725210 15 < 1 2 10 15. Da cui deduciamo che il problema della risoluzione del sistema è ben condizionato e se lo risolviamo con un algoritmo stabile possiamo ottenere una soluzione con 15 cifre significative corrette.

Esercizi in MatLab Abbiamo visto che se lo risolviamo applicando il metodo di Gauss otteniamo un sistema equivalente le cui soluzioni sono: ) 1 x 2 = 1 (1+0.5 10 11 ) = 1 2 10 11 ( (0.5 10 11 ) x 1 = (1+0.5 10 11 1) = 1.000000082740371 0.5 10 11 Infatti >> x1=(1+0.5e-11-1)/0.5e-11 x1 = 1.00000008274037e+000 >> x2=(1-(1+0.5e-11)/0.5e-11)/(-2.e+11) x2 = 1 Dunque, se un problema ben condizionato viene risolto con un algoritmo instabile si ottengono soluzioni poco accurate.

Esercizi in MatLab Se, invece, lo risolviamo con la function \ del MatLab che implementa il metodo di eliminazione di Gauss con pivoting, otteniamo: >> A\b ans = 1 1 Dunque, se un problema ben condizionato viene risolto con un algoritmo stabile si ottengono soluzioni molto accurate.

Esercizi in MatLab Siano a = 1.4e154 e b = 1.3e154. Calcolare le espressioni equivalenti (a 2 b 2 ) e (a b)(a + b) e confrontare i risultati. >> a=1.4e154; b=1.3e154; >> (a 2-b 2) ans = Inf >> (a-b) (a+b) ans = 2.70000000000000e+307 Si può vedere che con il primo algoritmo si ottiene un risultato che non è un numero macchina (overflow).ciò si verifica perché >> a 2 ans = Inf Possiamo concludere che il secondo algoritmo è più stabile del primo.

Esempi in MatLab Data l equazione di secondo grado 10 8 x 2 + 2x + 10 6 = 0, calcolare le radici con le formule: e x 1,2 = b ± b 2 4ac, 2a x 1 = b sign(b) b 2 4ac, x 2 = c 2a ax 1 e confrontare i risultati ottenuti con i valori esatti x 1 = 0.510 6 e x 2 = 0.210 9.

Esempi in MatLab >> a=1.e-8;b=2;c=1.e-6; >> x1=(-b+sqrt(b 2-4*a*c))/(2*a) x1 = -4.99600361081320e-007 >> x2=(-b-sqrt(b 2-4*a*c))/(2*a) x2 = -1.99999999999999e+008 >> x11=c/(a x2) x11 = -5.00000000000001e-007 Poiché >> abs(x1-x11)/abs(x1) ans = 7.99917193446053e-004 con la prima formula si calcola la radice x 1 con solo 3 cifre significative corrette.