Setting of mass matrix

6 views (last 30 days)
Oleksandr Maksimenko
Oleksandr Maksimenko on 9 Sep 2019
Edited: Torsten on 9 Sep 2019
Hi, I have tried to set mass matrix
options = odeset('RelTol',1e-9,'AbsTol',1e-9*ones(608,1),'Mass', @(t)diag([ones(1,604) sin(t) 1 1 0]));
ode15s(@moven2,[0 L],vector,options,m,H0,x3,Ib,number,number1,number2,number3,mu);
but have obtained "Error using @(t)diag([ones(1,604),sin(t),1,1,0])
Too many input arguments"
Where is mistake?

Answers (1)

Torsten
Torsten on 9 Sep 2019
Edited: Torsten on 9 Sep 2019
options = odeset('RelTol',1e-9,'AbsTol',1e-9*ones(608,1),'Mass', @(t,y)diag([ones(1,604) sin(t) 1 1 0]));
or
options = odeset('RelTol',1e-9,'AbsTol',1e-9*ones(608,1),'MStateDependence','none','Mass', @(t)diag([ones(1,604) sin(t) 1 1 0]));
  3 Comments
Oleksandr Maksimenko
Oleksandr Maksimenko on 9 Sep 2019
I understood where I had a mistake. I rewrote the function of the right parts and this error disappeared.
options = odeset('RelTol',1e-9,'AbsTol',1e-9*ones(608,1),'Mass', @(t)diag([ones(1,604) sin(t) 1 1 0]));
ode15s(@(X,Y)moven2(X,Y,m,H0,x3,Ib,number,number1,number2,number3,mu),[0 L],vector,options);
However, a new error has occurred and I do not understand what it means and how to solve it.
"Error using daeic12 (line 77)
This DAE appears to be of index greater than 1."
Torsten
Torsten on 9 Sep 2019
Edited: Torsten on 9 Sep 2019
I'd check equation 605. It switches from algebraic at time t=0 to differential at t>0.

Sign in to comment.

Categories

Find more on Performance and Memory in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!