双摆运动的动画与解法gydF4y2Ba

此示例演示如何使用MATLAB®和符号数学工具箱™对双摆的运动进行建模。gydF4y2Ba

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

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

下图显示了一个双摆的模型。双摆由两个摆锤和两个刚性杆组成。gydF4y2Ba

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

  • 第一波的角度位置gydF4y2Ba θgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

  • 第二个鲍勃的角度位置gydF4y2Ba θgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

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

  • 第一根棒的长度gydF4y2Ba lgydF4y2Ba 1gydF4y2Ba

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

  • 第一个鲍勃的质量gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba

  • 第二个鲍勃的质量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(theta_2);y_2 = y_1 - L_2*cos(theta_2);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

第二步:定义运动方程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

eqx_2 = m_2*ax_2(t) == -T_2*sin(theta_2(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

第三步:求力并简化系统方程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

张力=解([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

l1 = 1;l2 = 1.5;1 = 2;m_2 = 1;g = 9.8;eqn_1 =潜艇(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 =潜艇(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 (V,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

第五步:制作双摆摆动的动画gydF4y2Ba

创建摆动的双摆的动画。gydF4y2Ba

首先,创建四个使用的函数gydF4y2Ba德瓦尔gydF4y2Ba从解中求出两个摆的坐标万博 尤文图斯gydF4y2Ba溶胶gydF4y2Ba。gydF4y2Ba

x_1 = @(t) L_1*sin(deval(sols,t,3));y_1 = @(t) -L_1*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

接下来,使用。创建第一个摆锤的定格动画对象gydF4y2BafanimatorgydF4y2Ba函数。默认情况下,gydF4y2BafanimatorgydF4y2Ba在的范围内创建一个动画对象,该对象在单位时间内生成10帧gydF4y2BatgydF4y2Ba从0到10。使用。绘制坐标gydF4y2Ba情节gydF4y2Ba函数。设置gydF4y2BaxgydF4y2Ba设在和gydF4y2BaygydF4y2Ba-轴长度相等。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;fanimator(@(t) plot([0 x_1(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

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