Azzera filtri
Azzera filtri

Second derivative of solution from ode45

3 visualizzazioni (ultimi 30 giorni)
I have a system of 2 second order ODEs, which i converted to a system of fist order ODEs, which ode45 (or ode15s) needs as an input
my system input looks like this:
as an output i get the vector , but I need the derivatives and . How can i get those?
I tried using the gradient function as suggested by Star Strider in this question: How to output derivative from ODE 45 but unfortunately that did not help.
Thanks in advance!

Risposta accettata

Bjorn Gustavsson
Bjorn Gustavsson il 4 Nov 2020
Modificato: Bjorn Gustavsson il 4 Nov 2020
After integrating your ODE-system you will have for some , and you have the function for your ODE-equations, f(t,X), one way to calculate the accelerations at times will be to simply call:
dxd2xdyd2ydt(i,:) = f(t_i,X(i,:));
Typically I use a regularly space array for the time in the call to ode45 and use the gradient-function, but the above should work - that is after all what we expect odeNN: to give us a solution X where that is true...
HTH
  8 Commenti
James Tursa
James Tursa il 4 Nov 2020
Modificato: James Tursa il 4 Nov 2020
If the ode_exo_ho( ) function is vectorized (meaning it will accept vectors and properly calculate a vector result), then yes it is just this easy. If ode_exo_ho( ) is not vectorized, then you would have to call it in a loop, but still pretty easy.
The ease of vectorizing your function depends on what it is doing. Sometimes it is just a simple matter of replacing the operators * and / and ^ with their element-wise counterparts .* and ./ and .^

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by