主要内容gydF4y2Ba

双摆运动的动画与解法gydF4y2Ba

这个例子展示了如何使用MATLAB®和Symbolic Math Toolbox™建模双摆的运动。gydF4y2Ba

求解双摆的运动方程,并创建一个动画来模拟双摆运动。gydF4y2Ba

步骤1:定义双摆质量的位移、速度和加速度gydF4y2Ba

下图是双摆的模型。双摆由两个摆锤和两个刚性杆组成。gydF4y2Ba

通过定义状态变量来描述双摆的运动:gydF4y2Ba

  • 第一个圆的角位置gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

  • 第二个Bob的角位置gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

通过定义变量来描述双摆的性质:gydF4y2Ba

  • 第一根杆子的长度gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba

  • 第二根棒子的长度gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba

  • 第一个Bob的质量gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba

  • 第二个Bob的质量gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba

  • 引力常数gydF4y2Ba ggydF4y2Ba

为简单起见,忽略两根刚性杆的质量。通过使用指定所有变量gydF4y2Ba信谊gydF4y2Ba.gydF4y2Ba

信谊gydF4y2Batheta_1 (t)gydF4y2Batheta_2 (t)gydF4y2Bal1gydF4y2Bal2gydF4y2Ba1gydF4y2Bam_2gydF4y2BaggydF4y2Ba

在笛卡尔坐标下定义双摆的位移。gydF4y2Ba

x_1 = l1 *sin(theta_1);y_1 = - l1 *cos(theta_1);x_2 = x_1 + L_2*sin();y_2 = y_1 - L_2*cos;gydF4y2Ba

通过微分位移对时间的微分求速度用gydF4y2BadiffgydF4y2Ba函数。gydF4y2Ba

Vx_1 = diff(x_1);Vy_1 = diff(y_1);Vx_2 = diff(x_2);Vy_2 = diff(y_2);gydF4y2Ba

通过求速度对时间的微分来求加速度。gydF4y2Ba

Ax_1 = diff(vx_1);Ay_1 = diff(vy_1);Ax_2 = diff(vx_2);Ay_2 = diff(vy_2);gydF4y2Ba

步骤2:定义运动方程gydF4y2Ba

根据牛顿定律定义运动方程。gydF4y2Ba

首先,指定第一杆的张力为gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba ,和第二杆的张力gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

信谊gydF4y2BaT_1gydF4y2BaT_2gydF4y2Ba

接下来,构造作用在两个质量上的力的自由体图。gydF4y2Ba

计算作用在上面的力gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba .通过平衡水平力分量和垂直力分量,定义第一拍子的运动方程。将这两个方程指定为符号方程gydF4y2Baeqx_1gydF4y2Ba而且gydF4y2Baeqy_1gydF4y2Ba.gydF4y2Ba

eqx_1 = 1 * ax_1 (t) = = t_1 * sin (theta_1 (t)) + T_2 *罪(theta_2 (t))gydF4y2Ba
eqx_1 =gydF4y2Ba

-gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba -gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba

