I am using euler's method to solve a differential equation, but when I run the code it doesn't plot.

Hi, I am using Euler's method to solve the differential equation dv/dt, but when I run the code it doesn't plot andI don't get an error.
Any help would be greatly appreciated. Thanks
%Eulers method
t0=0; %start time
t1= 500; %finish time
dt = 100000; %large timestep to avoid errors
n = (t1-t0)/dt +1; %Number of nodes
t = linspace(t0,t1,n);%Time array
n_rou = round(n); %rounds n to an integer for y_euler to work
v_euler = zeros(n_rou,1); %create an empty array
v_euler(1) = 1; %initial value as v(0)=1
dvdt = @(v,t) -2.4*v(t)^2 - v(t)^3-4*v(t)+7.4 ; %anonymous function for dv/dt
for i = 1:n-1
f = dvdt(v_euler(i),t(i)); %Evaluate f=dy/dt at i
v_euler(i+1) = v_euler(i) + dt*f; % Evaluate y at i+1
end
plot(t,v_euler)

 Accepted Answer

Take a look at these lines:
t0=0; %start time
t1= 500; %finish time
dt = 100000;
Your stepsize is much larger than the total time! You need to make the stepsize reasonably small given the total time and derivative function involved.

3 Comments

My guess is, @Rashmika Undu was thinking of that as the NUMBER of steps, because we see this comment:
dt = 100000; %large timestep to avoid errors
One needs a SMALL timestep to reduce errors, and therefore many steps. Instead, had dt been a small number...
t0=0; %start time
t1= 500; %finish time
dt = 0.01; %large timestep to avoid errors
n = (t1-t0)/dt +1
n = 50001
Now many steps, and therefore, hopefully a sufficiently small error.
Yes thanks @John D'Errico, I was thinking of a large number of timesteps so the small dt makes sense.
Now when I run the code I get this error " Array indices must be positive integers or
logical values." For these two lines:
dvdt = @(v,t) -2.4*v(t)^2 - v(t)^3-4*v(t)+7.4 ; %anonymous function for dv/dt
f = dvdt(v_euler(i),t(i)); %Evaluate f=dy/dt at i
Assuming v(t) is meant to be "velocity at time t", you should just drop the (t) part since what is passed in for v is at the current time:
dvdt = @(v,t) -2.4*v^2 - v^3-4*v+7.4

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!