2 views (last 30 days)

For a class project, I am trying to solve for an automobile’s vertical and pitching motions as a function of time. I have the equations of motion describing the vehicle and I am trying to use ODE45. However, I keep getting the error Not enough input arguments. I have tried to fiddle with each variable but I am getting nowhere. If anyone could help me it would be greatly appreciated.

Main Code:

[t,z] = ode45(@ode, [0 10], [8 0]);

plot(t,z(:,5),'-o')

plot(t,z(:,7),'-o')

title('Automobiles Vertical and Pitching Motions');

xlabel('time t');

ylabel('displacement (m)');

Function Code:

function zdot = ode(t,z)

Mv = 1500;

Jg = 1000;

Mw = 20;

kc = 200000;

kt = 350000;

l1 = 2;

l2 = 2.5;

w = 100;

zdot = zeros(1,8);

zdot(1) = z(2)

zdot(2) = (1/Mw)*(.01*cos(w*t)+kc*x(3)-(kt+kc)*x(2)-kc*l1*theta)

zdot(3) = z(4)

zdot(4) = (1/Mw)*(.01*cost(w*t)+kc*x(3)+kc*l2*theta-(kt+kc)*x(2))

zdot(5) = z(6)

zdot(6) = (1/Mv)*(kc*l1*theta+kc*x1+kc*x2-kc*l2*theta-2*kc*x3)

zdot(7) = z(8)

zdot(8) = (1/Jg)*(kc*l1*x3-kc*((l2^2)+(l1^2))*theta-kc*l1*x1-kc*l2*x3+kc*l2*x2)

%zdot = [z(2) , (1/Mw)*(.01*cos(w*t)+kc*x(3)-(kt+kc)*x(2)-kc*l1*theta) , z(4) , (1/Mw)*(.01*cost(w*t)+kc*x(3)+kc*l2*theta-(kt+kc)*x(2)) , z(6) , (1/Mv)*(kc*l1*theta+kc*x1+kc*x2-kc*l2*theta-2*kc*x3) , z(8) , (1/Jg)*(kc*l1*x3-kc*((l2^2)+(l1^2))*theta-kc*l1*x1-kc*l2*x3+kc*l2*x2)];

end

Stephan
on 4 Dec 2019

For every equation you have to input an initial condition. You have 8 but only give 2 initial conditions to ode45.

Also your function should return a column vector.

And where is x?

Stephan
on 4 Dec 2019

Stephan
on 5 Dec 2019

Ok, can you provide the equations in a mathematical form, for example as latex?

I suspect that you have substituted x and theta by z(?) and that this makes a problem, but im not sure about this.

Sign in to comment.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.