eqy_1 = 1 * ay_1 (t) = = T_1 * cos (theta_1 (t) - T_2 * cos (theta_2 (t) - 1 * ggydF4y2Ba
eqy_1 =gydF4y2Ba

米gydF4y2Ba 1gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba =gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba ggydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba -gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba

计算作用在上面的力gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba .通过平衡水平力分量和垂直力分量,定义第二拍子的运动方程。将这两个方程指定为符号方程gydF4y2Baeqx_2gydF4y2Ba而且gydF4y2Baeqy_2gydF4y2Ba.gydF4y2Ba

exx_2 = m_2*ax_2(t) = -T_2*sin(t)gydF4y2Ba
eqx_2 =gydF4y2Ba

-gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba -gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba -gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba -gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba

eqy_2 = m_2 * ay_2 (t) = = T_2 * cos (theta_2 (t) - m_2 * ggydF4y2Ba
eqy_2 =gydF4y2Ba

米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba ggydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba

步骤3:评估力和减少系统方程gydF4y2Ba

四个运动方程描述了双摆的运动学。计算作用在杆上的力,并将四个方程简化为两个方程。gydF4y2Ba

运动方程有四个未知数:gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba .求两个未知数的值gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba 而且gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 从gydF4y2Baeqx_1gydF4y2Ba而且gydF4y2Baeqy_1gydF4y2Ba.使用gydF4y2Ba解决gydF4y2Ba函数查找gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba 而且gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

张力= solve([eqx_1 eqy_1],[T_1 T_2]);gydF4y2Ba

将解替换为金宝搏官方网站gydF4y2Ba TgydF4y2Ba 1gydF4y2Ba 而且gydF4y2Ba TgydF4y2Ba 2gydF4y2Ba 成gydF4y2Baeqx_2gydF4y2Ba而且gydF4y2Baeqy_2gydF4y2Ba.gydF4y2Ba

eqRed_1 = subs(eqx_2,[T_1 T_2],[张力。T_1 Tension.T_2]);eqRed_2 = subs(eqy_2,[T_1 T_2],[张力。T_1 Tension.T_2]);gydF4y2Ba

这两个简化方程完全描述了摆的运动。gydF4y2Ba

第四步:解方程组gydF4y2Ba

求解系统方程来描述摆的运动。gydF4y2Ba

首先,为大众定义价值gydF4y2Ba 公斤gydF4y2Ba ,杆的长度gydF4y2Ba 米gydF4y2Ba ,重力在gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 年代gydF4y2Ba 2gydF4y2Ba (国际标准单位)。将这些值代入两个简化方程。gydF4y2Ba

L_1 = 1;L_2 = 1.5;M_1 = 2;M_2 = 1;G = 9.8;eqn_1 = subs(eqRed_1)gydF4y2Ba
eqn_1 =gydF4y2Ba

因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba -gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 3.gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba =gydF4y2Ba -gydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 49gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 5gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 在哪里gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba =gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

eqn_2 = subs(eqRed_2)gydF4y2Ba
eqn_2 =gydF4y2Ba

因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 3.gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba 2gydF4y2Ba +gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 3.gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba 2gydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 2gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 49gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 5gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba )gydF4y2Ba -gydF4y2Ba 49gydF4y2Ba 5gydF4y2Ba 在哪里gydF4y2Ba σgydF4y2Ba 1gydF4y2Ba =gydF4y2Ba ∂gydF4y2Ba 2gydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

这两个方程是非线性二阶微分方程。为了解这些方程,将它们转化为一阶微分方程gydF4y2BaodeToVectorFieldgydF4y2Ba函数。gydF4y2Ba

[V,S] = odeToVectorField(eqn_1,eqn_2);gydF4y2Ba

向量的元素gydF4y2BaVgydF4y2Ba表示等于元素的时间导数的一阶微分方程gydF4y2Ba年代gydF4y2Ba.的要素gydF4y2Ba年代gydF4y2Ba是状态变量吗gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba dgydF4y2Ba θgydF4y2Ba 2gydF4y2Ba /gydF4y2Ba dtgydF4y2Ba ,gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba dgydF4y2Ba θgydF4y2Ba 1gydF4y2Ba /gydF4y2Ba dtgydF4y2Ba .状态变量描述了双摆的角位移和速度。gydF4y2Ba

年代gydF4y2Ba
S =gydF4y2Ba

(gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba DthetagydF4y2Ba 2gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba DthetagydF4y2Ba 1gydF4y2Ba )gydF4y2Ba

接下来,将一阶微分方程转换为带有手柄的MATLAB函数gydF4y2Ba米gydF4y2Ba.gydF4y2Ba

M = matlabFunction(gydF4y2Ba“var”gydF4y2Ba, {gydF4y2Ba“t”gydF4y2Ba,gydF4y2Ba“Y”gydF4y2Ba});gydF4y2Ba

定义状态变量的初始条件为gydF4y2Ba[pi/4 0 pi/6 0]gydF4y2Ba.使用gydF4y2Ba数值gydF4y2Ba函数来解状态变量。解是区间金宝搏官方网站内时间的函数gydF4y2Ba10 [0]gydF4y2Ba.gydF4y2Ba

initCond = [pi/4 0 pi/6 0];sols = ode45(M,[0 10],initCond);gydF4y2Ba

把状态变量的解画出金宝搏官方网站来。gydF4y2Ba

情节(sols.x sols.y)传说(gydF4y2Ba“\ theta_2”gydF4y2Ba,gydF4y2Ba“d \ theta_2 / dt”gydF4y2Ba,gydF4y2Ba“\ theta_1”gydF4y2Ba,gydF4y2Ba“d \ theta_1 / dt”gydF4y2Ba)标题(gydF4y2Ba“金宝搏官方网站状态变量的解”gydF4y2Ba)包含(gydF4y2Ba“时间(s)”gydF4y2Ba) ylabel (gydF4y2Ba解金宝搏官方网站决方案(rad或rad/s)gydF4y2Ba)gydF4y2Ba

图中包含一个轴对象。标题为“状态变量的解决方案”的axis对象包含4个类型金宝搏官方网站为line的对象。这些对象表示\theta_2, d\theta_2/dt, \theta_1, d\theta_1/dt。gydF4y2Ba

步骤5:创建摆动双摆的动画gydF4y2Ba

创建摆动双摆的动画。gydF4y2Ba

首先,创建四个使用gydF4y2Ba德瓦尔gydF4y2Ba从解求出两个摆的坐标金宝搏官方网站gydF4y2Ba溶胶gydF4y2Ba.gydF4y2Ba

x_1 = @(t) L_1*sin(deval(sols,t,3));y_1 = @(t) - l1 *cos(deval(sols,t,3));x_2 = @ (t) l1 * sin(德瓦尔(溶胶,t, 3)) + l2 *罪(德瓦尔(溶胶t 1));y_2 = @ (t) l1 * cos(德瓦尔(溶胶,t, 3) l2 * cos(德瓦尔(溶胶t 1));gydF4y2Ba

方法创建第一个钟摆bob的定格动画对象gydF4y2BafanimatorgydF4y2Ba函数。默认情况下,gydF4y2BafanimatorgydF4y2Ba的范围内,每单位时间生成10帧的动画对象gydF4y2BatgydF4y2Ba从0到10。函数绘制坐标gydF4y2Ba情节gydF4y2Ba函数。设置gydF4y2BaxgydF4y2Ba设在和gydF4y2BaygydF4y2Ba-axis的长度相等。gydF4y2Ba

fanimator (@ (t)情节(x_1 (t) y_1 (t)gydF4y2Ba“罗”gydF4y2Ba,gydF4y2Ba“MarkerSize”gydF4y2Ba1 * 10,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba“r”gydF4y2Ba));轴gydF4y2Ba平等的gydF4y2Ba;gydF4y2Ba

接下来,添加第一个刚性杆、第二个摆锤和第二个刚性杆的动画对象。gydF4y2Ba

持有gydF4y2Ba在gydF4y2Ba;fananimator (@(t) plot([0 x1 (t)],[0 y_1(t)],gydF4y2Ba的r -gydF4y2Ba));fanimator (@ (t)情节(x_2 (t) y_2 (t)gydF4y2Ba“去”gydF4y2Ba,gydF4y2Ba“MarkerSize”gydF4y2Bam_2 * 10,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba‘g’gydF4y2Ba));fanimator (@ (t)情节(x_1 (t) x_2 (t)], [y_1 (t) y_2 (t)),gydF4y2Ba“g -”gydF4y2Ba));gydF4y2Ba

控件添加一段文本,以计算经过的时间gydF4y2Ba文本gydF4y2Ba函数。使用gydF4y2Banum2strgydF4y2Ba将时间参数转换为字符串。gydF4y2Ba

fanimator (@ (t)文本(-0.3,0.3,gydF4y2Ba计时器:“gydF4y2Ba+ num2str (t, 2)));持有gydF4y2Ba从gydF4y2Ba;gydF4y2Ba

图中包含一个轴对象。axis对象包含5个类型为line, text的对象。gydF4y2Ba

使用命令gydF4y2Ba那里gydF4y2Ba播放双摆的动画。gydF4y2Ba