LAB04ex2a
t0 = 0;
tf = 60;
Y0 = [-1,1];
[t,Y] = ode45(@f,[t0,tf],Y0);
prompt = 'Please input the N value for different test:';
N = input(prompt)
figure (1)
plot (t,Y(:,1),'b',t,Y(:,2),'r','LineWidth',1.5);
ylim ([-2.8,2.8]);
grid on;
legend ('y(t)','v(t)');
xlabel ('t');
ylabel ('y,v=y''');
xticks ([0 20 40 60]);
figure (2)
plot (Y(:,1),Y(:,2),'b','LineWidth',1.5);
ylim([-2.8,2.8]);
xlim ([-2,2]);
xlabel ('y');
ylabel ('v=y''');
grid on
function LAB04ex2
t0 = 0;
tf = 60;
Y0 = [-1;1];
[t,Y] = ode45(@f,[t0,tf],Y0,[]);
Y1 = Y(:,1);
Y2 = Y(:,2)
figure (3)
plot (t,Y1,'b-',t,Y2,'r-');
grid on
legend ('y(t)','v(t)=y''(t)');
ylim ([-2,2])
figure (4)
plot (Y1,Y2); axis aquare; xlabel ('Y'); ylabel ('y''');
grid on
ylim([-2.8,2.8]);
xlim([-2,2]);
end
function dYdt = f(t,Y)
y = Y(1);
v = Y(2);
dYdt = [v;4*sin(t)-6*v*y.^2-4*y];
end
LAB04ex2d
t0 = 0;
tf = 60;
Y0 = [-1,1];
[t,Y] = ode45(@f,[t0,tf],Y0);
prompt = 'Please input the N value for different test:';
N =input(prompt)
[te,Ye] = euler(@f,[t0,tf],Y0,N);
figure (1)
plot (t,Y(:,1),'k',te,Ye(:,1),'r');
grid on
legend ('ode45','Euler');
xlabel ('t');
ylabel ('y');
xticks ([0 20 40 60]);
function [t,y] = euler (f,tspan,y0,N)
m = length(y0);
t0 = tspan (1);
tf = tspan (2);
h = (tf-t0)/N;
t = linspace(t0,tf,N+1);
y = zeros(m,N+1);
y(:,1) = y0';
for n = 1:N
y(:,n+1) = y(:,n) + h*f(t(n),y(:,n));
end
t = t';
y = y';
end
function LAB04ex2
t0 = 0;
tf = 60;
Y0 = [-1;1];
[t,Y] = ode45(@f,[t0,tf],Y0,[]);
Y1 = Y(:,1);
Y2 = Y(:,2);
figure (2)
plot (t,Y1,'b-',t,Y2,'r-');
grid on
legend ('y(t)','v(t)=y''(t)');
ylim ([-2,2])
figure (3)
plot (Y1,Y2); axis aquare; xlabel ('Y'); ylabel ('y''');
grid on
ylim([-2.8,2.8]);
xlim([-2,2]);
end
function dYdt = f(t,Y)
y = Y(1);
v = Y(2);
dYdt = [v;4*sin(t)-6*v*y.^2-4*y];
end