Problemi e algoritmi. Riprendiamo a discutere sui problemi matematici da affrontare e risolvere con opportuni algoritmi. Possiamo pensare che il problema in questione abbia dei dati di ingresso in termini di n numeri reali x 1,, x2, ….xn, e dei dati di uscita ( risultati) rappresentati da m numeri reali y1, …ym. Questo modo di vedere è molto semplificato, perché, in realtà, i dati in ingesso possono essere funzioni reali di una più variabili, ( si pensi al problema del calcolo di un integrale definito in cui in ingresso c’è una funzione continua e gli estremi di un intervallo di integrazione). Ma, con qualche sforzo, conviene adottare il precedente punto di vista, per mettere in relazione problemi e algoritmi. Allora, un metodo di risoluzione del problema, quando viene descritto rigorosamente in singoli passi operativi, diventa un algoritmo di risoluzione del problema. L’algoritmo ha gli stessi dati in ingresso del problema ma, in uscita a causa degli errori di troncamento, ∗ produce in luogo di y1, …ym. i numeri reali y1∗ ,y2∗ , … ym . Questi risultati sono da considerasi ancora teorici e non effettivi, in quanto stiamo supponendo che l’algoritmo adotti per eseguire le operazioni aritmetiche un’aritmetica esatta, senza operare nessun arrotondamento né sui dati in ingresso, né sulle variabili che si vengono a creare durante l’elaborazione. Cioè si fa l’ipotesi, puramente astratta, che l’algoritmo si possa implementare in un ambiente di programmazione che adotti un’aritmetica infinita ( esatta). Comunque le differenze yi∗ − yi , i = 1…m, sono gli errori di troncamento che non sono noti, perché non sono noti né gli yi, né gli yi∗ . Da uno studio dell’algoritmo si possono trovare le maggiorazioni Ai, | yi∗ - yi | ≤ Ai, i = 1, …m. Oppure si possono trovare le maggiorazioni degli errori relativi di troncamento y ∗i −y i yi , i = 1 … m.. Quando si adotta un ‘aritmetica finita, allora i dati di ingresso diventano, fl(xi), i = 1,…n, perché devono essere forzati ad appartenere all’insieme F dei numeri floating dell’aritmetica. Poi, se durante l’elaborazione, nessuna variabile cade in un under flow o in un over flow, i risultati effettivi sono i numeri floating dell’aritmetica yi , i = 1, … m. Nascono gli errori assoluti di propagazione yi −yi∗ , i = 1,…m, che non sono ∗ noti, perché non sono noti i valori y1∗ ,y2∗ , … ym . Da un’analisi sui passi dell’algoritmo si possono trovare le maggiorazioni degli errori assoluti Bi, | yi −yi∗ | ≤ Bi, oppure le maggiorazioni degli errori relativi di y i −y ∗i , i = 1 … m. y ∗i yi −yi∗ + yi∗ - yi, propagazione Gli errori globali ( assoluti) sono evidentemente yi - yi , i = 1, …m. Da notare che yi - yi = i =1, …m, cioè l’errore globale è la somma dell’errore di troncamento e dell’errore di propagazione. Questi due errori possono avere segno opposto, come lo stesso segno, ma, possedendo solo le maggiorazioni, non resya che applicare la regola il valore assoluto di una somma è non superiore alla somma dei valori assoluti. Da cui | yi - yi |=| yi −yi∗ + yi∗ - yi| ≤ |yi - yi | + | yi∗ - yi | ≤ Ai + Bi = Mi, i = 1, …m. Per maggiorare l’errore globale relativo possiamo utilizzare l’eventuale informazione |y i| ≥ ci > 0. Poiché in una frazione diminuendo il denominatore sale il valore si trae y i −y i ,| yi | ≤ Mi Ci = mi , i =1, …m. Indici di condizionamento Per studiare gli errori di propagazione si usano l’analisi diretta e l’analisi inversa. L’analisi inversa si basa sulla nozione di condizionamento o numeri di condizionamento che sono nozioni relative al problema ma non relative all’eventuale algoritmo di risoluzione. Dato un problema con dati di ingresso xi, i =1, …n, e dati in uscita yi, i = 1, …m, ci poniamo la seguente questione. Se perturbiamo un solo dato in ingresso, supponiamo xi, di una quantità δxi, cosa succede dei dati in uscita ? Evidentemente ogni dato cambierà di valore ed esisteranno δyj, j = 1, …m, tali che le nuove uscite saranno yj + δyj, j = 1, …m. Alla perturbazione relativa del dato yi, δyi/yi corrisponderanno le perturbazione relative su tutti i dati in uscita δyj/yj, j = 1, …m. Possono verificarsi diverse situazioni. Potrebbe capitare che a piccole perturbazioni relative sul dato xi, corrispondano piccole perturbazioni relative su tutti i dati in uscita. Il problema è ben condizionato rispetto al dato xi. Ma potrebbe anche succedere che il problema risenta molto della variazione relativa su xi, producendosi grosse variazioni relative sui dati. Si tratta di un problema mal condizionato. Rimane mal condizionato anche se le grosse perturbazioni relative avvengono su parte dei dati in uscita. Poi si potrebbe cambiare il dato in ingresso su cui effettuare perturbazioni, avendosi risultati differenti. In generale si cerca di perturbare tutti i dati e vedere come le uscite risentano di queste perturbazioni. Per analizzare queste situazioni si cercano di individuare delle costanti positive cij , dette indici di condizionamento o numeri di condizionamento tali che δy j yj ≤ Cij δx i xi , j =1, …m. Se queste cij non producono maggiorazioni grossolane delle perturbazioni in uscita cioè sono individuate con una certa accuratezza, misurano la sensitività dei dati in uscita rispetto alle variazioni nell’ingresso xi. Spesso sono anche chiamati indici di sensitività. Misure globali. I dati di ingresso in un problema, secondo il modello proposto, possono raccogliersi in un vettore a n componenti così come i dati di uscita, sono compattati in un vettore a m componenti. Questo induce a maniere semplificate, anche se non molto rigorose di trattare gli errori assoluti e relativi e le misure di condizionamento. Un errore relativo componente per componente è arduo da studiare e, spesso, conviene usare valutazioni globali meno difficili da trattare. Anche le misure di sensitività dei dati in uscita, con riferimento alla perturbazione, volta per volta, di un singolo dato in ingresso, presenta le stesse difficoltà. A tale scopo riprendiamo alcune nozioni familiari sullo spazio Rn dei vettori a n componenti e definiamo misure di grandezza su questi che sono comunemente dette norme su vettori. Un vettore x in R n ( lettere minuscole in grassetto), enfatizzando le componenti si scrive oppure x1 x π± = .2 xn x = (xi)1≤i≤n Il vettore nullo è denotato con 0n e se la dimensione n dello spazio è chiara dal contesto, anche semplicemente con 0. La familiare operazione di prodotto con uno scalare c ( lettere minuscole) forma il vettore cx, definito da cx1 cx cπ± = .2 cxn L’operazione somma tra due vettori x = (xi)1≤i≤n e y = (yi)1≤i≤n è il vettore x + y definito da x1 + y1 π± + π² = x2 +. y2 xn + yn Viene automaticamente individuata una struttura di spazio lineare su Rn, potendosi eseguire combinazioni lineari tra vettori, definire sottospazi vettoriali, ecc., che richiameremo al momento opportuno. Il vettore (-1)x sarà denotato con – x. In questo momento, preme la Definizione Una funzione || · || : Rn βΌ R, è una norma se verifica le condizioni 1. || x || ≤ 0, || x || = 0, se e solo se x = 0 2. || λx || = |λ| || x ||, ∀ π±π ππ§ , ∀ππR 3. || x + y || ≤ || x || + || y ||, ∀ x, y, Ο΅ Rn. • La terza proprietà è la proprietà triangolare per le norme. Ogni norma induce una distanza tra vettori, così definita d(x, y ) = || x – y ||, ∀ x, y, Ο΅ Rn. Dalle proprietà delle norme seguono le seguenti tre proprietà delle distanze 1. d(x, y) ≥ 0, ∀ x, y, Ο΅ Rn , d(x, y ) = 0 se e solo se x = y 2. d(x, y ) = d(y, x) 3. d(x, y) ≤ d(x, z) + d(z, y) Cioè ogni norma su Rn indice una struttura di spazio metrico su Rn, che è una struttura comunque più povera, in quanto non interviene la seconda proprietà delle norme. La terza proprietà delle distanze prende il nome di proprietà triangolare delle distanze. Per il fatto che ogni norma induce una distanza, possiamo dare la nozione di sfera aperta di centro x0 Ο΅ Rn, e raggio ρ ≥ 0 . Si tratta di tutti i vettori x Ο΅Rn, aventi distanza da x0 inferiore a ρ. Se ρ = 0, si tratta dell’insieme vuoto. In simboli B(x0, ρ ) = { x Ο΅Rn | d(x, x0) < ρ }. Poiché la distanza deriva da una norma in luogo di d(x, x0), si può scrivere || x – x0 ||. La superficie sferica di centro x0, e raggio ρ ≥ 0, è l’insieme dei vettori x Ο΅Rn, aventi distanza da x0 uguale a ρ Se ρ = 0, si tratta del solo vettore x0. In simboli , S(x0, ρ ) = { x Ο΅Rn | d(x, x0) = ρ }, potendosi scrivere al posto di d(x, x0), l’espressione in termini di norma || x – x0 ||. Infine la sfera chiusa è la unione della sfera aperta e della superficie sferica, cioè B π±π , ρ = π±Ο΅Rn d(π±, π±0 ) ≤ ρ} Se ρ = 0, la sfera chiusa è formata dal solo centro x0 e al, solito, si usa scrivere || x – x0 || in luogo di d(x, x0). Vale il fondamentale Teorema ( dell’equivalenza tra norme). Assegnate due norma ||· ||a e ||· ||b, in Rn, esistono le costanti positive , m e M tali che π± a π± b m≤ ≤ M, ∀ π±Ο΅Rn - {0 } • Le costanti positive M e M indipendenti dal vettore x, possono dipendere, dalla dimensione n dello spazio. Un modo diverso di scrivere la disuguaglianza è m || x ||b ≤ || x ||a ≤ M || x ||b, potendo valere anche per il vettore nullo. Se al posto di ||· ||a si mette ||· ||b e viceversa il ruolo di M è giocato da 1/M e il ruolo di M, da 1/m. Le conseguenze di questo teorema sono importanti. Per esempio, un sottoinsieme Ω di Rn è limitato se esiste una costante C positiva tale che || x || ≤ C, per ogni x appartenente a Ω. In questa definizione, per il teorema dell’equivalenza tra le norme, si può usare qualsiasi norma. Al più la costante C sarà diversa da norma a norma. Inoltre per tutti i concetti topologici in Rn ( insieme aperto, insieme chiuso, insieme compatto, limite di successioni di vettori, ecc.) l’uso di una norma qualsiasi può sempre andare bene. Le nozioni di continuità tra funzioni definite in Rn e a valori in Rm richiede una qualsiasi norma dello spazio di partenza e una qualsiasi norma dello spazio di arrivo. Le classiche norme. Introduciamo, ora, tre classiche norme di cui faremo uso in seguito. La prima è la norma infinito, || · ||∞, è definita da || x ||∞ = max1≤π≤π |xi |, per ogni x in Rn La seconda è la norma uno, || · ||1, definita da || x ||1 = | x1 | + | x2 | + … | xn | Per queste due norme è agevole controllare che sono soddisfatte le tre condizioni. Quindi si tratta effettivamente di norme. La terza norma, la norma due o norma euclidea, || · ||2 viene definita come π₯ 2 = x12 + x12 + β― xn2 Le prime due condizioni sono facilmente verificate. Per quanto riguarda la proprietà triangolare, esiste qualche difficoltà. Comunque sono tutte e tre soddisfatte e si tratta di una norma effettiva. Il motivo per cui viene detta anche norma euclidea, risiede nel fatto che, per ogni coppia di vettori x e y, in R2 ( il piano) o in R3 ( lo spazio) la distanza d(x,y) = || x – y ||, è esattamente la lunghezza del segmento che unisce il punto x al punto y. Per il teorema di equivalenza tra norme devono essere tra loro equivalenti. Infatti risulta, per esempio, || x ||∞ ≤ || x ||1, ma anche || x ||1 ≤ n|| x ||∞ così come || x ||∞ ≤ || x ||2 e || x ||2 ≤ √n || x ||2. La sfera aperta o chiusa di centro l’origine ( vettore nullo) e raggio ρ è in R2 il cerchio di centro l’origine senza o con la circonferenza e raggio ρ. Invece in R3 si tratta della sfera aperta o chiusa di centro l’origine e raggio ρ. Questo con riferimento alla norma euclidea. Con le altre norme le figura sono diverse. Per esempio nella norma infinito, in R2, la sfera di centro l’origine e raggio 1 è il quadrato di vertici ( in senso orario) (-1,1), (1,1), (1,-1), ((-1,-1). Mentre nella norma uno si tratta del rombo di estremi (0,1), (1,0) (0,-1), ( -1 ,0). Esempio Si consideri il vettore a quattro componenti x1 = -3, x2 = 1, x3 = -5, x4 = 2. La norma infinito vale 5 perché la terza componente è quella, in valore assoluto, più grande. La norma uno vale 11 che è la somma dei valori assoluti delle componenti e la norma euclidea vale 6.2449…, che è la radice quadrata di 39 che è la somma dei quadrati delle componenti. • Solitamente quando non si mette un indice ad una norma, si intende che si tratta della norma euclidea. Notiamo che queste tre norma appartengono ad una famiglia generale di norme, ognuna delle quali è individuata da un reale p positivo ( di solito p ≥ 1). Cioè la norma p, data da π₯ π = π₯1 π + π₯2 π + … π₯π π 1/π Se p = 1, e p = 2,si ritrovano norma uno e norma due. Poi, per p = ∞, si trova la norma infinito in quanto || x ||∞ è il limite, per p che tende all’infinto di || x ||p. Errore assoluto ed errore relativo. Possiamo, finalmente, semplificare le nozioni di errore assoluto ed errore relativo in presenza di confronti tra vettori. Sia x un vettore di Rn e π±, una sua approssimazione. Il vettore errore assoluto è e π± - x, e consta di n componenti come x. Allora, scelta una norma, si usa spesso chiamare errore assoluto la quantità positiva || x - π± ||, cioè la distanza tra x e e π±, indotta dalla norma. La scelta della norma può variare da contesto a contesto a seconda delle convenienze, ma, per l’equivalenza tra le norme, un errore molto piccolo misurato in una norma, generalmente lo è in un’altra, specialmente se si fa riferimento, come accade spesso, alle classiche tre norme prima introdotte. Se si riesce a trovare un reale positivo M, tale che || x - π± || ≤ M, M prende il nome di maggiorazione dell’errore assoluto. Per quanto riguarda gli errori relativi, il vettore degli errori relativi ha componenti π₯ π −π₯ π , π₯π i =1, …n, ma in un algoritmo che produce l’approssimazione π±, è molto difficile fare delle stime su questi errori. Quindi andare a prendere una norma di questo vettore sarebbe una cosa molto rigorosa ma poco praticabile. Una semplificazione, fissata una norma, consiste nel voler definire errore relativo, la grandezza x− π± π± considerando, in sostanza, il rapporto di due misure globali. Poi, un positivo m tale che |ε| ≤ m, diventa una maggiorazione dell’errore relativo. ε=