How to translate these functions into a Matlab rungekutta or ode45
1 view (last 30 days)
Show older comments
Hi, I'm working on a function that will calculate the time it takes for an object to go down a "curve line" more specifically a cycloid and I got these equations to determine the amount of time it takes to reach the bottom of the halfpipe:
p(t) = c(φ(t))
if V(t):=[φ(t), φ'(t)]
then, dV/dt = F(V):= [V2, ((-sin(V1)(RV2^2-g))/(2*R(1-cos(V1))))]
and the initial conditions are
V(0) = [φ(t), 0]
R=1 G=9.8m/s
How I can translate this set of equations into a function to be able to implement ode45 or use Runge Kuta method? I know that I should write the functions and later on their derivatives for the Runge Kuta, and the function itself with another function for ode45.
I have this but I do not feel confident with the code. How can I improve it or make it work?
y(1) = [phi,0]; % initial condition
F_xy = @(V1,V2) (V2,(-sin(V1)*(R*V2^2-g))/(2*R(1-cos(V1))))) % derivatives
for i=1:(length(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;
0 Comments
Answers (1)
Pavithra Ashok Kumar
on 24 Mar 2016
Hi,
You can use the ode45 method with syntax as shown below: ode45(F_xy, [t_i t_f], y(1))
Ensure that you are substituting the appropriate values in the above equation. t_i and t_f refer to the initial and final time values. Refer here for more similar examples and information.
You can then verify if this output matches the output you obtained with your code to remove any kinks if they are present.
Hope this helps.
Regards
Pavithra
0 Comments
See Also
Categories
Find more on Ordinary 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!