Error using ode45. Must return a column vector?
Show older comments
Hi everyone!
I want to call ode45 like that:
[td, xp] = ode45(@diffeqns, [t, tfin], xp);
Where diffeqns is defined as:
function dxp = diffeqns(t,xp)
global GM
GM = 6.6742e-11 * 5.9736e24 * 10^-9 * 3600^2;
global Q
Q = [0 0 0 0; 0 0 0 0; 0 0 0.001 0; 0 0 0 0.001];
r = sqrt(xp(1)^2+xp(2)^2);
x = xp(1:4);
dx(1) = x(3);
dx(2) = x(4);
dx(3) = GM*x(1)/r^3;
dx(4) = GM*x(2)/r^3;
F = [0 0 1 0; 0 0 0 1; (GM*3*x(1)^2-r^2)/r^5 GM*3*x(1)*x(2)/r^5 0 0; ...
GM*3*x(1)*x(2)/r^5 GM*3*x(2)^2-r^2/r^5 0 0];
P = xp(5:20);
P = reshape(P,4,4);
dp = F*P+P*F'+Q;
dp = reshape(dp,1,16);
dxp = [dx dp];
end
dxp is a 1x20 vector, but I still get the error:
Error using odearguments (line 90)
DIFFEQNS must return a column vector.
Does anybody has any suggestion?
Thanks
Accepted Answer
More Answers (0)
Categories
Find more on Ordinary Differential Equations 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!