How to translate these functions into a Matlab rungekutta or ode45
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Pavithra Ashok Kumar
2016-3-24
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!