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.
Se abbiamo un problema mal condizionato, l'analisi dell'errore algoritmico è inutile, perché questo errore è trascurabile rispetto all'errore inerente.
Analizzare l'errore nel calcolo della funzione
Chiamiamo
l'algoritmo
che è dato dai seguenti passi:
- poniamo
;
- poniamo
;
- 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.
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:
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.
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:
;
;
.
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.
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.
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
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
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: