MATLAB: Anonymous function in ode45: column vector error

ode45

To solve ODE below with matlab
t = 0:.01:20;
x0 = [0 0]';
xdot = @(t,x) [0 1; 0 0] * x;
ode45(@(t,x) xdot(x(1), x(2)),t,x0)
I get this error:
Error using odearguments (line 91) @(T,X)XDOT(X(1),X(2)) must return a column vector.
Cloud anyone help me to solve solve 2nd order ODEs using only anonymous function definition?

Best Answer

You are not calling ‘xdot’ correctly in your ode45 call.
Try this:
t = 0:.01:20;
x0 = [0 0]' + eps;
xdot = @(t,x) [0 1; 0 0] * x;
[T,X] = ode45(xdot,t,x0)
figure
plot(T, X)
grid
Also, the result is uniformly zero, so to prevent that, I added eps to ‘x0’.
Related Question