这个例子说明了如何使用模拟符号数学工具箱™单摆运动。导出摆的运动方程,然后分析对于小角度和数值求解方程的任何角度。GydF4y2Ba
摆是一个遵循微分方程的简单机械系统。钟摆最初是在垂直位置上静止的。当摆被一个角度移动时GydF4y2Ba 释放后,重力把它拉回到它的静止位置。它的动量使它超越并形成一个角度GydF4y2Ba (如果没有摩擦力)等等。沿钟摆运动方向由于重力的恢复力为GydF4y2Ba 。因此,根据牛顿第二定律,质量乘以加速度一定是相等的GydF4y2Ba 。GydF4y2Ba
SYMSGydF4y2Ba米GydF4y2Ba一个GydF4y2BaGGydF4y2BaTHETA(t)的GydF4y2Ba等式= M * A == -m * G * SIN(THETA)GydF4y2Ba
等式(T)=GydF4y2Ba
对于有长度的钟摆GydF4y2Ba 时,摆锤的加速度等于角加速度倍GydF4y2Ba 。GydF4y2Ba
。GydF4y2Ba
代替GydF4y2Ba
通过使用GydF4y2Ba潜艇GydF4y2Ba
。GydF4y2Ba
SYMSGydF4y2Ba[RGydF4y2Ba等式=潜艇(等式,A,R * DIFF(THETA,2))GydF4y2Ba
等式(T)=GydF4y2Ba
隔离在角加速度GydF4y2BaeqnGydF4y2Ba
通过使用GydF4y2Ba隔离GydF4y2Ba
。GydF4y2Ba
等式=分离物(等式,DIFF(THETA,2))GydF4y2Ba
eqn =GydF4y2Ba
收集常数GydF4y2Ba 和GydF4y2Ba 成一个单一的参数,其也被称为GydF4y2Ba固有频率GydF4y2Ba。GydF4y2Ba
。GydF4y2Ba
SYMSGydF4y2Baomega_0GydF4y2Baeqn =潜艇(eqn, g / r, omega_0 ^ 2)GydF4y2Ba
eqn =GydF4y2Ba
运动方程是非线性的,所以它是很难求解。假定的角度是小的,并通过使用的泰勒展开线性化方程GydF4y2Ba 。GydF4y2Ba
SYMSGydF4y2BaXGydF4y2Ba约=泰勒(sin (x), x,GydF4y2Ba“秩序”GydF4y2Ba2);约=潜艇(大约x,θ(t))GydF4y2Ba
约=GydF4y2Ba
运动方程变为线性方程。GydF4y2Ba
eqnLinear =潜艇(等式,SIN(THETA(t))的,大约)GydF4y2Ba
eqnLinear =GydF4y2Ba
解方程GydF4y2BaeqnLinearGydF4y2Ba
通过使用GydF4y2BadsolveGydF4y2Ba
。指定的初始条件作为第二个参数。简化通过假定溶液GydF4y2Ba
是真实的使用GydF4y2Ba假设GydF4y2Ba
。GydF4y2Ba
SYMSGydF4y2Batheta_0GydF4y2Batheta_t0GydF4y2Batheta_t = diff(θ);cond = [theta(0) == theta_0, theta_t(0) == theta_t0];假设(omega_0GydF4y2Ba“真实”的GydF4y2Ba)thetaSol(T)= dsolve(eqnLinear,COND)GydF4y2Ba
thetaSol (t) =GydF4y2Ba
这个词GydF4y2Ba 被称为GydF4y2Ba阶段GydF4y2Ba。cos和sin函数重复每一次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
瓦尔= [omega_0 theta_0 theta_t0];值= [omega_0Value theta_0Value theta_t0Value];thetaSolPlot =潜艇(thetaSol,乏,值);GydF4y2Ba
绘制谐波钟摆运动。GydF4y2Ba
fplot(thetaSolPlot(T * T)/ PI,[0 5]);格GydF4y2Ba在GydF4y2Ba;标题(GydF4y2Ba“谐波钟摆运动”GydF4y2Ba);xlabel(GydF4y2Ba'T / T'GydF4y2Ba);ylabel(GydF4y2Ba'\ THETA / \ P1'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
SYMSGydF4y2BaTHETAGydF4y2Batheta_tGydF4y2Baomega_0GydF4y2BaE(θ,theta_t omega_0) = (1/2) * (theta_t ^ 2 + (2 * omega_0 * sin(θ/ 2))^ 2);Eplot(theta, theta_t) = subs(E,omega_0,omega_0Value);图;fc = fcontour(Eplot(pi*theta, 2*omega_0Value*theta_t), 2*[-1 -1 -1],GydF4y2Ba...GydF4y2Ba“线宽”GydF4y2Ba,2,GydF4y2Ba“LevelList”GydF4y2Ba0:5:50,GydF4y2Ba“MeshDensity”GydF4y2Ba1 + 2 ^ 8);格GydF4y2Ba在GydF4y2Ba;标题(GydF4y2Ba“相位空间中的恒定能量等值线(\theta vs. \theta_t)”GydF4y2Ba);xlabel(GydF4y2Ba'\ THETA / \ P1'GydF4y2Ba);ylabel(GydF4y2Ba“\ theta_t / 2 \ omega_0”GydF4y2Ba);GydF4y2Ba
等能线是对称的GydF4y2Ba 轴和GydF4y2Ba 轴线,和沿着所述周期性GydF4y2Ba 轴。图中显示了两个具有不同行为的区域。GydF4y2Ba
等高线图的较低能量接近它们本身。钟摆在两个最大角度和速度之间来回摆动。摆的动能不足以克服万有引力,使摆完成一个完整的循环。GydF4y2Ba
等高线图的更高的能量不关闭在他们自己。钟摆总是在移动一个角度方向。钟摆的动能足以克服重力的能量,使钟摆做一个完整的循环。GydF4y2Ba
运动的非线性方程是二阶微分方程。通过使用数值求解这些方程GydF4y2Ba数值GydF4y2Ba
解算器。因为GydF4y2Ba数值GydF4y2Ba
只接受一阶系统,将系统简化为一阶系统。然后,生成作为输入的函数句柄GydF4y2Ba数值GydF4y2Ba
。GydF4y2Ba
将二阶ODE重写为一阶ODE系统。GydF4y2Ba
SYMSGydF4y2BaTHETA(t)的GydF4y2Batheta_t(t)的GydF4y2Baomega_0GydF4y2Ba方程= [DIFF(THETA)== theta_t;DIFF(theta_t)== -omega_0 ^ 2 * SIN(THETA)]GydF4y2Ba
方程(T)=GydF4y2Ba
方程=潜艇(均衡器,omega_0,omega_0Value);瓦尔=θ,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, vars)GydF4y2Ba
f =GydF4y2Ba与价值function_handle:GydF4y2Ba@ (t, in2) [in2(2:);罪(in2 (1:))。* 2./1.0 (-9.81 e + e + 2))GydF4y2Ba
通过求解封闭能量轮廓ODEGydF4y2Ba数值GydF4y2Ba
。GydF4y2Ba
从能源等高线图,封闭轮廓满足条件GydF4y2Ba
,GydF4y2Ba
。存储的初始条件GydF4y2Ba
和GydF4y2Ba
在变量GydF4y2BaX0GydF4y2Ba
。GydF4y2Ba
x0 = [0;1.99 * omega_0Value];GydF4y2Ba
指定从0秒到10秒的时间间隔来找到解决方案。这个间隔允许钟摆经过两个完整的周期。GydF4y2Ba
时间Tinit = 0;T最终= 10;GydF4y2Ba
解决ODE。GydF4y2Ba
溶胶= ODE45(F,[时间Tinit T最终],X0)GydF4y2Ba
溶胶=GydF4y2Ba结构体字段:GydF4y2Ba求解器: 'ODE45' 扩展数据:[1x1的结构]×:[1x45双] Y:[2x45双]统计:[1x1的结构] IDATA:[1x1的结构]GydF4y2Ba
:sols.y (1)GydF4y2Ba
表示角位移GydF4y2Ba
和GydF4y2Basols.y(2,:)GydF4y2Ba
表示角速度GydF4y2Ba
。GydF4y2Ba
画出闭合路径解。GydF4y2Ba
图;yyaxisGydF4y2Ba剩下GydF4y2Ba;图(sols.x,sols.y(1,:),GydF4y2Ba“o”GydF4y2Ba);ylabel(GydF4y2Ba“\θ(rad)”GydF4y2Ba);yyaxisGydF4y2Ba对GydF4y2Ba;图(sols.x,sols.y(2,:),GydF4y2Ba“o”GydF4y2Ba);ylabel(GydF4y2Ba'\ theta_t(弧度/秒)'GydF4y2Ba);格GydF4y2Ba在GydF4y2Ba;标题(GydF4y2Ba“相空间中的闭合路径”GydF4y2Ba);xlabel(GydF4y2Ba'T(S)'GydF4y2Ba);GydF4y2Ba
可视化的钟摆运动。GydF4y2Ba
X_POS = @(t)的SIN(德瓦尔(溶胶,T,1));Y_POS = @(T)-cos(德瓦尔(溶胶,T,1));图;fanimator(@(t)的曲线图(X_POS(吨),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
求解能量等值线的常微分方程GydF4y2Ba数值GydF4y2Ba
。从能源等高线图,开放式轮廓满足条件GydF4y2Ba
,GydF4y2Ba
。GydF4y2Ba
x0 = [0;2.01 * omega_0Value];sols = ode45(f, [tInit, tFinal], x0);GydF4y2Ba
绘制开放能等值线的解。GydF4y2Ba
图;yyaxisGydF4y2Ba剩下GydF4y2Ba;图(sols.x,sols.y(1,:),GydF4y2Ba“o”GydF4y2Ba);ylabel(GydF4y2Ba“\θ(rad)”GydF4y2Ba);yyaxisGydF4y2Ba对GydF4y2Ba;图(sols.x,sols.y(2,:),GydF4y2Ba“o”GydF4y2Ba);ylabel(GydF4y2Ba'\ theta_t(弧度/秒)'GydF4y2Ba);格GydF4y2Ba在GydF4y2Ba;标题(GydF4y2Ba“在相空间的开放路径”GydF4y2Ba);xlabel(GydF4y2Ba'T(S)'GydF4y2Ba);GydF4y2Ba
可视化的钟摆运动。GydF4y2Ba
X_POS = @(t)的SIN(德瓦尔(溶胶,T,1));Y_POS = @(T)-cos(德瓦尔(溶胶,T,1));图;fanimator(@(t)的曲线图(X_POS(吨),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