Pythonを使って、以前ExcelVBAで計算させた”微小振幅波の波長の繰り返し収束計算”を実行してみました。
なお、繰り返し計算の定式化については“VBAで微小振幅波の波長の繰り返し収束計算の定式化“を、ExcelVBAでの計算方法については“VBAで微小振幅波の波長計算のためのプロシージャ作成と実行“をそれぞれ参照してください。
プログラムと実行結果
メモ帳でプログラムをつくりました。ファイル名は”***.py”、文字は”UTF-8”で書いています。
実行順序は以下のようです。
- モジュールのインポート
- 波浪条件の入力と出力
- 波長の繰り返し計算
- 計算結果(波長)の出力
プログラムの実行は、PowerShellにて行います。PythonのダウンロードやPowerShellの使い方については、”PythonをダウンロードしてPowerShellで動かしてみた!”を参照してください。
波浪条件の入力指示に従い数値を入力していくと、波長の結果が出力されて計算終了となります。
今回用いたプログラムコード
モジュールのインポートと使用
Pythonでは様々な機能がモジュールとして整備されていますが、それらの機能を使用する際には必要なモジュールをインポートする必要があります。今回はmathモジュールとsysモジュールを使用しました。
import math → TanhやSinhなどの関数の計算が行えます。関数名の前にmath.を付け加えて使用します。今回の計算では、Tanh:math.tanh()、Sinh:math.sinh()、abs:math.fabs()を用いています。
import sys → Pythonの実行に関連する関数を利用できます。関数名の前にsys.を付け加えて使用します。今回の計算では、Pythonの実行終了:sys.exit()を用いています。
数値入力値の受け取り
質問をプリントして、インプットされた文字を実数に変換して、変数に入力しています。
変数=float(input(‘文字列\n‘)) → float():実数への変換, input():引数で渡された文字列を出力して入力文字列を受け取る, \n:改行
if文の使用
VBAやFortranと同じように、if~elif~elseが使用できますが、後ろに”:”をつける必要があり、空白(半角ブランク)4つ分のインデントを付けることで処理内容であることを示します。つまり、適切なインデントが無い部分はif文の処理内容ではないと認識されます。
繰り返し計算rangeオブジェクト
今回の繰り返し計算では、rangeオブジェクトを用いています。処理内容には空白(半角ブランク)4つ分のインデントを付けるのはif文と同じです。
for i in range(n) → 変数iに0から(n-1)の値が順番に代入される
繰り返し計算から抜け出る
if文の条件を満たした場合、繰り返し計算から抜け出るために、コマンドbreakを使用しています。
format付き数値の出力
Pythonの出力はprintオブジェクトを用いていますが、計算結果をそのまま出力すると有効桁数まで全て出力されますので、少数点以下2桁の実数として出力しています。
print(f’文字列{変数:フォーマットを指定}文字列‘.format(変数)) → 緑文字が文字列と変数を同時に出力する部分、赤文字がフォーマット指定する部分です。
まとめ
今回は、以前ExcelVBAでつくった微小振幅波の波長計算をPythonで計算してみました。記述内容やモジュールの使用など、特化した内容はありましたが問題なく計算できているようです。また、本で勉強しながら作ったプログラムですので、本来はもう少しすっきりしたプログラムにできるようです。
次回はtxtファイルの入出力等も使ってみたいと思います。
コメント