% function solves ordinary differential equation just like ode45.
% dydt = system of first order differential equations
% trange = range of the independent variable
% yinit = initial condition
% tol = error absolute tolerance, default value = 1e-6;
% Example:
% [t,y] = RK45(@(t,y)[y(2); (1-y(1)^2)*y(2)-y(1)],[0 20],[2; 0]);
% subplot(1,2,2);
% plot(t,y,'-o')
% title('Solution of van der Pol Equation (\mu = 1) with RK45');
% xlabel('Time t');
% ylabel('Solution y');
% legend('y_1','y_2');
%
% [t2,y2] = ode45(@(t,y)[y(2); (1-y(1)^2)*y(2)-y(1)],[0 20],[2; 0]);
% subplot(1,2,1);
% plot(t2,y2,'-o')
% title('Solution of van der Pol Equation (\mu = 1) with ODE45');
% xlabel('Time t');
% ylabel('Solution y');
% legend('y_1','y_2');
Lateef Adewale Kareem (2021). RK45(dydt, trange, yinit, tol) (https://www.mathworks.com/matlabcentral/fileexchange/64968-rk45-dydt-trange-yinit-tol), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Ábout the 10^6, I believe no one wants to solve a problem where you would need 1million steps to cover the interval. in such cases, ode15s may be able to cover the interval in fewer steps. and would therefore be more computationally efficient
Global variables are a bad method to provide the outputs. It is not clear why you limit the number of steps to [10, 1e6]. The message "stiff equation" is not necessarily correct, if you reach the minimal step size. It is useful to mention, where you took the parameters of the Runge-Kutta method from.