im modelling for two mass drive train , i could not able to know why an index exceed error

3 views (last 30 days)
function dy= two_mass2(ta,te,k,d,jt,jg,y)
x=y(1);
y=y(2);
dxdt=y(3);
dydt=y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end
clc
clear all
close all
ta=11198;
te=11937;
jt=995.8;
jg=81.2;
d=30.3;
k=19720;
tspan=[0 5000];
y0=[ 125;125;100;100];
[Tsol,Ysol]= ode45(@(t,y)two_mass2(ta,te,d,k,jt,jg,y),tspan,y0);
plot(Tsol,Ysol(:,1))

Answers (1)

KSSV
KSSV on 15 Feb 2023
Edited: KSSV on 15 Feb 2023
function dy= two_mass2(ta,te,k,d,jt,jg,y)
x=y(1);
y=y(2);
dxdt=y(3);
dydt=y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end
In the above function your input y to the function is 4*1 and in this line:
y=y(2);
you are overwrititng y. Change the variable y at input to some other variable.
Like shown below:
ta=11198;
te=11937;
jt=995.8;
jg=81.2;
d=30.3;
k=19720;
tspan=[0 5000];
y0=[ 125;125;100;100];
[Tsol,Ysol]= ode45(@(t,y)two_mass2(ta,te,d,k,jt,jg,y),tspan,y0);
plot(Tsol,Ysol(:,1))
function dy= two_mass2(ta,te,k,d,jt,jg,Y) %<----- y changed to Y
x=Y(1);
y=Y(2);
dxdt=Y(3);
dydt=Y(4);
d2xdt2=((1./jt)*(ta-d*(dxdt-d*dydt)-k*(x-y)));
d2ydt2=((1./jg)*(-te-d*(dydt-d*dxdt)-k*(y-x)));
dy=[dxdt;dydt;d2xdt2;d2ydt2];
end

Categories

Find more on Automotive 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!