How can I solve a second degree DAE ?
Afficher commentaires plus anciens
Hi !
For a project, I am currently needing to solve a second degree (or of index 2, I am not too familiar with those) DAE.
The equations are :
d²x/dt² = 1/m * (- f2(x-x1, dx/dt - dx1/dt))
0 = f2(x-x1, dx/dt - dx1/dt) - f1(x1,dx1/dt)
Where m is a scalar and f1 and f2 are functions looking like this :
function force=f1(x-x1, dx/dt - dx1/dt)
%Coefficients
p1 = 1.4347e+07;
p2 = 1.9757e+06;
p3 = 3.1841e+05;
if vrel<=0 %COMPRESSION
force = p1*(x-x1)^2 + p2*(x-x1) + p3;
else %DETENTE
force = p1*(x-x1)^2 + p2*(x-x1) + p3 - 260000;
end
So far, I have coded this :
m_materiel= ...;
M=[1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 1]; % mass matrix
V0 =...; %initial condition
y0=[0 0 V0 V0];
dt=0.01;
tf=2;
tspan=0:dt:tf;
options = odeset('Mass',M,'Vectorized','on');
[t,Y]=ode15s(@(t,Y) f(t,Y,m_materiel),tspan,y0,options);
%-----------------------------------------
function out=f(t,Y,m_materiel)
out =[Y(3,:);
Y(4,:);
f_MI7984(Y(1,:),Y(3,:),data1,data2)-fQS_continue_MI20(Y(2,:)-Y(1,:),Y(4,:)-Y(3,:));
1/m*(fQS_continue_MI20(Y(2,:)-Y(1,:),Y(4,:)-Y(3,:)))];
I have used a similar technique than with classical second order differential equations,
Here "out" is dY where Y = [x1; x; dx1/dt; dx/dt]
When I run the code, I get multiple errors :
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
Error in interp1q (line 31)
[~, j] = sort([x;xxi]);
Error in f (line 2)
out =[Y(3,:);
Error in @(t,Y)f(t,Y,m_materiel)
Error in odenumjac (line 143)
Fdel = feval(F,Fargs_expanded{:});
Error in daeic12 (line 37)
[DfDy,Joptions.fac,nF] = odenumjac(fun, {t0,y,args{:}}, f, Joptions);
Error in ode15s (line 310)
[y,yp,f0,dfdy,nFE,nPD,Jfac] = daeic12(odeFcn,odeArgs,t,ICtype,Mt,y,yp0,f0,...
Error in attelageeqVSmur (line 24)
[t,Y]=ode15s(@(t,Y) f(t,Y,m_materiel),tspan,y0,options);
Can you help me out ? Do you know how to solve this kind of equation ? Thank you :)
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Ordinary Differential Equations dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!