Using Runge-Kutta in Matlab

3 次查看(过去 30 天)
I am trying to solve an equation dx/dt = f(x,t) where f(x,t) is a velocity. I want to solve for the positions x to obtain the trajectory x(t). I've seen that the time evolution of the positions x can be calculated using Runge-Kutta, but Matlab's implementation via ode45 (or similar) looks like it requires a function in the first argument. Here, I instead have a starting position x0 and compute the velocity at that initial point, f(x0,t0). How do I use Runge-Kutta to determine the time evolution of the position based on the velocities? If it matters, I can calculate an arbitrary instantaneous velocity f(x,t) from the forces acting on a position x. To give more context, I am calculating the velocity fxt = S*Fx where the matrix S and the force Fx both depend on the particle position, so the velocity that I calculate is a scalar.

采纳的回答

Bruno Luong
Bruno Luong 2023-8-23
编辑:Bruno Luong 2023-8-23
" I can calculate an arbitrary velocity f(x,t) from the forces acting on a position x."
Good this is a very good starting point. If you have f(x,t) in MATLAB function form,
then simply call
sol = ode45(@(t,x) f(x,t), [t0 tend], x0)
tend is the last time where you want the solution to be computed.
Read the doc of ode45
  8 个评论
Torsten
Torsten 2023-8-23
编辑:Torsten 2023-8-23
I only know the initial position and velocity. As mentioned, I want to determine the particle trajectory. I hope that makes sense.
ode45 has x - the actual position at time t - as input to your function where you define dx/dt.
L'O.G.
L'O.G. 2023-8-23
Thank you, I have a follow up question that I will ask

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by