Using Runge-Kutta in Matlab

3 visualizaciones (últimos 30 días)
L'O.G.
L'O.G. el 23 de Ag. de 2023
Comentada: L'O.G. el 23 de Ag. de 2023
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.

Respuesta aceptada

Bruno Luong
Bruno Luong el 23 de Ag. de 2023
Editada: Bruno Luong el 23 de Ag. de 2023
" 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 comentarios
Torsten
Torsten el 23 de Ag. de 2023
Editada: Torsten el 23 de Ag. de 2023
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. el 23 de Ag. de 2023
Thank you, I have a follow up question that I will ask

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Ordinary Differential Equations en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by