How to impose constraint in ode45 on output variable?

5 Ansichten (letzte 30 Tage)
Alessandro Longo
Alessandro Longo am 28 Sep. 2017
Kommentiert: Torsten am 29 Sep. 2017
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 Kommentare
Alessandro Longo
Alessandro Longo am 29 Sep. 2017
Bearbeitet: Alessandro Longo am 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 am 29 Sep. 2017
What's wrong about setting x0(8)=0, f(8)=0 and leave everything else unchanged ?
Best wishes
Torsten.

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by