Python学院
メールマガジンバックナンバー

vol.76

  • コツ・知識
  • メールマガジン

Pythonによるシミュレーションプログラム開発

今回のテーマは
Pythonによるシミュレーションプログラム開発」でございます。

業務の自動化やWEBアプリ開発などにも使われるPythonですが、実は開発やビジネスの場でシミュレーションにも使われていることをご存じでしょうか。
今回は、シミュレーションや計算に関する業務をPythonで行う利点や、実際に作成した3Dアニメーションについても紹介いたします。
最後にコピー&ペーストで実際にシミュレーション動画を作成できるコードも記載しておりますので、ぜひご覧ください。
(約5分で読めます)

~~~~~~~~~目次~~~~~~~~~
1. シミュレーションとは
2. Pythonを用いてシミュレーションを行う利点
3. 3Dアニメーションで波の動きをシミュレーションしてみる
4. 最後に
~~~~~~~~~~~~~~~~~~~~


1. シミュレーションとは

この場でいうシミュレーションとは、現実の問題解決や予測のために、想定される条件をもとにした計算によって模擬的に実験をすることを指します。
例えば、製品の動作に関するコンピューター上での実験、異なる条件下での効果予測などで使われています。

このようなシミュレーションは
・プロジェクト内にある問題の早期発見
・実験の準備に必要な費用や時間といったコストの削減
・コスト過多を防ぐための設計最適化
などに役立ちます。

2. Pythonを用いてシミュレーションを行う利点

シミュレーションはシステムを利用するなど、さまざまな方法で行うことができますがプログラミング言語のPythonを用いて開発することもできます。

以下は実際にPythonを用いて開発した、3Dアニメーションによる波の動きのシミュレーションです。(3章にコードを記載しています)



Pythonを用いてシミュレーションを行う利点には、以下のようなものがあります。
➀カスタマイズ性が高い
カスタマイズが柔軟に行えるため、複数の条件や動作が組み合わさった複雑なシミュレーションであっても、自社の状況に合わせて開発を行うことができます。
構文もシンプルで、多くの方が利用しているためエラーの解決策などが見つかりやすく、比較的簡単に開発を進めることができます。

②開発に必要なツールが充実している
AI開発やグラフ等によるデータの可視化を多く行っている言語でもあるため、シミュレーションに必要なライブラリ(便利ツール)もそろっています。
高度な計算や大量のデータを対象としていても、素早く分析を行うことが可能です。

③作成後に再利用ができる
Pythonであれば一度作成したコードを再利用することができます。別データに対する分析であっても、読み込むデータを差し替えるだけで、複雑な分析を行うことができる点も強みです。

そのほか、PythonはPCで行う操作を自動化することができるため、シミュレーションの開発以外にも業務改善等の幅広い分野にスキルを応用することができます。
また、学習の過程で手順(アルゴリズム)を考える能力が身について課題解決力が高まる、アイデアを形にする能力が高まる、システムの裏側の動作をイメージできるようになる、といった副次的効果も期待できます。


3. 3Dアニメーションで波の動きをシミュレーションしてみる

ここまで、Pythonによるシミュレーションについてご説明いたしました。
それでは、先ほどの3DアニメーションについてPythonプログラムを書いて、動かしてみましょう。

(1)事前準備

a.使用ライブラリのインストール
まず、今回プログラム内で使用するライブラリをインストールします。
プログラムを書く前にまずは事前準備を行う必要があります。

コマンドプロンプト、もしくはターミナル上で以下コマンドを入力し、実行しましょう。

pip install matplotlib

b.Jupyterのインストール
今回はJupyter Notebookの環境を使用してプログラムを作成します。

コマンドプロンプト、もしくはターミナル上で以下コマンドを入力し、実行しましょう。

pip install jupyter

インストールが完了したら、続けて以下のコマンドを実行しJupyter Notebookを開きます。
jupyter notebook

Jupyter Notebookがブラウザで開いたら、右上の NEW > Notebook からプログラムの作成を始めましょう。



(2)実装

それでは、実際にプログラムを動かしてみましょう。
以下コードをJupyter Notebookの画面にコピー&ペーストし、「▶」ボタンで実行します。


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation
from IPython.display import HTML

# パラメータ設定
A = 0.1 # 振幅
f = 1.0 # 周波数 (Hz)
phi = 0 # 位相 (ラジアン)
duration = 2 # シミュレーション時間 (秒)
sampling_rate = 10 # サンプリングレート (Hz)
frames = int(duration * sampling_rate) # 総フレーム数

# 3D格子の生成
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)

# アニメーションのフレームを更新する関数
def update(frame, x, y, ax):
    z = A * np.sin(2 * np.pi * f * (x**2 + y**2)**0.5 + phi + frame / frames * 2 * np.pi)
    ax.cla() # 軸をクリアして新しいプロットを描画
    ax.plot_surface(x, y, z, cmap="viridis")
    ax.set_zlim(-A, A)

# 3Dプロットの初期設定
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_zlim(-A, A)

# アニメーションの作成
ani = animation.FuncAnimation(fig, update, frames=frames, fargs=(x, y, ax), repeat=False)

# Jupyter Notebookでのアニメーション表示
HTML(ani.to_jshtml())

上記のコードを実行すると、以下のような結果が出力され、アニメーションを再生・停止することができます。



4. 最後に

今回は、Pythonでできることの一例としてシミュレーションをご紹介いたしました。
業務の自動化やAI開発などにも多く利用されるPythonですが、基本文法や知識を獲得すれば、ライブラリの知識等を追加するだけで幅広い分野に応用できる点もPythonの魅力です。
是非ご自身の業務でPythonを応用できる部分を探してみてください。

【PR】Pythonの応用に関する研修はコチラ ※カスタマイズ研修のカリキュラムになります。
Pythonを用いたOutlookメールの自動化研修(1日間)
AIを活用した異常検知研修~Pythonによる機械学習モデル開発実践編(2日間)
顧客データの分析研修~Pythonを用いてレコメンドエンジンを作成する(5日間)
Python学院~社内システムの情報を活用して効率的に資料を作る(3日間)


関連研修