这个例子展示了如何模拟单摆的运动使用的符号数学工具箱™。推导出摆的运动方程,然后对小角度解决方程分析,为任何角度数值。gydF4y2Ba
钟摆是一个简单的机械系统,它遵循一个微分方程。钟摆最初静止在一个垂直的位置。当钟摆流离失所的一个角度gydF4y2Ba 和释放,重力把它拉回到其休息的位置。它的动量会过头,来到一个角度gydF4y2Ba (如果没有摩擦力),等等。恢复力以及重力摆的运动gydF4y2Ba 。因此,根据牛顿第二定律,质量乘以加速度必须相等gydF4y2Ba 。gydF4y2Ba
信谊gydF4y2Ba米gydF4y2Ba一个gydF4y2BaggydF4y2Baθ(t)gydF4y2Baeqn = m * = = g - m * *罪(θ)gydF4y2Ba
eqn (t) =gydF4y2Ba
摆的长度gydF4y2Ba 摆锤的加速度等于角加速度gydF4y2Ba 。gydF4y2Ba
。gydF4y2Ba
代替gydF4y2Ba
通过使用gydF4y2Ba潜艇gydF4y2Ba
。gydF4y2Ba
信谊gydF4y2BargydF4y2Baeqn =潜艇(eqn r * diff(θ,2))gydF4y2Ba
eqn (t) =gydF4y2Ba
孤立的角加速度gydF4y2BaeqngydF4y2Ba
通过使用gydF4y2Ba隔离gydF4y2Ba
。gydF4y2Ba
eqn =隔离(eqn diff(θ,2))gydF4y2Ba
eqn =gydF4y2Ba
收集常量gydF4y2Ba 和gydF4y2Ba 成一个单一的参数,也被称为gydF4y2Ba固有频率gydF4y2Ba。gydF4y2Ba
。gydF4y2Ba
信谊gydF4y2Baomega_0gydF4y2Baeqn =潜艇(eqn, g / r, omega_0 ^ 2)gydF4y2Ba
eqn =gydF4y2Ba
运动方程是非线性的,所以很难解决分析。假设角度小,利用泰勒展开式的线性化方程gydF4y2Ba 。gydF4y2Ba
信谊gydF4y2BaxgydF4y2Ba约=泰勒(sin (x), x,gydF4y2Ba“秩序”gydF4y2Ba2);约=潜艇(大约x,θ(t))gydF4y2Ba
约=gydF4y2Ba
运动方程是一个线性方程。gydF4y2Ba
eqnLinear =潜艇(eqn,罪(θ(t)),约)gydF4y2Ba
eqnLinear =gydF4y2Ba
解方程gydF4y2BaeqnLineargydF4y2Ba
通过使用gydF4y2BadsolvegydF4y2Ba
。指定初始条件作为第二个参数。简化假设的解决方案gydF4y2Ba
是真实的使用gydF4y2Ba假设gydF4y2Ba
。gydF4y2Ba
信谊gydF4y2Batheta_0gydF4y2Batheta_t0gydF4y2Batheta_t = diff(θ);气孔导度=[θ(0)= = theta_0 theta_t (0) = = theta_t0];假设(omega_0gydF4y2Ba“真实”的gydF4y2Ba)thetaSol (t) = dsolve (eqnLinear,气孔导度)gydF4y2Ba
thetaSol (t) =gydF4y2Ba
这个词gydF4y2Ba 被称为gydF4y2Ba阶段gydF4y2Ba。余弦和正弦函数重复每一个gydF4y2Ba 。需要改变的时候了gydF4y2Ba 通过gydF4y2Ba 叫做时间。gydF4y2Ba
。gydF4y2Ba
的时间段gydF4y2Ba 的平方根成正比摆的长度,它不依赖于质量。对于线性运动方程,时间不依赖于初始条件。gydF4y2Ba
情节摆的运动为小角度的近似值。gydF4y2Ba
定义物理参数:gydF4y2Ba
重力加速度gydF4y2Ba
摆的长度gydF4y2Ba
gValue = 9.81;右值= 1;omega_0Value =√gValue /右值);T = 2 *π/ omega_0Value;gydF4y2Ba
设置初始条件。gydF4y2Ba
theta_0Value = 0.1 *π;gydF4y2Ba%的解决方案只适用于小角度。gydF4y2Batheta_t0Value = 0;gydF4y2Ba%最初在休息的时候。gydF4y2Ba
物理参数和初始条件代入通解。gydF4y2Ba
var = [omega_0 theta_0 theta_t0];值= [omega_0Value theta_0Value theta_t0Value];thetaSolPlot =潜艇(thetaSol、var值);gydF4y2Ba
绘制谐波摆运动。gydF4y2Ba
fplot (thetaSolPlot (t * t) /π,[0 5);网格gydF4y2Ba在gydF4y2Ba;标题(gydF4y2Ba“谐摆运动”gydF4y2Ba);包含(gydF4y2Ba“电汇”gydF4y2Ba);ylabel (gydF4y2Ba“θ/ \ \π”gydF4y2Ba);gydF4y2Ba
后找到的解决方案gydF4y2Ba 、可视化钟摆的运动。gydF4y2Ba
x_pos =罪(thetaSolPlot);y_pos = cos (thetaSolPlot);fanimator (@fplot x_pos y_pos,gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba“k”gydF4y2Ba,gydF4y2Ba“AnimationRange”gydF4y2Ba[0 5 * T]);持有gydF4y2Ba在gydF4y2Ba;fanimator (@ (t)情节([0 x_pos (t)], [0 y_pos (t)),gydF4y2Ba“k -”gydF4y2Ba),gydF4y2Ba“AnimationRange”gydF4y2Ba[0 5 * T]);fanimator (@ (t)文本(-0.3,0.3,gydF4y2Ba计时器:“gydF4y2Ba+ num2str (t, 2) +gydF4y2Ba“s”gydF4y2Ba),gydF4y2Ba“AnimationRange”gydF4y2Ba[0 5 * T]);gydF4y2Ba
输入的命令gydF4y2Ba那里gydF4y2Ba
钟摆运动的动画。gydF4y2Ba
了解非线性摆的运动、可视化摆路径通过使用总能量方程。的总能量是守恒的。gydF4y2Ba
使用三角恒等式gydF4y2Ba 和的关系gydF4y2Ba 重写了能量。gydF4y2Ba
从能量是守恒的,摆的运动可以被描述为常数相空间中的能量路径。的相空间是一个抽象的空间坐标gydF4y2Ba
和gydF4y2Ba
。想象这些路径使用gydF4y2BafcontourgydF4y2Ba
。gydF4y2Ba
信谊gydF4y2BaθgydF4y2Batheta_tgydF4y2Baomega_0gydF4y2BaE(θ,theta_t omega_0) = (1/2) * (theta_t ^ 2 + (2 * omega_0 * sin(θ/ 2))^ 2);Eplot(θ,theta_t) =潜艇(E, omega_0 omega_0Value);图;fc = fcontour (Eplot(π*θ,2 * omega_0Value * theta_t), 2 * (1 1 1),gydF4y2Ba…gydF4y2Ba“线宽”gydF4y2Ba2,gydF4y2Ba“LevelList”gydF4y2Ba0:5:50,gydF4y2Ba“MeshDensity”gydF4y2Ba1 + 2 ^ 8);网格gydF4y2Ba在gydF4y2Ba;标题(gydF4y2Ba“恒能源轮廓相空间(\θ与\ theta_t) 'gydF4y2Ba);包含(gydF4y2Ba“θ/ \ \π”gydF4y2Ba);ylabel (gydF4y2Ba“\ theta_t / 2 \ omega_0”gydF4y2Ba);gydF4y2Ba
恒能源的轮廓是对称的gydF4y2Ba 轴和gydF4y2Ba 轴,是周期性的gydF4y2Ba 轴。该图显示了两个地区不同的行为。gydF4y2Ba
低能量的等高线图接近自己。钟摆来回摆动两个最大的角度和速度。钟摆的动能不足以克服重力能量并使摆一个完整的循环。gydF4y2Ba
更高能量的等高线图不接近自己。钟摆总是在一个角方向移动。钟摆的动能是能量足以克服重力,使摆一个完整的循环。gydF4y2Ba
非线性运动方程是二阶微分方程。通过使用数值解决这些方程gydF4y2Ba数值gydF4y2Ba
解算器。因为gydF4y2Ba数值gydF4y2Ba
只接受一阶系统,减少系统一阶系统。然后,生成函数的输入处理gydF4y2Ba数值gydF4y2Ba
。gydF4y2Ba
重写一阶常微分方程的二阶颂歌视为一个系统。gydF4y2Ba
信谊gydF4y2Baθ(t)gydF4y2Batheta_t (t)gydF4y2Baomega_0gydF4y2Ba方程式= [diff(θ)= = theta_t;diff (theta_t) = = -omega_0 ^ 2 *罪(θ)]gydF4y2Ba
方程式(t) =gydF4y2Ba
方程式=潜艇(方程式,omega_0 omega_0Value);var =[θ,theta_t];gydF4y2Ba
找到质量矩阵gydF4y2Ba米gydF4y2Ba
系统和两侧的方程gydF4y2BaFgydF4y2Ba
。gydF4y2Ba
[M F] = massMatrixForm(方程式一样,var)gydF4y2Ba
M =gydF4y2Ba
F =gydF4y2Ba
米gydF4y2Ba
和gydF4y2BaFgydF4y2Ba
指的是这种形式。gydF4y2Ba
进一步简化计算,重写系统的形式gydF4y2Ba 。gydF4y2Ba
f = M \ fgydF4y2Ba
f =gydF4y2Ba
转换gydF4y2BafgydF4y2Ba
通过使用MATLAB函数处理gydF4y2BaodeFunctiongydF4y2Ba
。生成的函数处理的输入MATLAB ODE求解器进行求解gydF4y2Ba数值gydF4y2Ba
。gydF4y2Ba
f = odeFunction (f, var)gydF4y2Ba
f =gydF4y2Bafunction_handle与价值:gydF4y2Ba@ (t, in2) [in2(2:);罪(in2 (1:))。* 2./1.0 (-9.81 e + e + 2))gydF4y2Ba
解决ODE封闭轮廓的能源使用gydF4y2Ba数值gydF4y2Ba
。gydF4y2Ba
从能源等高线图,封闭轮廓满足条件gydF4y2Ba
,gydF4y2Ba
。存储的初始条件gydF4y2Ba
和gydF4y2Ba
在变量gydF4y2Bax0gydF4y2Ba
。gydF4y2Ba
x0 = [0;1.99 * omega_0Value];gydF4y2Ba
指定一个时间间隔从0到10年代寻找解决方案。这个间隔允许钟摆经过两个完整的时期。gydF4y2Ba
tInit = 0;tFinal = 10;gydF4y2Ba
解决ODE。gydF4y2Ba
溶胶=数值(f, [tInit tFinal], x0)gydF4y2Ba
溶胶=gydF4y2Ba结构体字段:gydF4y2Ba解决:“数值”extdata: [1 x1 struct] x: [1 x45双]y: [2 x45双]统计:[1 x1 struct] idata: [1 x1 struct]gydF4y2Ba
:sols.y (1)gydF4y2Ba
代表了角位移gydF4y2Ba
和gydF4y2Ba:sols.y (2)gydF4y2Ba
代表了角速度gydF4y2Ba
。gydF4y2Ba
情节封闭路径解决方案。gydF4y2Ba
图;yyaxisgydF4y2Ba左gydF4y2Ba;情节(溶胶。x,:sols.y (1),gydF4y2Ba“o”gydF4y2Ba);ylabel (gydF4y2Ba“\θ(rad)”gydF4y2Ba);yyaxisgydF4y2Ba正确的gydF4y2Ba;情节(溶胶。x,:sols.y (2),gydF4y2Ba“o”gydF4y2Ba);ylabel (gydF4y2Ba' \ theta_t (rad / s) 'gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;标题(gydF4y2Ba“相空间封闭路径”gydF4y2Ba);包含(gydF4y2Ba“t (s)”gydF4y2Ba);gydF4y2Ba
可视化钟摆的运动。gydF4y2Ba
x_pos = @ (t)罪(德瓦尔(溶胶t 1));y_pos = @ (t) cos(德瓦尔(溶胶t 1));图;fanimator (@ (t)情节(x_pos (t) y_pos (t)gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba“k”gydF4y2Ba));持有gydF4y2Ba在gydF4y2Ba;fanimator (@ (t)情节([0 x_pos (t)], [0 y_pos (t)),gydF4y2Ba“k -”gydF4y2Ba));fanimator (@ (t)文本(-0.3,1.5,gydF4y2Ba计时器:“gydF4y2Ba+ num2str (t, 2) +gydF4y2Ba“s”gydF4y2Ba));gydF4y2Ba
输入的命令gydF4y2Ba那里gydF4y2Ba
钟摆运动的动画。gydF4y2Ba
解决ODE轮廓通过使用开放的能量gydF4y2Ba数值gydF4y2Ba
。从能源等高线图,开放轮廓满足条件gydF4y2Ba
,gydF4y2Ba
。gydF4y2Ba
x0 = [0;2.01 * omega_0Value];溶胶=数值(f, [tInit tFinal], x0);gydF4y2Ba
情节的解决方案开放能源轮廓。gydF4y2Ba
图;yyaxisgydF4y2Ba左gydF4y2Ba;情节(溶胶。x,:sols.y (1),gydF4y2Ba“o”gydF4y2Ba);ylabel (gydF4y2Ba“\θ(rad)”gydF4y2Ba);yyaxisgydF4y2Ba正确的gydF4y2Ba;情节(溶胶。x,:sols.y (2),gydF4y2Ba“o”gydF4y2Ba);ylabel (gydF4y2Ba' \ theta_t (rad / s) 'gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;标题(gydF4y2Ba“开放路径相空间的gydF4y2Ba);包含(gydF4y2Ba“t (s)”gydF4y2Ba);gydF4y2Ba
可视化钟摆的运动。gydF4y2Ba
x_pos = @ (t)罪(德瓦尔(溶胶t 1));y_pos = @ (t) cos(德瓦尔(溶胶t 1));图;fanimator (@ (t)情节(x_pos (t) y_pos (t)gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba“k”gydF4y2Ba));持有gydF4y2Ba在gydF4y2Ba;fanimator (@ (t)情节([0 x_pos (t)], [0 y_pos (t)),gydF4y2Ba“k -”gydF4y2Ba));fanimator (@ (t)文本(-0.3,1.5,gydF4y2Ba计时器:“gydF4y2Ba+ num2str (t, 2) +gydF4y2Ba“s”gydF4y2Ba));gydF4y2Ba
输入的命令gydF4y2Ba那里gydF4y2Ba
钟摆运动的动画。gydF4y2Ba