How to use ode45 in this case?

Hello,
I have the variable ydd (y double dot) that I want to integrate twice to get the variable y.
The formula of ydd is:
ydd = -tan(phi).*(zdd + gravity)
where phi, zdd are vectors of size (1xn) containing different angles and accelerations at each time instant.
And, gravity is also a vector of size (1xn) containing a constant value (which is 9.81) repeated n times.
So, ydd is also a (1xn) vector containing different accelerations at each time instant.
How can I use ode45 to integrate ydd twice?
Thank you for taking the time to read my question.

 Accepted Answer

Torsten
Torsten on 28 May 2021
Edited: Torsten on 28 May 2021
ydot = y'(t0) + cumtrapz(t,-tan(phi).*(zdd+gravity));
y = y(t0) + cumtrapz(t,ydot),
plot(t,y)
where t is your (1xn) vector of times (t0,...,t_(n-1)) and y(t0) and y'(t0) are initial conditions (position and velocity at t=t0, respectively).

3 Comments

Thank you for your response. I just tried it. I am having a problem with scalar spacing.
I just want to point out that the time vector t is between 0 and 1.98 with a step of 0.01.
Can this be done with the cumtrapz function or do the values in the t vector need to be integers?
Moreover, does that mean that ode45 does not work in this case?
Torsten
Torsten on 28 May 2021
Edited: Torsten on 28 May 2021
t can be arbitrarily spaced, but must be increasing and of the same length as the other vectors, namely n.
You could use ODE45 for a solution, but since your equation only depends on t and not on y, it would be overkill to use this solver.
If you want to compare results, take a look at the example "ODE with time-dependent terms" in the ODE45 documentation. It can easily be adapted to solve your application.
Elie Hatem
Elie Hatem on 28 May 2021
Edited: Elie Hatem on 28 May 2021
Alright I will check and compare both solutions. Thanks for your help!

Sign in to comment.

More Answers (0)

Products

Release

R2020a

Asked:

on 28 May 2021

Edited:

on 28 May 2021

Community Treasure Hunt

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

Start Hunting!