ODE45 with a vector input
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hey, how can I solve an ode function with a changing input of my choosing: example:
I would like to solve the simple spring and defuse equation while inputting the external force at given time.
I would create a function for the differential equations:
if true
function dy = springdef(y,u)
k=1.5; %just values
m=3;
d=0.3;
% main differential equations
dy(1,1) = y(2);
dy(2,1) = -k/m*y(1)+u/m-d/m*y(2);
end
than I would calculate the result by using the ode45
if true
[t,y] = ode45(@(t,y)springdef(y,u),tspan,y0);
end
yet I don't find a way to choose u in advance (creating a vector for u for different values).
I can define a single input - u=0
or i can have a controller adjust the input - u= K*(y-[0,0]) but I don't find a way to preset the force u
such as u=[0,0,1,1,0,0] (of curse length(u) = length(tspan) )
0 Commenti
Risposta accettata
Torsten
il 28 Giu 2018
The example
"ODE with Time-Dependent Terms" under
https://de.mathworks.com/help/matlab/ref/ode45.html
should show you how to proceed.
Best wishes
Torsten.
2 Commenti
Torsten
il 29 Giu 2018
The ODEs uniquely determine the solution - you can't constrain a variable to a max value. If you want to do this, you will have to adapt your u dependent on time.
Best wishes
Torsten.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!