Metmulst.m % METODI MULTISTEP PER EQUAZIONI DIFFERENZIALI help
metmulst; inizio=0; while
inizio==0 clear; inizio=0; disp('INTRODUCI:'); err=0; while
err==0
F=input('-
Il nome della function contenente la funzione f(t,y): ','s');
if exist(F)==0
disp('La
funzione non esiste, introduci :');
else
err=1; end end
err=0; while
err==0
a=input('-
L''estremo inferiore dell''intervallo di definizione : ');
b=input('- L''estremo superiore
dell''intervallo di definizione : ');
if a>=b
disp('I due estremi dell''intervallo sono
errati.Introduci :');
else
err=1; end end y(1)=input('-
La condizione iniziale corrispondente all''estremo inferiore dell''intervallo :
'); err=0; while
err==0
n=input('-
Il numero di suddivisioni dell''intervallo di definizione :');
if n<=0
| round(n)~=n
disp('Il
numero di suddivisioni deve essere un intero naturale non nullo.Introduci');
else
err=1; end end disp('Scegliere
tra : '); err=0; while
err==0
disp('1.
Metodo di Eulero implicito');
disp('2. Metodo di Eulero esplicito');
disp('3. Metodo dei trapezi');
s=input('Introduci il numero corrispondente
: ');
if s~=1
& s~=2 & s~=3
disp('Scelta
errata.Ricomincia :');
else
err=1; end end h=(b-a)/n; t(1)=a; for
i=2:n+1 t(i)=t(i-1)+h; end t(n+1)=b; if
s==1
| s==3 err=0; while err==0 G=input('Introduci
il nome della function contenente la derivata prima della funzione rispetto a y
: ','s');
if
exist(G)==0
disp('La
funzione non esiste, introduci :');
else err=1; end
end
e=input('Introduci
l''errore massimo che si puņ commettere (massimo 0.1) : ');
err=0; while err==0
if e>0.1
| e<=0
disp(' Il valore dell''errore massimo
introdotto non é corretto');
e=input('Introducilo nuovamente : ');
else
err=1; end
end end if
s==1
[y,risp]=eulimpl(F,G,t,y,n,h,e);
% METODO DI EULERO IMPLICITO
end if
s==2
risp=0;
y=eulespl(F,t,y,n,h);
% METODO DI EULERO ESPLICITO end if
s==3
[y,risp]=mettrap(F,G,t,y,n,h,e);
% METODO DEI TRAPEZI end if
risp==0
disp('In
corrispondenza dei seguenti punti t ');
disp('La funzione soluzione dell''equazione
differenziale assume i valori y che sono ');
t=t'; y=y'; disp('t=
y='); disp([t
y]); else
disp('Metodo
non applicabile.Utilizza gli altri metodi'); end inizio=input('Se vuoi ricominciare nuovamente premi i
|