reorganize plot for runge kutta
1 view (last 30 days)
Show older comments
% It calculates ODE using Runge-Kutta 4th order method
% Author Ido Schwartz
clc; % Clears the screen
clear all;
h=0.1; % step size
x = 0:h:10; % Calculates upto y(3)
y = zeros(1,length(x));
y(1) = 0.2; % initial condition
F_xy = @(t) (0.32)+((0.24)*exp(-t))-2*(0.04*exp(-2*t)); % change the function as you desire
for i=1:(size(x)-1) % calculation loop
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+0.5*h,y(i)+0.5*h*k_1);
k_3 = F_xy((x(i)+0.5*h),(y(i)+0.5*h*k_2));
k_4 = F_xy((x(i)+h),(y(i)+k_3*h));
y(i+1) = y(i) + (1/6)*(k_1+2*k_2+2*k_3+k_4)*h; % main equation
end
% validate using a decent ODE integrator
tspan = [0,1]; y0 = 0;
[tx, yx] = ode45(F_xy, tspan, 0.5);
plot(x,y,'o-', tx,
How to make the equation start from zero then stop in the case steady state?
0 Comments
Answers (1)
Sulaymon Eshkabilov
on 20 May 2019
Edited: Sulaymon Eshkabilov
on 20 May 2019
Hi,
In your code there are several flaws:
(1) In your RK code: y(0) = 0.2 and in validation ode45 (validation part) y0 = 0.5. This has to be fixed.
(2) In your RK code: you're simulating within [0, 10] and in validation ode45 (validation part) within [0, 1]. It is better to make them unique. Moreover, in validation part, ode45 takes a variable step, but for comparison puposes, it is better to have a fixed step of size 0.1 as you set h=0.1 in part - RK.
To start your simulation, already your starting at x =0 or you wish to set the initial condition set at 0, then y(0) has to be set at 0 not at 0.2 or 0.5. Moreover, to stop simulation at steady state, you need to intoruduce error tolerance calculation in your code and employ break operator.
Good luck.
See Also
Categories
Find more on Numerical Integration and Differential Equations 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!