error occurring while solving odes using ode15s

3 Ansichten (letzte 30 Tage)
Meenakshi Tripathi
Meenakshi Tripathi am 8 Apr. 2021
Kommentiert: Torsten am 5 Jan. 2023
function comb_thesis
clc
clear all
global E A B
E = [-3.6264 3.5447 -4.8625 zeros(1,8);-0.3148 -1.9197 -1.1648 zeros(1,8);zeros(3) eye(3) zeros(3,5);zeros(6,11)]
A = [8.5970 -8.3254 9.8331 zeros(1,8);1.0280 2.9897 1.8778 zeros(1,8);zeros(1,3) -0.75 -1 0.25 zeros(1,3) 51.3257 11.2723;zeros(1,3) 0 -2 0 zeros(1,3) 41.5581 7.8378;zeros(1,3) 0.25 1 -0.75 zeros(1,3) -24.3673 -6.2663;zeros(1,3) eye(1,3) -eye(1,3) -0.4488 2.4167;zeros(1,3) 0 1 0 0 -1 0 -0.0898 0.4833;zeros(1,3) 0 0 1 0 0 -1 0.2693 -1.4500;-0.1857 0 -0.1857 zeros(1,6) -eye(1,2);10 0 10 zeros(1,6) 0 -1;zeros(1,11)]
B = [-0.7306 -0.8299 -0.5319;0.4742 0.0304 1.3620;0.0517 -0.2759 0.7068;-0.2241 -0.1379 -0.3965;-0.0517 0.2759 -0.7068;zeros(3);zeros(3)]
tspan = 0:0.1:20;
x0 = [1 0 -1 10 11 6 zeros(1,5)];
size(x0)
opt = odeset('RelTol', 1e-6,'Mass',E);
[~,x] = ode15s(@ode,tspan,x0,opt);
end
function dxdt = ode(t,x)
global A B
dxdt = A*x + B*[exp(-t)*sin(t);0.2*sin(2*t);0.2*sin(3*t)]
end
Errors are-
Error using daeic12 (line 76)
This DAE appears to be of index greater than 1.
Error in ode15s (line 310)
[y,yp,f0,dfdy,nFE,nPD,Jfac] = daeic12(odeFcn,odeArgs,t,ICtype,Mt,y,yp0,f0,...
Error in comb_thesis (line 12)
[~,x] = ode15s(@ode,tspan,x0,opt);
I am getting output but still this kind of errors are showing up. Please Help!
  4 Kommentare
Stephen23
Stephen23 am 8 Apr. 2021
"What about error that i am facing up?"
Check, double check, triple check your matrices! Perhaps write them in table or CSV file which you can import, just so that they can be written explicitly in a way that can be reviewed visually.
Check the behavior of the ODE you are trying to solve: is it suitable for the solver you have chosen?
Meenakshi Tripathi
Meenakshi Tripathi am 8 Apr. 2021
yes ode15s is suitable for this kind of odes.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Bjorn Gustavsson
Bjorn Gustavsson am 8 Apr. 2021
Check your mass-matrix E and make sure it looks exactly like you expect. The 3 off-diagonal 1s looks peculiar to me. Then you have to read up on the use of the mass-matrix in the documentation, there are rather strict constraints on what type of algebraic equations you can send in to the ODE-functions. Yours might be too complicated.
(
Also remove the globals, just define the ode-function like this instead:
function dxdt = ode(t,x,A,B)
dxdt = A*x + B*[exp(-t)*sin(t);0.2*sin(2*t);0.2*sin(3*t)];
end
and call it like this:
[~,x] = ode15s(@(t,x) ode(t,x,A,B),tspan,x0,opt);
)
HTH
  4 Kommentare
Meenakshi Tripathi
Meenakshi Tripathi am 8 Apr. 2021
Bearbeitet: Meenakshi Tripathi am 8 Apr. 2021
Ok Thank you!!!
''See the documentation'' where i will find this?
when i solved same kind of problem taking 5 by 5 matrix then my result was showing up but when i am doing same for 11 by 11 matrix then i am getting error ''This DAE appears to be of index greater than 1.''
Now what can be done?
Bjorn Gustavsson
Bjorn Gustavsson am 9 Apr. 2021
Bearbeitet: Bjorn Gustavsson am 9 Apr. 2021
You might find your way forward from this link: Solve-Differential-Algebraic-Equations, and this:
When I've had to solve equations of motion in complicated conservative force-fields (where total particle energy is conserved) I'd switched to completely different ODE-integrating schemes (Boris-mover, etc). Since it is not perfectly clear to me what your DAE-system is in that sense I cannot give much better/more extensive advice than this.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sr
Sr am 5 Jan. 2023
hello, I got the same problem. Have you solved this problem? Any information about this will be appreciated.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by