Vai al contenuto

Calcolo numerico/Condizionamento e stabilità

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Condizionamento

[modifica | modifica sorgente]

Il condizionamento fa riferimento all'errore inerente. Se sono elevati in modulo, allora a un piccolo errore sulla rappresentazione dei dati corrisponde un grande errore su , e il problema è mal condizionato.

Consideriamo un'equazione del tipo

Per calcolare le radici si ha la formula .

Se , per calcolare sto sommando due quantità quasi uguali, e quindi c'è un grande errore di cancellazione. Invece il calcolo di non dà problemi.

Viceversa, se , l'errore di cancellazione si ha per . Allora possiamo rimodellizzare il problema: se , allora calcolo con la formula solita senza avere problemi, invece calcolo ricordando che

quindi

e il problema torna a essere stabile, dopo essere stato rimodellizzato.

La stabilità è connessa all'errore algoritmico, e riguarda l'ordine esatto con cui vengono fatte le operazioni. L'errore algoritmico viene generato nella valutazione di .

è una funzione razionale, cioè ha un'espressione analitica data da un numero finito di operazioni di somma e sottrazione. L'errore algoritmico è una combinazione lineare degli errori locali generati nelle singole operazioni.

Simbolicamente,

dove è indipendente dalla round of unit, e tiene conto della combinazione lineare dei coefficienti.

Osservazione 1.3

[modifica | modifica sorgente]

Se abbiamo un problema mal condizionato, l'analisi dell'errore algoritmico è inutile, perché questo errore è trascurabile rispetto all'errore inerente.

Esempio di rimodellizzazione di un problema

[modifica | modifica sorgente]

Esercizio 1.2

[modifica | modifica sorgente]

Analizzare l'errore nel calcolo della funzione

Chiamiamo l'algoritmo che è dato dai seguenti passi:

  1. poniamo ;
  2. poniamo ;
  3. eseguiamo l'operazione .

Nella moltiplicazione tengo conto che , mentre nella sottrazione si ha e .

Rappresento graficamente l'algoritmo:

Vogliamo rappresentare la formula generale come somma di errore algoritmico e inerente.

e sostituendo a le loro espressioni in termini di si ha:

I primi due termini rappresentano l'errore inerente, mentre gli altri tre rappresentano l'errore algoritmico. Se è piccolo, il problema è mal condizionato, e l'errore inerente domina.

Esercizio 1.3

[modifica | modifica sorgente]

Ricavare lo stesso risultato per via analitica.

e al primo ordine:

Valuto l'errore relativo:

e si ottiene lo stesso risultato di prima.

Rimodellizzo il problema applicando l'algoritmo 2.

Assumiamo che stiamo facendo conti sui numeri macchina, perché l'errore inerente si può calcolare a parte, cioè poniamo . Graficamente otteniamo:

quindi

e allora, siccome ottengo:

Esercizio 1.4

[modifica | modifica sorgente]

Ricavare lo stesso risultato per via analitica.

Al primo ordine

Gli ultimi due addendi rappresentano l'errore inerente, uguale a quello del primo algoritmo, mentre

Nel primo algoritmo:

invece

Il secondo algoritmo è stabile e indipendente dai dati, ma quando è piccolo il problema diventa mal condizionato quindi questo vantaggio non serve a niente, tranne nel caso in cui e sono numeri macchina.

La cosa migliore è fare subito le operazioni rischiose (somma e sottrazione), e lasciare moltiplicazioni e divisioni per ultime, in modo che l'errore accumulato sia minore.

Errore nel calcolo della somma di n numeri

[modifica | modifica sorgente]

Calcoliamo l'errore della funzione

e consideriamo

L'errore inerente dipende dai dati e dal loro numero.

Se siamo nella situazione in cui gli hanno tutti segni concordi, allora:

Quindi, tenendo anche conto che , si ha:

Allora in questo caso il problema è ben condizionato, mentre nel caso generale l'errore inerente dipende dal valore dei dati e dal loro numero.

Rappresento il grafo dell'errore relativo nel caso della somma di quattro numeri ponendo:

  1. ;
  2. ;
  3. .

Il grafico è

Supponiamo che siano numeri macchina, quindi , e rimane:

e sostituendo ai coefficienti le loro espressioni:

Sostituiamo le espressioni di espressi in funzione delle :

allora anche l'errore algoritmico dipende dai dati.

Esercizio 1.5

[modifica | modifica sorgente]

Trovare l'espressione dell'errore algoritmico per via analitica.

Supponiamo che gli siano numeri macchina, cioè che .

Eseguendo i prodotti e trascurando i termini di ordine superiore al primo:

Allora

e si ottiene il risultato precedente.

Nel caso della somma di numeri si ottiene la formula generale:

Se invece gli sono di segno concorde, allora

quindi, applicando la disuguaglianza triangolare, si ottiene:

Allora l'errore algoritmico non dipende dai dati.

Ottimizzazione dell'algoritmo per la somma di n numeri

[modifica | modifica sorgente]

Procedimento 1: per ridurre l'errore nella somma, conviene ordinare i numeri per valore assoluto, dal più piccolo al più grande. In questo modo risulta che, se consideriamo le medie aritmetiche dei primi numeri, si ha:

quindi

Esercizio 1.6

[modifica | modifica sorgente]

Verificare che

Verifichiamo per induzione: per , si ha:

Supponiamo vero l'asserto per , e lo dimostriamo per .

Isolando l'ultimo termine della somma:

e applicando il passo induttivo al secondo addendo si ottiene:

Applicando l'esercizio e sostituendo nella formula 1 si ottiene:

e l'errore è dell'ordine di .

Procedimento 2: supponiamo di avere numeri da sommare. Allora

Errore nel calcolo dell'esponenziale

[modifica | modifica sorgente]

Calcoliamo

In questo caso c'è una funzione di libreria tale che per ogni , , dove .

1. Calcoliamo l'errore inerente:

quindi

2. Applicando l'algoritmo si ha:

Rappresentiamo il grafo:

Sapendo che si ha:

Questo è un algoritmo stabile qualsiasi siano i due numeri e .

3. Per via analitica, supponendo che e calcoliamo l'errore del primo algoritmo:

e al primo ordine:

quindi

4. Applichiamo l'algoritmo 2 e poniamo

e assumendo , e sapendo che si ha:

Quando è piccolo, l'algoritmo 2 è più stabile, mentre è meno stabile quando è grande.

5. Per via analitica, calcolo l'errore algoritmico del secondo algoritmo.

Al primo ordine:

Calcolo l'errore relativo:

e al primo ordine rimane: