Skip to content

Latest commit

 

History

History
128 lines (92 loc) · 2.89 KB

File metadata and controls

128 lines (92 loc) · 2.89 KB

NumPy - 配列操作と数値計算の基礎

NumPyはPythonで数値計算を行うための基本ライブラリです。ロケットシミュレーションでは、位置・速度・加速度などをベクトルとして扱います。

NumPyのインポート

import numpy as np

np という短縮名で使うのが慣例です。

配列の作成

リストから配列を作成

# 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

次章: Matplotlib - グラフ描画と可視化