1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ランダムウォークで学ぶ複雑系の基礎:偶然性と探索行動をシミュレーション

Last updated at Posted at 2025-01-03

はじめに

ランダムウォークは、複雑系や確率過程を理解するための基本的なモデルです。
例えば、動物が資源を探す行動や分子のブラウン運動、株価の変動など、多くの現象にランダムウォークの考え方が適用されています。

📌 GitHub & Booth

本記事のコードは、以下のリポジトリおよびBoothで無料配布しています。


ランダムウォークとは?

基本的な考え方

ランダムウォークは、以下のようなルールに基づいて進みます:

  1. ある地点からスタートします。
  2. 各ステップでランダムな方向に移動します。
  3. この動きを繰り返して軌跡を生成します。

ランダムウォークの重要性

ランダムウォークは以下の現象のモデルとして知られています:

  • 自然界の探索行動:アリや動物が資源を探す際の動き。
  • 物理学:分子のランダムな運動(ブラウン運動)。
  • 金融市場:株価の変動をモデル化。

Pythonでランダムウォークを実装する

では、Pythonを使ってランダムウォークをシミュレートしてみましょう。
本記事では、GitHub上の random_walk.py を活用し、Google Colabで実行できる Notebook 版を紹介 します。

🔗 GitHubのソースコード


実装コード

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random
from IPython.display import HTML

# ランダムウォークのアニメーション
def animate_random_walk(num_steps=100):
    x, y = [0], [0]
    fig, ax = plt.subplots(figsize=(6, 6))
    line, = ax.plot([], [], lw=2)

    def update(frame):
        dx, dy = random.choice([(1, 0), (-1, 0), (0, 1), (0, -1)])
        x.append(x[-1] + dx)
        y.append(y[-1] + dy)
        line.set_data(x, y)
        return line,

    ani = animation.FuncAnimation(fig, update, frames=num_steps, interval=100, blit=True)
    return ani

# アニメーションを表示
HTML(animate_random_walk().to_jshtml())

実行結果

(ここは作業中です)
このコードを実行すると、以下のようなアニメーションが表示されます。

ランダムウォークGIF

ランダムに方向を選択して進む様子が視覚的に確認できます。


応用例:ランダムウォークが現実で使われる場面

ランダムウォークは単なる数学的モデルではなく、以下のような現実の現象を説明するために使用されています。

1. 動物の行動学

  • 動物が食料を探す際、ランダムウォークに近い動きをすることが知られています。
  • 特にアリや鳥などの探索行動がランダムウォークでモデル化されています。

2. 金融市場

  • 株価の変動はランダムウォークとしてモデル化されることがあります。
  • これは未来の価格が過去の動きに依存しない「マルチンゲール性」という仮定に基づいています。

3. 物理学

  • 分子のブラウン運動はランダムウォークの一例です。
  • 温度が高いほど、ランダム性が増すことが観察されています。

次のステップ

ランダムウォークを理解したら、さらに以下の応用例に挑戦してみるのも面白いです。

  • 3次元ランダムウォーク: x, yに加えてz軸も考慮。
  • 障害物付きランダムウォーク: 壁や障害物を避ける動き。
  • ランダムウォークと最適化: アルゴリズムへの応用(例: メタヒューリスティクス)。

GitHubで最新情報をチェック!

このプロジェクトは今後もアップデート予定です。

フォローやスター ⭐ で応援よろしくお願いします!


注意事項

  • 読者の皆様へ
    私はまだ学びの途中にある身ですので、内容に不足や誤りがあるかもしれません。
    もしお気づきの点があれば、ぜひコメント欄でご指摘いただけると幸いです。
    この試みが、少しでも読者の皆様の学びや発見につながれば嬉しく思います。

  • 記事作成の背景
    この記事は、ChatGPTを活用して作成しました。AIの力を借りることで、効率的かつ迅速にコンテンツを生成する実験を行っています。
    記事内容は、私自身が複雑系の学びを深めるためにまとめたものであり、これを通じて知識を共有しつつ、さらなる学びを促進することを目指しています。

  • コードについて
    本記事に掲載されているコードは、Google Colab上で動作確認済みです。
    もしコードを実行する際にエラーが発生した場合は、Python環境やライブラリのバージョンに注意してみてください。
    また、コメントやフィードバックをいただければ幸いです。


🔗 関連リンク

📌 GitHub(ソースコード)
Complex-System(ランダムウォーク)

📌 Google Colab で実行
Google Colab で開く

📌 Booth で無料ダウンロード(GitHub ZIP)
Booth(無料版)

📌 Note でDOI / CIDの解説記事を公開(有料)
Note記事(準備中)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?