Sia ${y_n}_{n \in \mathbb{N}}$ la successione numerica che approssima la soluzione. Definito $y_0=y(0.5)=1$, lo schema porge $y_{n+}=y_n + h f(t_n,y_n)=y_n - 2h y_n=(1-2h)^n$, da cui per ricorrenza segue subito $y_{n+1}= y_0 \cdot (1-2h)^{n+1}=(1-2h)^{n+1}$.
Evidentemente, detta $y(x)$
la soluzione (
unica) del p.d.C, si ha che la soluziona sarà monotona decrescente, e quello ovviamente deve essere che pure la soluzione numerica abbia questo comportamento, perciò deve essere $|1-2h|<1$, da cui $0<h<1$. Qualsiasi altra scelta di $h$ da origine a soluzioni non decrescenti e sono dunque non accettabili.
Per lo studio del comportamento della soluzione per $x=6$ si deve trovare il numero di nodi affinché $y_n$ approssimi $y(6)$, perciò, visto che il passo $h$ è costante segue che $x_n= x_0 + n \cdot h=0.5 + n \cdot h = 6$. L'ultima equazione, risolta per $h$, da come risultato $h=\frac{11}{2n}$.
Si deve quindi studiare nel limite $ h \rarr 0$ la soluzione approssimata. Conviene notare che $h \rarr 0 <=> n \rarr +\infty$, da cui basta studiare il limite $\lim_{n \rarr + \infty} (1-2h)^n= (1-\frac{11}{n})^n= e^{-11}$.
Notando che la soluzione analitica è $y(x)=e^{-2x+1}$, segue che $y_n \rarr_{+\infty} y(6)$
E' molto semplice anche implementare questo metodo in Octave con un ciclo for, e con un ulteriore ciclo se ne può mostrandone pure l'ordine.
- Codice:
clear all
close all
#Risoluzione + CHECK ORDINE
tsrange=[10:10:1000];
count=0;
y0=1;
for ts=tsrange
count++;
f=@(y) -2*y;
x=linspace(0.5,6,ts+1);
s=@(x) exp(-2*x +1);
h=(6-0.5)/ts;
y=zeros(1,ts+1);
y(1)=y0;
for n=1:ts
y(n+1)=y(n) + h*f(y(n)); #Eulero esplicito
end
err(count)=norm(s(x)-y(1,:),inf);
end
figure
plot(x,y,'b-o',x,exp(-2*x+1),'r')
figure
loglog(tsrange,err,'*')