連載
» 2015年01月16日 11時00分 UPDATE

無償ソフトで技術計算しよう【シミュレーション基礎編】(1):AKB48……ではなくてODE45! FreeMatだと微分方程式が容易に解ける (1/3)

シミュレーション編では、基礎編として、微分方程式の一般的な説明と数値的に解く方法について解説する。FreeMatを使って微分方程式を容易に解くことが可能だ。

[伊藤孝宏,MONOist]

 今回から「シミュレーション編」に入ります。工学の問題は、位置や温度などの時間変化を扱うことが多く、これらは、時間を変数とした常微分方程式で表されます。一般に、設計では公式を用いる場合がほとんどですが、詳細な答えを必要とする場合、モデルを表した微分方程式を解いて、動きや特性を確認するといったことが必要となります。この場合、モデルに設計諸元となる数値を入れて、数値として動きや特性を得ることになり、こういった作業を「シミュレーション」と呼び、具体的には微分方程式を数値的に解くことになります。

 シミュレーション編では、FreeMatを用いて、微分方程式を数値的に解く方法について説明します。例を挙げると、図1は、振り子の運動をFreeMatで数値的に解いたものです。

yk_FreeMat_sim_a01_01.jpg 図1 振り子の運動の数値シミュレーション

 振り子の周期は振れ幅に関係なく一定であると、学校で習っていたかと思いますが、実は、振れ幅が大きくなると、周期は変化します。振り子の運動方程式を数値的に解くと、この現象を見ることが可能で、図1を見ると、赤い線で表した振れ角が±4.5度の周期と青い線で表した振れ角が±45度の周期とは異なっていることが分かります。

 なお振り子の等時性については、ブログで分かりやすい解説をしている方がいたので紹介しておきます。

 シミュレーション編では、基礎編として、微分方程式の一般的な説明と数値的に解く方法を3回に渡って、また、応用編として、各種の微分方程式や振動現象の数値シミュレーションを例に3回に渡って説明します。先ほどの振り子のシミュレーションについては、応用編の2回目で具体的に説明します。なお、有限要素法などの偏微分方程式を数値的に解く方法については、この連載では扱いません。

筆者注:FreeMatはコマンド入力後にエンターキーを押すとコマンドを実行します。本連載ではエンターキーの記述を省略しますが、操作の際にはコマンド入力後にエンターキーが必要です。



微分方程式の例

 微分方程式について、工学上の例を基に説明します。図2に示すように、T∞[℃]の 雰囲気中にある温度T[℃]の物体から単位時間当たりQ[W]の熱量が放出されるとします。

yk_FreeMat_sim_a01_02.jpg 図2 物体からの放熱

 ここで、物体の表面積はA[m2]、体積はV[m3]、比熱はC[W/kg℃]、密度はρ[kg/m3]、物体表面の熱伝達率はα[W/m2℃]とします。また、物体温度をT[℃]、時間をt[s]とします。物体が小さく、物体の内部には温度分布を生じないとすると、(1)式が成り立ちます。ここで、Δtは時間差、ΔTは温度差です。

yk_FreeMat_sim_a01_siki01.jpg

 また、ニュートンの冷却の法則から、

yk_FreeMat_sim_a01_siki02.jpg

 従って、

yk_FreeMat_sim_a01_siki03.jpg

 (3)式で時間差Δtと温度差ΔTが十分小さいとして、

yk_FreeMat_sim_a01_siki03_2.jpg

とすると、

yk_FreeMat_sim_a01_siki04.jpg

となり、微分方程式が得られます。(4)式は、温度Tが時間tのみの関数となっているため、常微分方程式と呼ばれます。

       1|2|3 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.