NumPyはPythonで数値計算を行うための基本ライブラリです。ロケットシミュレーションでは、位置・速度・加速度などをベクトルとして扱います。
import numpy as npnp という短縮名で使うのが慣例です。
# 1次元配列
a = np.array([1, 2, 3, 4, 5])
print(a) # [1 2 3 4 5]
# 2次元配列(行列)
b = np.array([[1, 2, 3],
[4, 5, 6]])
print(b)
# [[1 2 3]
# [4 5 6]]# ゼロで初期化
zeros = np.zeros(5) # [0. 0. 0. 0. 0.]
zeros_2d = np.zeros((3, 4)) # 3行4列のゼロ行列
# 1で初期化
ones = np.ones(5) # [1. 1. 1. 1. 1.]
# 等間隔の数列
t = np.linspace(0, 10, 11) # 0から10まで11点
# [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
t2 = np.arange(0, 10, 0.5) # 0から10未満、0.5刻み
# [0. 0.5 1. 1.5 2. ... 9.5]NumPy配列は要素ごとの演算ができます。
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 要素ごとの演算
print(a + b) # [5 7 9]
print(a * b) # [4 10 18]
print(a ** 2) # [1 4 9]
# スカラーとの演算
print(a * 2) # [2 4 6]
print(a + 10) # [11 12 13]ロケットの位置や速度は3次元ベクトルで表します。
# 位置ベクトル [x, y, z]
position = np.array([100.0, 200.0, 500.0])
# 速度ベクトル [vx, vy, vz]
velocity = np.array([10.0, 5.0, 50.0])
# ベクトルの大きさ(ノルム)
speed = np.linalg.norm(velocity)
print(f"速さ: {speed:.2f} m/s") # 速さ: 51.24 m/s
# 単位ベクトル
unit_v = velocity / speed
print(f"単位ベクトル: {unit_v}")# 三角関数(引数はラジアン)
angle = np.pi / 4 # 45度
print(np.sin(angle)) # 0.7071...
print(np.cos(angle)) # 0.7071...
# 度とラジアンの変換
deg = 45
rad = np.radians(deg) # 度 → ラジアン
deg2 = np.degrees(rad) # ラジアン → 度
# 平方根、指数、対数
print(np.sqrt(2)) # 1.414...
print(np.exp(1)) # 2.718... (e^1)
print(np.log(np.e)) # 1.0 (自然対数)a = np.array([10, 20, 30, 40, 50])
# インデックス(0始まり)
print(a[0]) # 10(最初の要素)
print(a[-1]) # 50(最後の要素)
# スライス
print(a[1:4]) # [20 30 40](インデックス1から3まで)
print(a[:3]) # [10 20 30](最初から3つ)
print(a[2:]) # [30 40 50](インデックス2以降)scripts/01_python/01_numpy_example.py を実行してください:
python scripts/01_python/01_numpy_example.py