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