MATLAB: Ode45 or dsolve

ode45ode45 vs dsolve

whats wrong with my code.. its from a book but cant run
tspan=[0 4];
y0=[0.02;0];
[t,y]=ode45('unforced1',tspan,y0);
plot(t,y(:,1));
grid on
xlabel(time)
ylabel(Displacement)
title(Displacement Vs Time)
hold on;
its function is function yp = unforced1(t,y)
yp = [y(2);(-((c/m)*y(2))-((k/m)*y(1)))];

Best Answer

  • tspan=[0 4];
    y0=[0.02;0];
    m=5;
    k=1000;
    c=1000;
    [t,y]=ode45(@(t,y)unforced1(t,y,c,m,k),tspan,y0); % function call
    plot(t,y(:,1));
    grid on
    xlabel('time')
    ylabel('Displacement')
    title('Displacement Vs Time')
    %function definition
    function yp = unforced1(t,y,c,m,k) % if your version is prior to 2016b save this in a separate file name unforced1.m
    yp = [y(2);
    (-((c/m)*y(2))-((k/m)*y(1)))];
    end