今回のターゲット:物体の放物運動
前回はPythonを使って物体の放物線運動を解いてみました。
今回は放物運動をアニメーションで可視化してみます。アニメーションを作るために、animation.ArtistAnimation関数を使います。(使い方は後ほど)
Pythonでアニメーションを作る
それではPythonでアニメーションを作ります。
下のようなコードにしました。ほとんど前回の記事と同じですね。
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from IPython.display import HTML
#諸々の条件設定
g = 9.8 #重力加速度は9.8 m/s^2としておきます
x0 = 0.0 #初期位置 x = 0 mとしておきます
y0 = 0.0 #初期位置 y = 0 mとしておきます
v0 = 30.0 #初期速度 v0 = 30 m/sとしておきます
#θ=45°として、初速のx、y成分を求めておきます。
vx0 = v0/np.sqrt(2) #初期速度のx成分を計算しておきます
vy0 = v0/np.sqrt(2) #初期速度のy成分を計算しておきます
t = np.arange(0, 5, 0.1) #時間は100秒程度に設定しておきます
#計算に必要な関数(微分方程式)の定義
#x座標の計算(戻り値はx方向の速度)※わざわざ計算する意味はほとんどありません
def xcoordinate(x, t, g):
return vx0
#y座標の計算(戻り値はy方向の速度)
def ycoordinate(y, t, g): #y座標の計算
return -g * t + vy0
#x座標とy座標の計算 1階微分方程式を解く
#注意:odeintは微分方程式(おそらく1階微分方程式のみ?)を解くライブラリ
#引数は(解きたい微分方程式, 初期値, 変数, args = (パラメータ1, パラメータ2))
#なお、パラメータはタプルで渡して、1つしかない場合は、args = (パラメータ1, )とする
x = odeint(xcoordinate, x0, t, args = (g, ))
y = odeint(ycoordinate, y0, t, args = (g, ))
#以下は可視化のためにグラフを書くコード
fig, ax = plt.subplots()
ax.set_xlabel('x [m]')
ax.set_ylabel('y [m]')
ax.tick_params(direction='in', axis='x')
ax.tick_params(direction='in', axis='y')
ax.set_xlim(0, 100)
ax.set_ylim(0, 30)
#ここまでは前回の記事と同じです
images = [] #画像1枚1枚を保存するリスト
#画像をimagesリストに保存する
for i in range(x.shape[0]): #xの要素ごとに保存
image = ax.plot(x[0:i], y[0:i], color = 'orange')
images.append(image)
#AnimationクラスはFuncAnimationとArtistAnimationがあるようです
#筆者はメモリを食うようですが、簡単にできるArtistAnimationを使用しました
ani = animation.ArtistAnimation(fig, images, interval=100)
#imagemagickを使う方法もあるらしいですが、pillowを使用しました
#GIFとして保存します
ani.save("animation.gif", writer="pillow")
#jupyterLabでGIFを再生するためにjavascript化しています
HTML(ani.to_jshtml())
実行結果
それでは実行結果を見てみましょう。下のようなアニメーションになると思います。
最後に
いかがでしたでしょうか。今回は前回計算した物体の放物運動をアニメーションにしてみました。
実験結果などをアニメーションで視覚的に分かりやすくすることもできますね。
それでは今回はこのあたりで終わりにします。
他にも色々な記事があるのでぜひご覧ください。
【AZ900合格】15時間程度で1発合格した僕の勉強方法、感じた難易度は?(Azure Fundamentals)
Azureの基礎資格AZ-900を取得するための効果的な勉強法を紹介します。IT未経験でも2週間で合格できる方法や、おすすめの教材や模擬試験などを詳しく解説します。Azureの世界に飛び込みましょう!
【2024年版】作業効率UP!PCデスク周りおすすめアイテム紹介!
デスク周りを快適にするための最新ガジェットを厳選して紹介。作業効率をアップさせる便利なアイテムが満載で、あなたの作業環境を一新します。あなたのデスクにぴったりのアイテムを見つけましょう!
M5Stackで音を鳴らしてみた【超初心者がIoT開発に挑んでみる#9】
この記事では、M5Stackで音を鳴らす方法を解説しています。この記事を読めば、M5Stackで音を鳴らす方法がすぐにわかります。
コメント