# Using Runge-Kutta in Matlab

조회 수: 4 (최근 30일)
L'O.G. 2023년 8월 23일
댓글: L'O.G. 2023년 8월 23일
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 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.
##### 댓글 수: 8이전 댓글 6개 표시이전 댓글 6개 숨기기
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. 2023년 8월 23일
Thank you, I have a follow up question that I will ask

댓글을 달려면 로그인하십시오.

### 카테고리

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