How to impose constraint in ode45 on output variable?

3 views (last 30 days)
I have a system of this type
to solve with ode45. I already built the mass matrix (several terms of this matrix depend on the x unknowns), the unknown vector x and the f vector (several terms of this vector depend on the x unknowns). My code is something like this:
options_ODE = odeset('AbsTol',1e-6,'Mass',@MassStickFree);
[vTime,vX] = ode45(@eqLongDynamicStickFree,[0 t_fin],x0',options_ODE);
where the M matrix has been built in the MassStickFree file and the f vector in the eqLongDynamicStickFree file. I would impose that the term x(8) will satisfy a certain condition, for example x(8)=0. How can I do?
  5 Comments
Alessandro Longo
Alessandro Longo on 29 Sep 2017
Edited: Alessandro Longo on 29 Sep 2017
The mass is exactly that one. The problem is that x (7) and x (8) are related because xdot (8)=x (7). I would impose that both x (8) and x (7) are zero. I tried to set
x (7)=0
x (8)=0
And to set in the function file
f (8)=0
But in this way, only the x (8) variable is zero after calculation. I also tried to define, in the mass matrix
M (7,7)=0
But in this case no result is produced (matrix is singular).
Torsten
Torsten on 29 Sep 2017
What's wrong about setting x0(8)=0, f(8)=0 and leave everything else unchanged ?
Best wishes
Torsten.

Sign in to comment.

Answers (0)

Community Treasure Hunt

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

Start Hunting!