【Python入門】水平投射|関数の実装とグラフ化

水平投射|関数の実装とグラフ化_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

物理法則の基本とされる「水平投射」は、Pythonで簡単に計算することができます。

本記事では、Pythonを使用した水平投射の関数実装方法とグラフ化方法について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用した水平投射の関数実装方法とグラフ化方法について学びたい人
levtech-ad

水平投射

水平投射とは、物体を水平方向に投げ出す運動のことです。

空気抵抗を無視した場合の水平投射の速度と変位は、初速度\(v_{0}\)、重力加速度\(g\)を使用して、下式で表されます。(鉛直方向下向きを正とした場合)

\(v_{x}=v_{0}\)

\(v_{y}=gt\)

\(x=v_{0}t\)

\(y=\dfrac{1}{2}gt^{2}\)

また軌道の式は以下になります。

\(y=\dfrac{g}{2v_{0}^{2}}x^{2}\)

水平投射の関数実装

NumPyおよびSciPyのscipy.constants.gを使用して、任意の初速度・時間における水平投射の速度と変位を計算する関数実装例を、以下にご紹介します。

#input
import numpy as np
import scipy.constants as const

V0 = input("初速度:")
v0 = int(V0)
T = input("時間:")
t = int(T)

vx = v0
vy = const.g * t
x = v0 * t
y = 1 / 2 * const.g * t**2

print("x方向速度:{:.3f}".format(vx))
print("y方向速度:{:.3f}".format(vy))
print("x方向変位:{:.3f}".format(x))
print("y方向変位:{:.3f}".format(y))
#input
初速度:50
時間:3
#output
x方向速度:50.000
y方向速度:29.420
x方向変位:150.000
y方向変位:44.130

水平投射の速度-時間グラフ

MatplotlibとNumPy、SciPyのscipy.constants.gを使用して、水平投射の速度-時間グラフを作成してみます。

初速度は50とします。

#input
import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as const

fig = plt.figure()

A = fig.add_subplot(111)
A.grid(color="k",linestyle="dotted")
A.set_title("velocity of horizontal projectile", fontsize = 16)
A.set_xlabel("t", fontsize = 14)
A.set_ylabel("v", fontsize = 14)
A.set_xlim(0,5)

v0 = 50

t = np.linspace(0,5,129)
vx = v0 *t/t
vy = const.g * t

A.plot(t,vx,color="green",label="vx",lw=3)
A.plot(t,vy,color="orange",label="vy",lw=3)
A.legend()
plt.show()
水平投射(速度-時間)

水平投射の変位-時間グラフ

同様に、水平投射の変位-時間グラフを作成してみます。

#input
import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as const

fig = plt.figure()

A = fig.add_subplot(111)
A.grid(color="k",linestyle="dotted")
A.set_title("displacement of horizontal projectile", fontsize = 16)
A.set_xlabel("t", fontsize = 14)
A.set_ylabel("y", fontsize = 14)
A.set_xlim(0,5)

v0 = 50

t = np.linspace(0,5,129)
x = v0 * t
y = 1 / 2 * const.g * t**2

A.plot(t,x,color="red",label="x",lw=3)
A.plot(t,y,color="blue",label="y",lw=3)
A.legend()
plt.show()
水平投射(変位-時間)

水平投射の軌道グラフ

同様に、水平投射の軌道グラフを作成してみます。

#input
import numpy as np
import matplotlib.pyplot as plt
import scipy.constants as const

fig = plt.figure()

A = fig.add_subplot(111)
A.grid(color="k",linestyle="dotted")
A.set_title("trajectory of horizontal projectile", fontsize = 16)
A.set_xlabel("x", fontsize = 14)
A.set_ylabel("y", fontsize = 14)
A.set_xlim(0,1000)
A.set_ylim(2000,0)

v0 = 50

x = np.linspace(0,1000,129)
y = const.g*x**2/(2*v0**2)

A.plot(x,y,color="deepskyblue",label="y",lw=3,ls='--')
plt.show()
水平投射(軌道)

まとめ

この記事では、Pythonを使用した水平投射の関数実装方法とグラフ化方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました