This DAE appears to be of index greater than 1 but det(M + lambda*dF/dx) isn't zero
1 回表示 (過去 30 日間)
古いコメントを表示
Hi everyone i'm trying to solve a DAE of the form M*y'(t) = F(y,t), with M a singular square matrix. Just for the context, my DAE comes from the equation of the dynamic response of a beam when the space derivatives are transformed into finite difference.
F is defined as follow : F(y,t) = A.y(t) - b(t) with A a square matrix non singular and b a vector. A and M are defined bellow :
A = zeros(9,9);
a = EI/(m*h);
A(1,:) = [h 0 -1 0 0 0 0 0 0];
A(2,:) = [1 0 0 -1 0 0 0 0 0];
A(3,:) = [0 h 0 0 -1 0 0 0 0];
A(4,:) = [0 a 0 0 0 -a 0 0 0];
A(5,:) = [0 0 1 h 0 0 0 0 0];
A(6,:) = [0 0 0 1 h 0 0 0 0];
A(7,:) = [0 0 0 0 1 h 0 0 0];
A(8,:) = [0 0 0 0 0 0 1 0 0];
A(9,:) = [0 0 0 0 0 a 0 0 -a];
M = zeros(9,9);
M(8,2) = 1;
M(9,7) = 1;
The function for the DAE system is :
function F = Vect4(t,y,w,P,m,A)
ligne = length(A);
% Création de b
b = zeros(ligne,1);
b(4) = -P/m;
b(9) = -P/m;
% Calcul de la DAE
F = A*y - b;
end
w isn'nt used because i simplified the equation by removing the cosine term in b(t).
And finally the output :
n = 2; % Number of nodes
ligne = 4 + 5*(n-1); % Nombre de lignes (Nombre d'équations)
w = 2*pi * 5; % Pulsation
P = 100;
tspan = [0 2];
y0 = zeros(14,1);
opt = odeset('Mass',M);
[t,y] = ode23t(@(t,y) Vect4(t,y,w,P,m,A), tspan, y0,opt);
But here comes the problem, i get the classical error :
Error using daeic12 (line 78)
This DAE appears to be of index greater than 1.
Error in ode23t (line 282)
[y,yp,f0,dfdy,nFE,nPD,Jfac] = daeic12(odeFcn,odeArgs,t,ICtype,Mt,y,yp0,f0,...
Error in Script_Dyna_vrai (line 114)
[t,y] = ode23t(@(t,y) Vect4(t,y,w,P,m,A), tspan, y0,opt);
I don't really understand because firstly there are only first derivatives. Secondly, i belive that the index is greater than 1 when the matrix
(M + ) is singular, which is not the case here for every lambda. I tried using other ODE solvers like ODE15i for example but the problem persists.
If someone has any clues, i would apreciate. Thank you very much.
3 件のコメント
Torsten
2024 年 6 月 11 日
This is your DAE system written out. There is no equation from which y(8) and y(9) could be deduced.
h*y(1) - y(3) = 0
y(1) - y(4) = 0
h*y(2) - y(5) = 0
a*y(2) - a*y(6) + P/m = 0
y(3) + h*y(4) = 0
y(4) + h*y(5) = 0
y(5) + h*y(6) = 0
dy2/dt = y(7)
dy7/dt = a*y(6) - a*y(9) + P/m
回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で Ordinary Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!