Calcolo numerico/Analisi di stabilità lineare o assoluta stabilità

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Nella pratica, h↛0, quindi la 0-stabilità non basta.

Consideriamo il problema lineare:

{y′=λyy(0)=1

con λ∈ℂ. La soluzione esatta è

y(t)=eλt

ed è tale che

limt→∞|y(t)|=0

se Re(λ)<0.

Verifichiamo la seguente definizione:

Template:Definizione

Template:Definizione

Supponiamo che esistano due costanti μmin,μmax tali che −μmin<fy<−μmax, e poniamo λ=−μmax.

La regione di assoluta stabilità varia a seconda del metodo considerato, infatti:

1. considerando il metodo di Eulero esplicito:

yn+1=yn+hfn

se f=λy segue che

yn+1=yn+λhyn=(1+λh)yn=(1+λh)ny0

e per n→∞ la quantità tende a 0 se |1+λh|<1. Il metodo di Eulero esplicito ha come condizione di assoluta stabilità |1+λh|<1. Nel piano di Argand-Gauss la regione di assoluta stabilità è un cerchio con raggio 1 e centro 1. λh deve stare nel cerchio, altrimenti asintoticamente la soluzione numerica non si comporta come la soluzione esatta. In ℝ la condizione diventa h<−2/λ.

2. considerando invece il metodo di Eulero implicito:

yn+1=yn+hfn+1=yn+hλyn+1

(1−λh)yn+1=yn

yn+1=yn1−λh

e ricorsivamente

yn+1=y0(1−λh)n

e imponiamo la condizione |11−λh|<1 che implica |1−λh|>1. La regione di assoluta stabilità in questo caso è ciò che sta fuori dal cerchio di raggio 1 e centro 1. Quindi i metodi di Eulero implicito non hanno nessuna condizione sulla scelta del passo dovuti allo schema numerico.

3. Se consideriamo il metodo di Frank-Nicholson,

yn+1=yn+h/2(fn+fn+1)

segue che, se f=λy, si ha

yn+1=yn+h/2λyn+h/2λyn+1

(1−h/2λ)yn+1=yn+h/2λyn=(1+h/2λ)yn=(1+h/2λ)ny0

quindi

yn+1=(1+h/2λ)n1−h/2λy0

e si ottiene la condizione

|1+h/2λ1−h/2λ|=|2+hλ2−hλ|<1

|2+hλ|<2−hλ

hλ−2<2+hλ<2−hλ

2hλ<0

Trasformazione di sistemi lineari

Consideriamo il problema di Cauchy

{y′=F(t,y)y(t0)=y0

con F:ℝ×ℝn→ℝn. È un sistema di equazioni differenziali con

y′=Ay

Assumiamo che A=S−1λS sia diagonalizzabile.

La soluzione esatta è

y(t)=∑j=1ncjeλjtbj

y(t)→0⟺t→∞, e si richiede lo stesso comportamento per la soluzione numerica.

Allora si impone:

z=S−1y⟶z′=S−1y′

y′=Sz′

y′=Ay⟶Sz′=ASz

quindi, moltiplicando a sinistra per S−1

z′=S−1ASz=λz

si ha un sistema di equazioni differenziali lineari ma con λ diagonale, in modo da avere equazioni differenziali disaccoppiate della forma:

zi′=λizi

e consideriamo il problema test su ciascuna delle equazioni. Scegliamo come passo h, che deve valere per tutte le equazioni, l'autovalore di modulo maggiore.

Problemi stiff

Supponiamo di avere un sistema di equazioni differenziali del tipo

{y′=Aϕ(x)

con ϕ∈ℝn. Supponiamo che A sia diagonalizzabile, e consideriamo il caso in cui le parti reali dei suoi autovalori siano negative.

Allora la soluzione esatta è nella forma

y(t)=∑j=1ncjeλjtvj+ψ(t)

dove ψ(t) è La soluzione particolare della non omogenea.

Considerando un metodo numerico a una regione di assoluta stabilità limitata, allora ci sono necessariamente delle restrizioni sul passo di integrazione. Più piccola è la regione di assoluta stabilità, minore è il passo da scegliere, e la scelta del passo è dovuta alla soluzione transitoria. Il passo va scelto tanto più piccolo quanto più in fretta la soluzione tende a 0.

Chiamiamo λm,λM due autovalori della matrice A tali che valga la relazione:

|Re(λM)|≥|Re(λj)|≥Re(|λm|)

Si definisce la stiffness ratio nel seguente modo:

|Re(λM)||Re(λm)|

e il problema è stiff se questa quantità è molto maggiore di 1.

Se Re(λm)∼0, anche se Re(λM) non è molto grande, abbiamo un problema stiff per definizione. I metodi utilizzati per risolverli sono i Runge-Kutta espliciti.

Template:Avanzamento