ドキュメンテーション

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

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

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

はじめに

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

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

質量加速度=

mtv(t)=cdv(t)2mg

ここで、

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

  • g は重力加速度

  • v(t) はパラシュート兵の速度

  • cd は空気抵抗係数

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

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

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

mt v(t)+gm=cdv(t)2

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

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

-gmtanh(cdgtm)cd

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

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

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

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

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

1kg"キログラム - 質量の物理単位です。"m"メートル - 長さの物理単位です。"

終端速度の推定

以下を仮定します。

  • パラシュート兵の質量 m=70kg

  • 重力による加速 g=9.81m/s2

  • 空気抵抗係数 cd=40kg/m

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

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

-tanh(t40kg"キログラム - 質量の物理単位です。"m"メートル - 長さの物理単位です。"981100m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"270kg"キログラム - 質量の物理単位です。")70kg"キログラム - 質量の物理単位です。"981100m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"240kg"キログラム - 質量の物理単位です。"m"メートル - 長さの物理単位です。"

vel_SI = simplify(vel_SI)
vel_SI = 

-3763tanh(3763t351s"秒 - 時間の物理単位です。")20m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

-4.14tanh(2.37t1s"秒 - 時間の物理単位です。")m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

-4.14m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

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

-13.6tanh(2.37t1s"秒 - 時間の物理単位です。")ft"フィート - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

-13.6ft"フィート - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

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

-4.14tanh(2.37T)m"メートル - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

-13.6tanh(2.37T)ft"フィート - 長さの物理単位です。"s"秒 - 時間の物理単位です。"

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

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

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

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

© 2016 The MathWorks, Inc.