Problema di cauchy con MATLAB
Salve a tutti avrei dei grossi problemi con MATLAB.
avendo un problema di cauchy del tipo y'(t)=f(t,y(t)) y(t0)=y0 con t€(t0,t0+T).
da ciò che ho capito devo costruire un file m di questo tipo:
function f=fun(t,y)
[n,m] = size(y);
f=zeros(n,m);
f(1)=-2*y+2-(4*t);
return
in cui dichiaro la funzione ed un secondo file in cui ho scritto il metodo ad esempio eulero:
function [t,u]=eulero(fun, t0,y0,T,N)
h=T/N;
t=t0:h:t0+T;
u=zeros(1,N+1);
u(1)=y0;
for i=1:N
u(i+1)=u(i)+h*fun(t(i),u(i));
end
infine sul main richiamo il tutto con la funzione:
[t,u]=eulero(@fun,,,,) con i vari valori assegnati;
se fino a qui non ho commesso errori (non ne sono sicuro) qualcuno saprebbe spiegarmi come stimare l'ordine di convergenza in generale e del metodo di Eulero esplicito in questo caso perche non riesco a capire cosa devo fare !
vi ringrazio e qualsiasi osservazione e ben accetta.
avendo un problema di cauchy del tipo y'(t)=f(t,y(t)) y(t0)=y0 con t€(t0,t0+T).
da ciò che ho capito devo costruire un file m di questo tipo:
function f=fun(t,y)
[n,m] = size(y);
f=zeros(n,m);
f(1)=-2*y+2-(4*t);
return
in cui dichiaro la funzione ed un secondo file in cui ho scritto il metodo ad esempio eulero:
function [t,u]=eulero(fun, t0,y0,T,N)
h=T/N;
t=t0:h:t0+T;
u=zeros(1,N+1);
u(1)=y0;
for i=1:N
u(i+1)=u(i)+h*fun(t(i),u(i));
end
infine sul main richiamo il tutto con la funzione:
[t,u]=eulero(@fun,,,,) con i vari valori assegnati;
se fino a qui non ho commesso errori (non ne sono sicuro) qualcuno saprebbe spiegarmi come stimare l'ordine di convergenza in generale e del metodo di Eulero esplicito in questo caso perche non riesco a capire cosa devo fare !
vi ringrazio e qualsiasi osservazione e ben accetta.
Risposte
Al di là del codice, direi che l'ordine di convergenza ha ben poco a che fare con MATLAB e in generale con la sua implementazione. Sul tuo manuale dovrebbe essere descritta in modo abbastanza accurata la teoria a riguardo (errori di troncamento, consistenza, ecc. ).