Nボディの惑星システムをシミュレートするPythonプログラムを作成します。これにより、ボディの数、その質量、速度、初期位置をコンソールが要求されます。これにより、各ステップが秒であるシミュレーション10000ステップが実行されます。最後に、彼はmatpletlibを使用して異なる色の体の軌跡を示します。
クリア！ここには、惑星システムをシミュレートするPythonプログラムがあります。

`python
npとしてnumpyをインポートします
pltとしてmatplotlib.pyplotをインポートします

G = 6.67430E-11＃重力定数

def update_posiones（位置、速度、質量、time_step）：
    n_bodies = len（質量）
    force = np.zeros（（n_bodies、2））

    ＃力を計算します
    範囲のi（n_bodies）：
        range（n_bodies）のjの場合：
            i！= jの場合：
                r =位置[j]  - 位置[i]
                f = g *質量[i] *質量[j] / np.linalg.norm（r）** 2
                力[i] += f * r / np.linalg.norm（r）

    ＃位置と速度を更新します
    加速=力 /質量
    velocities += acceleration * time_step
    ポーズ += velocities * time_step

    返品の仮定、速度

defシミュレーション（n_bodies）：
    n_bodies == 2の場合：
      質量= 100*np.array（[1、1]）
      Velocities = np.Array（[[-0.05、0.5]、[0.05、0.5]]）
      Posations = np.Array（[[0.5、0]、[-0.5、0]]）

    それ以外：
      ＃入力を求めます
      質量= np.zeros（n_bodies）
      velocities = np.zeros（（n_bodies、2））
      Posations = np.zeros（（n_bodies、2））

      範囲のi（n_bodies）：
          質量[i] = float（input（f "\ nestr body {i+1}："））
          velocities [i] = [float（input（f "体の方向に速度を入力{i+1}："）、、）、
                           float（input（f "体の速度と方向を入力{i+1}："）]]]
          Posations [i] = [float（input（f "body {i+1}のx位置を入力："）、）、
                          float（input（f "enter and position of body {i+1}："））））

    ＃シミュレーションを実行します
    time_step = 1.0＃in秒
    N_STEPS = 10,000
    posations_history = np.zeros（（n_steps+1、n_bodies、2））
    posations_history [0] = posations.copy（）
    範囲のi（n_steps）：
        位置、velocities = update_posions（ポーズ、速度、質量、time_step）
        posations_history [i+1] = posations.copy（）

    ＃プロットを設定します
    colors = plt.cm.rainbow（np.linspace（0、1、n_bodies））
    図、ax = plt.subploots（）
    range（n_bodies）のjの場合：
        ax.plot（posations_history [：、j、0]、posations_history [：、j、1]、color = color [j]、linewidth = 0.5）
        ax.plot（posations_history [-1、j、0]、posations_history [-1、j、1]、color = color [j]、marker = 'or'、markersize = 3）

    ＃プロットを表示します
    plt.show（）

__name__ == '__main__'の場合：
    Simulate（n_bodies = int（input（ "ボディ数を入力："））））））
``

プログラムは次のように機能します。

1.最初に重力定数Gを定義します。

2. * update_posiones *関数は、重力質量と力に基づいて体の位置と速度を更新します。

3.関数 *シミュレーション *ユーザーに入力データ（各ボディの質量、速度、位置）を要求し、パスを構成し、10000ステップ（各ステップは2秒）のシミュレーションを実行し、ボディの軌跡を描画します。

4.「__name__ == '__main__'」の場合は「python」でシミュレートするボディの数をユーザーに尋ね、シミュレーション関数を呼び出します。

プログラムを実行するには、コードをpythonファイル（たとえば、n_body_simulation.py）として保存し、コマンドラインから実行します。体の数を導入するように求められ、次に各ボディについて、その質量、X方向の速度、方向の速度、および位置xと位置yを導入する必要があります。シミュレーションを実行した後、プログラムには体の軌跡のグラフが表示されます。