来自ODE45的返回向量具有比初始条件向量更短的长度,同时试图解决耦合的diffEQ

时间:2016-12-07 15:36:22

标签: matlab ode

我正在尝试使用ODE45找到2个旋转杆的解决方案,在垂直平面上旋转,它有一个扭转弹簧,只有当它们之间的角度不同于90度时才会在杆上产生力矩。我只是使用a1-b4作为diffEQ中的常量,并且只是在将它们发送到函数之前将它们的值输入矩阵。我继续押注一个错误,说我发送了6个初始条件,但只从ODE45函数中获得了5个。有想法该怎么解决这个吗?

{{1}}

1 个答案:

答案 0 :(得分:1)

dx的尺寸和索引与x不匹配。您将dx初始化为4个元素,即使x有6个。然后您将值分配给dx的4个索引(特别是[1 2 4 5]),这会导致新的大小5个元素的dx,仍然比预期的6个元素少一个。

您可能需要像这样初始化dx

dx = zeros(6, 1);

然后,你的第一和第二运动方程应该(我猜测)应该放在指数3和6中:

dx(3) = a1*x(1)+a2*x(4)+a3*x(2)+a4*x(5); %motion equation 1
dx(6) = b1*x(1)+b2*x(4)+b3*x(2)+b4*x(5); %motion equation 2