Hi everyone!
I'm solving a DAE system of equations: a previous version of 19 equations worked, but now I'm trying to get my model more complicated by deleting 2 equations and adding 4 new ones (thus assembling 21 equations). The new mass matrix M indicates where the differential equations are located. Apparently there's an error in the ode solver, as I get the error message before Matlab even starts to compute the solution, but I can't see it!
tic[t,y] = ode15s(@(t,y) longitudinale_puro_nomi_veri(t,y,momento_1,momento_2,... J_1,J_2,delta_v,delta_v_0,tau_1,tau_2,delta_1,delta_2,a_1,a_2,m,J_z,J_zx,... dati_pacejka_r,dati_pacejka_f,R_1,R_2,g,h,Cz_1,Cz_2,inizio_rampa,fine_rampa,... m_1,Z_statico_1,Z_statico_2,theta_11,theta_12,theta_21,theta_22),tspan,y0_nomi_veri,options);toc
The error message is: Subscript indices must either be real positive integers or logicals
Here's the function where all the equations are written: (the second line in the error message addresses me to the first line of vector out)
function out=longitudinale_puro(t,y,momento_1,momento_2,J_1,J_2,... delta_v,delta_v_0,tau_1,tau_2,delta_1,delta_2,a_1,a_2,m,J_z,J_zx,... dati_pacejka_r,dati_pacejka_f,R_1,R_2,g,h,Cz_1,Cz_2,... inizio_rampa,fine_rampa,m_1,Z_statico_1,Z_statico_2,... theta_11,theta_12,theta_21,theta_22) delta_1=tau_1*delta_v; % Angoli alle ruote
delta_2=tau_2*delta_v; momento_1=4*t; % 21 Unknowns:
alfa_1=y(1); alfa_2=y(2); F_y_1=y(3); F_y_2=y(4); F_x_1=y(5); F_x_2=y(6); v=y(7); r=y(8); u=y(9); F_z_1=y(10); F_z_12=y(11); F_z_2=y(12); F_z_22=y(13); epsilon_1=y(14); epsilon_2=y(15); omega_1=y(16); omega_2=y(17); schiacciamento_1=y(18); schiacciamento_2=y(19); R_pr_1=y(20); R_pr_2=y(21);
% Equations
out=[-alfa_1+delta_1-(v+r*a_1)/u; % Congruenza: deriva alfa_1
-alfa_2+delta_2-(v-r*a_2)/u; % Congruenza: deriva alfa_2
-F_y_1+pacejka('Fy0',F_z_1,0,-alfa_1*180/pi,-epsilon_1,dati_pacejka_f); % Legame costitutivo F_y_1
-F_y_2+pacejka('Fy0',F_z_2,0,-alfa_2*180/pi,-epsilon_2,dati_pacejka_r); % Legame costitutivo F_y_2
-F_x_1+pacejka('Fx0',F_z_1,0,-alfa_1*180/pi,-epsilon_1,dati_pacejka_f); % Legame costitutivo F_x_1
-F_x_2+pacejka('Fx0',F_z_2,0,-alfa_2*180/pi,-epsilon_2,dati_pacejka_r); % Legame costitutivo F_x_2
(F_y_1+F_y_2)/m-u*r; % Equilibrio trasversale
(F_y_1*a_1-F_y_2*a_2)/J_z; % Equilibrio imbardata
(F_x_1+F_x_2-F_y_1*delta_1)/m+v*r; % Equilibrio longitudinale
-F_z_1+Z_statico_1-theta_11*(F_y_1+F_y_2)-theta_12(F_y_1*a_1-F_y_2*a_2)-(F_x_1+F_x_2-F_y_1*delta_1)*h/l; -F_z_12+Z_statico_1+theta_11*(F_y_1+F_y_2)+theta_12(F_y_1*a_1-F_y_2*a_2)-(F_x_1+F_x_2-F_y_1*delta_1)*h/l; -F_z_2+Z_statico_2-theta_21*(F_y_1+F_y_2)-theta_22(F_y_1*a_1-F_y_2*a_2)+(F_x_1+F_x_2-F_y_1*delta_1)*h/l; -F_z_22+Z_statico_2+theta_21*(F_y_1+F_y_2)+theta_22(F_y_1*a_1-F_y_2*a_2)+(F_x_1+F_x_2-F_y_1*delta_1)*h/l; -epsilon_1+(u-R_pr_1*omega_1)/u; % Congruenza: slip x_1
-epsilon_2+(u-R_pr_2*omega_2)/u; % Congruenza: slip x_2
(momento_1-F_x_1*(R_1-schiacciamento_1))/J_1; % Bilancio ruota 1
(momento_2-F_x_2*(R_2-schiacciamento_2))/J_2; % Bilancio ruota 2
-schiacciamento_1+F_z_1/Cz_1; % Schiacciamento 1
-schiacciamento_2+F_z_2/Cz_2; % Schiacciamento 2
-R_pr_1+R_1-schiacciamento_1/3; % Raggio puro rotolamento 1
-R_pr_2+R_2-schiacciamento_2/3]; % Raggio puro rotolamento 2
Best Answer