この例では,符号数学工具箱™をを使し単纯ななを示しを振をますます。振子のますます。振子のますます。振子ののます振振示します。振子の动词式导出し,その方程式を小角解析解析解き,任意の角度解き,任意の角度について数据的に解きます。gydF4y2Ba
振子は,微子は,初初状态状态では垂直で停止してい振従う停止してい振従う停止しでい振従う単纯状态いは振従う単纯ていいに従う単纯ていいに従うし程いいに従うし程いいに従う状态程いいに単纯し程いいに従う程程いいに従うが程程いに従うし程程いにに単纯程程います従う従うし程ていに従う単纯程程いますに従うし程程いに従うし程程いに従う停止し程lgydF4y2Ba だけ動かされ放されると,重力によりその静止位置へ引っ張られます。その運動量により行き過ぎて角度gydF4y2Ba に达し(摩擦ががない合),これを缲り返します。重力によるによる子の动きに伴う复元力gydF4y2Ba です。したがっしたがっ,ニュートンの第2従って,幂と加入度の积gydF4y2Ba に等しくなければなりません。gydF4y2Ba
纽带gydF4y2Ba米gydF4y2Ba一个gydF4y2BaggydF4y2Baθ(t)gydF4y2Ba= -m*g*sin(theta)gydF4y2Ba
EQN(T)=gydF4y2Ba
長さがgydF4y2Ba の振子では,振子の重りの加速度は角加速度にgydF4y2Ba を乘じたものです。gydF4y2Ba
.gydF4y2Ba
潜艇gydF4y2Ba
をgydF4y2Ba
の代わりに使使ます。gydF4y2Ba
纽带gydF4y2BargydF4y2Baeqn =潜艇(eqn r * diff(θ,2))gydF4y2Ba
EQN(T)=gydF4y2Ba
隔离gydF4y2Ba
をを用してgydF4y2BaeqngydF4y2Ba
内の角加速度を分離します。gydF4y2Ba
eqn =隔离(eqn diff(θ,2))gydF4y2Ba
eqn =gydF4y2Ba
定数gydF4y2Ba およびgydF4y2Ba を”固有振動数”gydF4y2Baとしてとしても知られる単単のパラメーターまとめまとめgydF4y2Ba
.gydF4y2Ba
纽带gydF4y2Baomega_0.gydF4y2Baeqn =潜艇(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
をgydF4y2BaDsolve.gydF4y2Ba
を使用して解きます。初期条件を2番目の引数として指定します。gydF4y2Ba认为gydF4y2Ba
をを用してgydF4y2Ba
が実数であると仮定して,解を単純化します。gydF4y2Ba
纽带gydF4y2Batheta_0gydF4y2Batheta_t0gydF4y2Batheta_t = diff(θ);cond = [theta(0)== theta_0,theta_t(0)== theta_t0];假设(omega_0,gydF4y2Ba'真实的'gydF4y2Ba) thetaSol(t) = dsolve(eqnLinear, second)gydF4y2Ba
θol(t)=gydF4y2Ba
項gydF4y2Ba は,“位相”gydF4y2Baととれます。余弦关圈と正式有关部は,gydF4y2Ba ごとに繰り返します。gydF4y2Ba をgydF4y2Ba だけ変化させるのに必要な時間は時間周期と呼ばれます。gydF4y2Ba
.gydF4y2Ba
时间周期gydF4y2Ba は振子の長さの平方根に比例し,質量には依存しません。線形運動方程式では,時間周期は初期条件に依存しません。gydF4y2Ba
小角近似における振子の運動をプロットします。gydF4y2Ba
物理パラメーターを定义し。gydF4y2Ba
重力加载gydF4y2Ba
振子の长さgydF4y2Ba
gvalue = 9.81;rvalue = 1;Omega_0Value = SQRT(GVALUE / RVALUE);t = 2 * pi / omega_0value;gydF4y2Ba
初期条件を設定します。gydF4y2Ba
theta_0Value = 0.1 *π;gydF4y2Ba%解决方案仅对小角度有效。gydF4y2Batheta_t0Value = 0;gydF4y2Ba最初休息的百分比。gydF4y2Ba
物理パラメーターおよび初期条件を一般解に代入します。gydF4y2Ba
var = [omega_0 theta_0 theta_t0];value = [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
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) plot([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
をもつ抽象空間です。これらの軌道をgydF4y2BaFcontour.gydF4y2Ba
をを用し可化します。gydF4y2Ba
纽带gydF4y2BaθgydF4y2Batheta_tgydF4y2Baomega_0.gydF4y2Bae(θ,theta_t,omega_0)=(1/2)*(theta_t ^ 2 +(2 * omega_0 * sin(theta / 2))^ 2);EPLOT(THETA,THETA_T)=潜艇(e,omega_0,OMEGA_0VALUE);图;fc = fcontour(Eplot(pi * theta,2 * omega_0value * theta_t),2 * [ - 1 1 -1 1],gydF4y2Ba......gydF4y2Ba'行宽'gydF4y2Ba2,gydF4y2Ba“LevelList”gydF4y2Ba0:5:50,gydF4y2Ba“MeshDensity”gydF4y2Ba,1 + 2 ^ 8);网格gydF4y2Ba在gydF4y2Ba;标题(gydF4y2Ba相空间中的能量等高线(\theta vs. \theta_t)gydF4y2Ba);包含(gydF4y2Ba“θ/ \ \π”gydF4y2Ba);ylabel (gydF4y2Ba'\ theta_t / 2 \ omega_0'gydF4y2Ba);gydF4y2Ba
一定エネルギーの等高線はgydF4y2Ba 軸およびgydF4y2Ba 軸に対して対称であり,gydF4y2Ba 軸に沿って周期的です。2つの動作領域を図に示します。
等高線図の下側のエネルギーは自身に近くなります。振子は2つの最大角と最大速度の間で揺れます。振子の運動エネルギーは重力エネルギーに打ち勝つには十分ではなく,振子を完全に回転させることはできません。gydF4y2Ba
等高线図の上侧エネルギーは自身にませ振ませは常に常に常にのの角度のの角度向向振しします振振ののしエネルギーはは重にのにのにのにでありでありことができ打ち胜つのに十でありでありでありことができ打ち胜つのに完全でありであり回転ことができをを完全完全に完全ことができことができ。gydF4y2Ba
铁线形动动方程式は,2分注方程式。gydF4y2Ba数值gydF4y2Ba
ソルバーを使用して,これらの方程式を数値的に解きます。gydF4y2Ba数值gydF4y2Ba
は1次の系だけ受け入れるため,系を1次の系约し。次次,gydF4y2Ba数值gydF4y2Ba
への入力となる関数ハンドルを生成します。gydF4y2Ba
2階颂歌を1階颂歌系として書き換えます。gydF4y2Ba
纽带gydF4y2Baθ(t)gydF4y2Batheta_t (t)gydF4y2Baomega_0.gydF4y2Ba等式= [diff(theta) == theta_t;diff (theta_t) = = -omega_0 ^ 2 *罪(θ)]gydF4y2Ba
方程式(t) =gydF4y2Ba
eqs = subs(eqs,omega_0,omega_0value);vars =θ,theta_t];gydF4y2Ba
系の質量行列gydF4y2Ba米gydF4y2Ba
および方程式gydF4y2BaFgydF4y2Ba
の右辺を含むベクトルを求めます。gydF4y2Ba
[m,f] = massmatrixform(eqs,vars)gydF4y2Ba
M =gydF4y2Ba
F =gydF4y2Ba
米gydF4y2Ba
およびgydF4y2BaFgydF4y2Ba
は次の形で表さますます。gydF4y2Ba
後の計算を単純化するために,系を次の形に書き換えます。gydF4y2Ba 。gydF4y2Ba
f = M \ fgydF4y2Ba
F =gydF4y2Ba
odeFunctiongydF4y2Ba
を使用して,gydF4y2BafgydF4y2Ba
をmatlab关节ハンドル変换し変换ししししは关关はははソルバーgydF4y2Ba数值gydF4y2Ba
のの力量にます。gydF4y2Ba
f =铁饼(F,var)gydF4y2Ba
F =gydF4y2Bafunction_handle与价值:gydF4y2Ba@ (t, in2) [in2(2:);罪(in2(1:))。* 2./1.0 (-9.81 e + e + 2))gydF4y2Ba
数值gydF4y2Ba
を使用して,閉じたエネルギー等高線の颂歌を解きます。gydF4y2Ba
エネルギー等高線図から,閉じた等高線は条件gydF4y2Ba
、gydF4y2Ba
を満たします。gydF4y2Ba
およびgydF4y2Ba
のの初条件を数gydF4y2BaX0.gydF4y2Ba
に保存します。gydF4y2Ba
x0 = [0;1.99 * OMEGA_0VALUE];gydF4y2Ba
解を求めるため0秒から10秒までの時間間隔を指定します。この間隔で,振子は2周期分動くことができます。gydF4y2Ba
tinit = 0;tfinal = 10;gydF4y2Ba
ODEを解きます。gydF4y2Ba
sols = ode45(f,[tInit tFinal],x0)gydF4y2Ba
Sols =.gydF4y2Ba结构体字段:gydF4y2Ba求解器:'ode45'extdata:[1x1 struct] x:[1x45双] y:[2x45双]统计:[1x1 struct] iData:[1x1 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'\ theta(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) sin(deval(sols,t,1));Y_pos = @(t) -cos(deval(sols,t,1));图;fanimator (@ (t)情节(x_pos (t) y_pos (t)gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba'k'gydF4y2Ba));持有gydF4y2Ba在gydF4y2Ba;fanimator(@ t) plot([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
x0 = [0;2.01 * OMEGA_0VALUE];溶胶= ode45(f,[tinit,tfinal],x0);gydF4y2Ba
開いたエネルギー等高線の解をプロットします。gydF4y2Ba
图;yyaxisgydF4y2Ba左gydF4y2Ba;情节(溶胶。x,sols.y(1,:),gydF4y2Ba“o”gydF4y2Ba);ylabel (gydF4y2Ba'\ theta(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) sin(deval(sols,t,1));Y_pos = @(t) -cos(deval(sols,t,1));图;fanimator (@ (t)情节(x_pos (t) y_pos (t)gydF4y2Ba“柯”gydF4y2Ba,gydF4y2Ba“MarkerFaceColor”gydF4y2Ba,gydF4y2Ba'k'gydF4y2Ba));持有gydF4y2Ba在gydF4y2Ba;fanimator(@ t) plot([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