Cancellazione numerica matlab

Vanzan
Ciao ragazzi!! sto implementando su matlab un metodo numerico per risolvere nel discreto il sistema di equazioni differenziali
$a_1' = -2k(a^2-ab)$
$a_2'= k(a^2-ab)$
$a_3'=k(a^2-ab)$
In particolare le incognite sono concentrazioni e la loro somma vale uno.
Implementando su matlab il metodo
$P*_{a1} = P_{a1} -2*mu*(( P_{a1}) ^2 -P_{a2} P_{a3])$
$P*_{a2} = P_{a2} +mu*( (P_{a1}) ^2 -P_{a2} P_{a3])$
$P*_{a3} = P_{a3} +mu*( (P_{a1} )^2 -P_{a2} P_{a3])$
Dopo un certo numero di iterazioni la somma dei $P^*_{ai}$ si scosta sempre di più da uno. Sono giunto quindi alla conclusione che sia il fenomo della cancellazione numerica nella parentesi. Mi è venuto in mente il trucco che facendo la somma 1 potrei calcolare i primi due e il terzo ottenerlo come $1-P_{a1} - P_{a2}$ ma non so quanto sia lecito :-S Consigli??Grazie :)

Risposte
walter891
secondo me calcolando il terzo elemento in questo modo gli risulterebbe un errore maggiore rispetto agli altri, mentre calcolandoli insieme anche se la somma non è esatta l'errore dovrebbe rimanere equidistribuito tra i tre elementi

esistono molti metodi per equazioni differenziali quindi forse ce ne sono di più adatti per questo tipo di problema...

Vanzan
Si infatti se calcolo esplicitamente tutti e tre ottengo dei risultati(la somma non fa più uno) diversi rispetto a calcolarne solo due e poi il terzo utilizzando la relazione.
Il fatto è che dietro c'è tutta una pappardella teorica sulle reazioni chimiche dove alla fine si ottiene questa precisa discretizzazione dell'equazione di massa. :?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.