Array indices must be positive integers or logical values.
1 view (last 30 days)
Show older comments
I have a function that keeps giving me this error in line 2. I am trying to plot a third order differential equation. I was previously experiencing a different error, but now I have this. I am creating a function and then calling it when I use ode45. Thank you in advance!
function dYdt = problem03ODEFunction(t,y)
x1 = y(t);
X2 = dx1/dt == dy/dt;
X3 = dx2/dt == d2y/dt2;
f(t) = heaviside(t-1) - heaviside(t-10);
dx3dt = d3y/dt3 == f(t) - (19/12)*d2y/dt2 - (19/24)*dydt - (1/8)*y(t);
end
3 Comments
Dyuman Joshi
on 21 Feb 2023
Okay, but what about y and t? What are they supposed to be? y as a function of t? or otherwise? Please specify.
Answers (1)
Askic V
on 21 Feb 2023
Edited: Askic V
on 21 Feb 2023
It seems to me that you actually want this:
[t,y]=ode45(@problem03ODEFunction,[0 20],[2 0 0]);
plot(t,y(:,1))
hold on; grid on;
plot(t,y(:,2))
leg = legend('y(t)', '$\frac{dy}{dt}$','interpreter','latex');
leg.FontSize = 12;
function dy = problem03ODEFunction(t,y)
dy = zeros(3,1);
dy(1) = y(2);
dy(2) = y(3);
f = heaviside(t-1) - heaviside(t-10);
dy(3) = f - (19/12)*dy(2) - (19/24)*dy(1) - (1/8)*y(1);
end
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!