kadai1_histogram.py

プログラム一覧に戻る

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("kadai1-1.txt")  # データファイルの読み込み
N = (data[0, :].size - 1) // 4  # 粒子数
v = data[:, 2 * N + 1 : 4 * N + 1]  # 各時刻での各粒子の速度

# どの時間帯のデータを使うか
v_plot = v[0, :].flatten()  # 初期時刻での各粒子の速度
# v_plot = v[1:11, :].flatten()  # はじめの方の時間帯の各粒子の速度
# v_plot = v[101:, :].flatten()  # 終わりの方の時間帯の各粒子の速度: 101のところの数字は自分で調整する

# 速度のヒストグラム(規格化したもの)をプロット
plt.hist(v_plot, bins=100, range=(-2, 2), density=True)

T = np.sum(v_plot ** 2) / v_plot.size  # 使用した時間帯の温度を等分配則から計算
v_compare = np.linspace(-2, 2, 100)  # 比較のプロットのための横軸データ
# マクスウェル分布(比較のプロットのための縦軸データ)
f_Maxwell = np.exp(-(v_compare ** 2) / (2 * T)) / np.sqrt(2 * np.pi * T)
plt.plot(v_compare, f_Maxwell, linestyle="dashed", color="black")  # 比較のためのマクスウェル分布を黒破線でプロット

plt.xlabel("velocity")  # x軸の名前を設定
plt.ylabel("distribution")  # y軸の名前を設定
plt.xlim(-2, 2)  # 横軸の範囲を[-2, 2]に設定

plt.show()  # グラフを表示