06_initial_value_ode
Problem 2)
A) Analytical solution is y = e^-t
B)
dt = [0.1, 0.01, 0.001, 0.0001];
for i = 1:length(dt)
t = [0:dt(i):3];
y_n = zeros(size(t));
y_n(1) = 1;
for j = 2:length(t)
dy = ode23(t(j-1),y_n(j-1));
y_n(i) = y_n(j-1) + dy*dt(i);
end
hold on
plot(t,y_n,'o')
end
C)
yp = @(t) -exp(-t)
t = linspace(0,3,4)
y = zeros(size(t))
dy = zeros(size(t))
dy_corr = zeros(size(t))
y(1) = 0
for i=1:length(t)-1
dy(i)=yp(t(i),y(i));
dy_corr(i)=yp(t(i),y(i));
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
n=0;
e=10;
while (1)
n=n+1;
yold=y(i+1);
dy_corr(i)=(dy(i)+yp(t(i+1),y(i+1)))/2;
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
e=abs(y(i+1)-yold)/y(i+1)*100;
if e<= 0.00001 | n>100, break, end
end
end
A) Analytical solution is y = cos(3t)
B)
yp=@(t) cos(3t)
t=linspace(0,3,4)
y=zeros(size(t))
dy=zeros(size(t))
dy_corr=zeros(size(t))
y(1)=0
y_euler=zeros(size(t))
for i=1:length(t)-1
dy(i)=yp(t(i),y(i))
y_euler(i+1)=y_euler(i)+dy(i)*(t(i+1)-t(i))
end
C)
yp=@(t) cos(3t)
t=linspace(0,3,4)
y=zeros(size(t))
dy=zeros(size(t))
dy_corr=zeros(size(t))
y(1)=0
for i=1:length(t)-1
dy(i)=yp(t(i),y(i));
dy_corr(i)=yp(t(i),y(i));
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
n=0;
e=10;
while (1)
n=n+1;
yold=y(i+1);
dy_corr(i)=(dy(i)+yp(t(i+1),y(i+1)))/2;
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
e=abs(y(i+1)-yold)/y(i+1)*100;
if e<= 0.00001 | n>100, break, end
end
end
A) Analytical solution is
B)
t=linspace(0,12,13)';
y=zeros(size(t));
dy=zeros(size(t));
dy_corr=zeros(size(t));
y(1)=100;
y_euler=zeros(size(t));
for i=1:length(t)-1
dy(i)=yp(t(i),y(i));
y_euler(i+1)=y_euler(i)+dy(i)*(t(i+1)-t(i));
end
C)
t=linspace(0,12,13)';
y=zeros(size(t));
dy=zeros(size(t));
dy_corr=zeros(size(t));
y(1)=100;
for i=1:length(t)-1
dy(i)=freefall(t(i),y(i));
dy_corr(i)=freefall(t(i),y(i));
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
n=0;
e=10;
while (1)
n=n+1;
yold=y(i+1);
dy_corr(i)=(dy(i)+freefall(t(i+1),y(i+1)))/2;
y(i+1)=y(i)+dy_corr(i)*(t(i+1)-t(i));
e=abs(y(i+1)-yold)/y(i+1)*100;
if e<= 0.00001 | n>100, break, end
end
end