ランジュバン方程式(Langevin equation)

ランジュバン方程式(Langevin equation)

ランジュバン方程式は、ブラウン運動ランダムな運動を記述する微分方程式の一つです。

この方程式は、粒子が外部からのランダムな力によって影響を受ける場合の振る舞いをモデル化します。

具体的には、粒子の速度の時間変化を記述します。

ランジュバン方程式では、粒子の速度には外力が加わる一方で、粘性摩擦ランダムな摂動が影響を与えます。

これにより、粒子の速度はランダムな変化を示すことがあります。

ランジュバン方程式は、このようなランダムな運動をモデル化するために使用され、物理学統計力学などのさまざまな分野で応用されています。

ソースコード

以下のコードでは、1次元のランジュバン方程式を解き、結果をグラフ化しています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np
import matplotlib.pyplot as plt

# パラメータの設定
N = 1000 # サンプル数
T = 1.0 # シミュレーション時間
dt = T / N # タイムステップ

# ランジュバン方程式の解析解を定義
def langevin_solution(N, T):
t_values = np.linspace(0, T, N)
x_values = np.zeros(N)
for i in range(1, N):
x_values[i] = x_values[i-1] + np.sqrt(dt) * np.random.normal()
return t_values, x_values

# 解析解を取得
t, x = langevin_solution(N, T)

# グラフのプロット
plt.plot(t, x, color='b')
plt.xlabel('Time')
plt.ylabel('Position')
plt.title('Langevin Equation')
plt.grid(True)
plt.show()

このコードでは、解析解を使って1次元ランジュバン方程式を解き、時間に対する位置の変化をプロットしています。

結果として得られるグラフは、ブラウン運動のようなランダムな運動を表します。

[実行結果]

ソースコード解説

上記のソースコードは、Pythonを使用して1次元のランジュバン方程式を解き、その解析解をグラフ化するものです。

1. ライブラリのインポート:

まず、NumPyMatplotlibのライブラリをインポートしています。
NumPyは数値計算のための基本的なライブラリであり、Matplotlibはグラフの描画に使用されます。

2. パラメータの設定:

次に、シミュレーションのパラメータを設定しています。
Nサンプル数Tシミュレーションの時間dt時間ステップです。

3. ランジュバン方程式の解析解の定義:

ランジュバン方程式の解析解を定義しています。
この関数は、与えられた時間範囲で粒子の位置の時間変化を計算します。
この場合、1次元のランジュバン方程式に対する解析解を使用しています。
粒子の位置は時間の関数として計算され、各時間ステップでランダムな摂動が加えられます。

4. 解析解の取得:

langevin_solution関数を使用して解析解を取得します。
この関数は時間Tまでの時間の値と、それに対応する粒子の位置の配列を返します。

5. グラフのプロット:

最後に、取得した解析解をMatplotlibを使用してグラフ化します。
横軸は時間を表し、縦軸は粒子の位置を表します。
このグラフは、ランダムな運動をする粒子の振る舞いを視覚化しています。
ランジュバン方程式の性質により、粒子の位置はランダムな揺れを示します。

これにより、1次元のランジュバン方程式の解析解を計算し、その結果をグラフ化するプログラムが完成します。

結果解説

[実行結果]

このグラフは、1次元のランジュバン方程式によって表される粒子の時間変化を示しています。

横軸は時間を表し、縦軸は粒子の位置を示します。
この方程式はブラウン運動ランダムな運動を記述し、各時間ステップで粒子の位置がランダムに変化します。

グラフはランダムな揺らぎを示し、粒子がランダムに動いていることを視覚化しています。

ランダムウォークのような特徴があり、時間が経つにつれて粒子の位置が乱れていく様子が観察できます。