ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

物理学における単位の使用

SI 単位系と帝国単位系の両方で、単位を使用した物理計算を行います。抗力による減速をモデリングして、降下するパラシュート兵の終端速度を単位を使用して計算します。

はじめに

飛行機から降下するパラシュート兵を想像してください。パラシュート兵に働く力は、重力とパラシュートからの逆向きの抗力の 2 つしかないと仮定します。

パラシュート兵に働く合力は次のように表現できます。

ここで、

  • はパラシュート兵の質量

  • g は重力加速度

  • はパラシュート兵の速度

  • は空気抵抗係数

微分方程式を定義して解く

力のバランスを表現する微分方程式を定義します。

syms g m c_d
syms v(t)
eq = m*diff(v(t),t) + m*g == c_d*v(t)^2
eq = 

パラシュートは で即座に開くため、方程式 eq のすべての値に対して有効です。dsolve を初期条件 で使用して微分方程式を解析的に解きます。

velocity = simplify(dsolve(eq, v(0) == 0))
velocity = 

空気抵抗係数の単位系を求める

SI 単位系における空気抵抗係数 の単位を求めます。力の単位はニュートン または SI 基本単位 で表現されます。それらは等しいため、単位換算率は 1 です。

u = symunit;
unitConversionFactor(u.N, u.kg*u.m/u.s^2)
ans = 

空気抵抗 のニュートン 単位における物理次元は重力 と等しくなければならないため、 の物理次元を求められます。

syms drag_units_SI
drag_units_SI = simplify(solve(drag_units_SI * (u.m / u.s)^2 == u.N))
drag_units_SI = 

終端速度の推定

以下を仮定します。

  • パラシュート兵の質量

  • 重力による加速

  • 空気抵抗係数

これらの値を速度方程式に代入して、結果を単純化します。

vel_SI = subs(velocity,[g,m,c_d],[9.81*u.m/u.s^2, 70*u.kg, 40*drag_units_SI])
vel_SI = 

vel_SI = simplify(vel_SI)
vel_SI = 

有効桁数 3 桁で数値的な近似を計算します。

digits(3)
vel_SI = vpa(vel_SI)
vel_SI = 

重力と抗力のバランスが取れるとパラシュート兵の速度は一定に近づきます。これは終端速度と呼ばれ、パラシュートからの抵抗力が重力とほぼ等しくなる時点で生じ、それ以降は加速されません。limit で使用して終端速度を求めます。

vel_term_SI = limit(vel_SI, t, Inf)
vel_term_SI = 

帝国単位を使って速度を書き直す

最後に、速度関数を SI 単位から帝国単位に書き直します。

vel_Imperial = rewrite(vel_SI,u.ft)
vel_Imperial = 

終端速度を書き直します。

vel_term_Imperial = rewrite(vel_term_SI,u.ft)
vel_term_Imperial = 

時間ごとの速度をプロット

減速をプロットするため、時刻 t (秒) を測定して t を t = T s で置き換えます。T は無次元のシンボリック変数です。

syms T
vel_SI = subs(vel_SI, t, T*u.s)
vel_SI = 

vel_Imperial = rewrite(vel_SI, u.ft)
vel_Imperial = 

separateUnits を使用して式を単位から切り離します。fplot を使用して式をプロットします。プロットのラベルとして用いるため、symunit2str を使用して単位を string に変換します。

[data_SI, units_SI] = separateUnits(vel_SI);
[data_Imperial, units_Imperial] = separateUnits(vel_Imperial);

でパラシュート兵の速度が定常状態に近づいていることがわかります。範囲 の速度変化をプロットすることで、速度がどのように終端速度に近づくかを示します。

subplot(1,2,1)
fplot(data_SI,[0 2])
title('Deacceleration in SI Units')
xlabel('Time in s')
ylabel(['Velocity in ' symunit2str(units_SI)])
subplot(1,2,2)
fplot(data_Imperial,[0 2])
title('Deacceleration in Imperial Units')
xlabel('Time in s')
ylabel(['Velocity in ' symunit2str(units_Imperial)])

© 2016 The MathWorks, Inc.