a)
clear all; clf
f=inline('t.^2-y','t','y') % AV teht. 5
a=0;b=2;n=10;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0;
for i=1:length(x)-1
y(i+1)=y(i)+h*f(x(i),y(i));
end
xya=[x' y']
plot(x,y,'r');grid
hold on
clear y
a=0;b=2;n=20;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0;
for i=1:length(x)-1
y(i+1)=y(i)+h*f(x(i),y(i));
end
xyb=[x' y']
plot(x,y,'b')
clear y
a=0;b=2;n=40;h=(b-a)/n;x=a:h:b;
y0=1; y(1)=y0;
for i=1:length(x)-1
y(i+1)=y(i)+h*f(x(i),y(i));
end
xyc=[x' y']
plot(x,y,'g')
grid
plot(xya(:,1),xya(:,2),'o')
h=0.25;a=0;b=3;c=-2;d=3; % Muutettavat parametrit
t=a:h:b;x=c:h:d;
f=inline('3*t.^2./(3*y.^2-4)','t','y')
Riittää suorittaa nämä ja hakea vain suuntakentta.m polun varrelle
(vaikka omaan matlab-hakemistoon).
Sitten suoritetaan suuntakdata.m:n komennot ja komennetaan
suuntakentta
axis square
meuler-tyylillä
Ota meuler, jos tarvitset.
t=1:0.1:1.8;m=length(t)-1; [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y) t=1:0.05:1.8;m=length(t)-1; [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y,'r') t=1:0.01:1.8;m=length(t)-1; [T,Y]=meuler(f,1,1.8,0,m);plot(T,Y,'g') [T,Y]=ode45(f,[1,1.8],0);plot(T,Y,'c')
%%%%%%%%%%%%%%%%%% fh2t5.m %%%%%%%%%%%%%%%%%%%%%
function ypilkku=fh2t5(t,y)
a=0.03; b=1.610E-4;
ypilkku=a*y-b*y.^2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Tässä USA-data:
1800 1830 1860 1890 1920 1950 1980
5.3 13 31 63 106 150 230
t=0:10:180;m=length(t)-1;
[T,Y]=meuler('fh2t5',0,180,5.3,m);plot(T,Y,'g')
[T,Y]=ode45('fh2t5',[0 180],5.3);plot(T,Y,'r')
td=0:30:180
yd=[5.3 13 31 63 106 150 230];
Yd=spline(T,Y,td)
[1800+td', yd' Yd']'