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

4 visualizaciones (últimos 30 días)
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)

Respuesta aceptada

James Tursa
James Tursa el 13 de En. de 2022
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 comentarios
Rashmika Undu
Rashmika Undu el 13 de En. de 2022
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
James Tursa
James Tursa el 13 de En. de 2022
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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by