忘却の微分方程式(166) Maxima、{ezunits}、単位と変換、次元解析、物理定数

Joseph Halfmoon

頭の抽象度が低い年寄っす。年寄になる前からそうなので、数字には何か単位がついてないと不安を感じます。単位がついていたからといって分かったというわけでもないんだけれども。でもま、そんな抽象度の低い老人にもMaxima様のご配慮は行き届いております。ezunitsパッケージとな。直接呼ぶ必要もないのだけれども。

※「忘却の微分方程式」投稿順 index はこちら

※   MaximaおよびそのGUIであるwxMaximaの以下バージョンを使用させていただいております。

    • Maxima 5.46.0(x86_64-w64-mingw32)
    • wxMaxima 22.04.0
ezunitsパッケージ

今回使わせていただくパッケージの解説ページ(日本語)が以下に。

56. ezunits

しかしこのパッケージを以下のようにして単体でロードすることはあまりないのではないかと思います。

load(ezunits)$

というのも、物理定数とその変換多数を備えた以下のパッケージのロードによって、もれなくezunitsもロードされるからです。

load(physical_constants)$

これによって、真空中の光速度だの、万有引力定数だのという基本的な物理定数の数々に加え、各種単位間の変換、そして次元解析までもが行えるようになるようです。「手が滑る」のか「頭脳が粗雑」なのかは別にしてやらかす老人にとっては次元解析、有用っす。

物理定数ども

まずはパッケージで用意されている物理定数どもを列挙し、その中からお馴染み万有引力定数を調べてみます。こんな感じ。unit000

%Gの値を表示すると何気に分数で表示されるところ、Maxima様らしいです。なお下付きの添え字を必要とする定数どもが結構ありますが、

%e_0

のようにして、アンダーバーで表記すればよいみたいです。

単位とその変換

物理定数どものロードの裏側でロードされている ezunits パッケージのお陰で、逆引用符 ` を使った以下の演算子が使えるようになってます。

    • x ` y 無次元量の数値や数式 x に次元単位 y を結合して次元量とする
    • x “ y 次元量 x を別な単位 y に変換する

ちょっと変換の実例をばunit002

最初のは「1km を m で表せ」ですな。1000m だと。2番目のは「1km 足す 2mを m で表せ」ですな。1002mだと。3番目は「1天文単位(AU)をmで表せ」ですな。大体1億5000万kmですな。これは天文学上の定義値らしいです。知らんけど。

も少し例をつつけます。unit003

変数F1は1ニュートン(力の単位ね、中学でやった?)F1の単位(N)を確認、そして dimensions()関数で次元を解析、長さ x 質量 ÷ 時間の二乗 だと。そして単位付の次元量の無次元な数値部分だけをqtyで取り出せるっと。

計算例?

別シリーズの以下の回で太陽‐地球間の引力計算して軌道を描いてます。

ブロックを積みながら(171) Scilab/Xcos、3次元プロット、地球軌道を描く?

ちょうど1AUの位置にいるときの引力の計算が以下に。

Msun: 1.9891E+30`kg;
Mearth: 5.9720E+24`kg;
F: (constvalue(%G) * (Msun * Mearth) / (1`AU)^2);
dimensions(F);
F``N

Maxima様のご回答が以下に。unit004

Maxima様は抽象的でない単位のある数でもお得意。当然か。

忘却の微分方程式(165) Maxima、{fractals}、ヒルベルト曲線、コッホ曲線 へ戻る

忘却の微分方程式(167) Maxima、lisp呼び出し、コマケー話に躓くんだ、これが。 へ進む