ولگشت#
ویدئوی جلسه
ولگشت (Random Walk) یک مدل ریاضی برای توصیف حرکت تصادفی است که در آن یک شیء در هر مرحله به صورت تصادفی در یک یا چند بعد حرکت میکند. این مفهوم در فیزیک، زیستشناسی، مالی و بسیاری از زمینههای دیگر کاربردهای گستردهای دارد. در این بخش، به بررسی اهمیت ولگشت در فیزیک و ارتباط آن با مفاهیم مهمی مانند قضیه حد مرکزی، معادلهی انتشار و درک خطاها میپردازیم.
۱. ولگشت چیست؟#
ولگشت مدلی است که حرکت تصادفی یک ذره یا شیء را توصیف میکند. در سادهترین حالت، یک ولگشت یکبعدی را در نظر بگیرید:
در هر مرحله، ذره با احتمال مساوی به چپ یا راست حرکت میکند.
پس از \( N \) مرحله، موقعیت نهایی ذره مجموع این حرکتهای تصادفی است.
در حالت کلی، ولگشت میتواند در دو یا چند بعد نیز تعریف شود. برای مثال، در دو بعد، ذره میتواند در چهار جهت (بالا، پایین، چپ، راست) حرکت کند.
۲. اهمیت ولگشت در فیزیک#
ولگشت به عنوان یک مدل ساده، درک عمیقی از پدیدههای فیزیکی پیچیده ارائه میدهد. در ادامه، به سه مفهوم مهم مرتبط با ولگشت در فیزیک میپردازیم:
۱. قضیه حد مرکزی (Central Limit Theorem)#
قضیه حد مرکزی بیان میکند که اگر تعداد زیادی متغیر تصادفی مستقل و همتوزیع داشته باشیم، توزیع مجموع آنها به توزیع نرمال (گاوسی) نزدیک میشود. ولگشت یک مثال کلاسیک از این قضیه است:
در ولگشت، هر قدم یک متغیر تصادفی مستقل است.
پس از \( N \) قدم، موقعیت نهایی ذره مجموع این قدمها است.
بر اساس قضیه حد مرکزی، توزیع موقعیت نهایی ذره به توزیع نرمال نزدیک میشود.
این موضوع در فیزیک برای تحلیل پدیدههایی مانند حرکت براونی و نویز بسیار مفید است.
۲. معادلهی انتشار (Diffusion Equation)#
ولگشت به طور مستقیم به معادلهی انتشار مرتبط است. معادلهی انتشار توصیف میکند که چگونه چگالی یک ذره یا ماده در فضا و زمان پخش میشود. ارتباط ولگشت با معادلهی انتشار به شرح زیر است:
در ولگشت، ذره به صورت تصادفی حرکت میکند و موقعیت آن در طول زمان تغییر میکند.
اگر تعداد ذرات زیاد باشد، توزیع موقعیت آنها با معادلهی انتشار توصیف میشود.
معادلهی انتشار به صورت زیر نوشته میشود:
که در آن \( \rho(x, t) \) چگالی ذرات در موقعیت \( x \) و زمان \( t \)، و \( D \) ضریب انتشار است.
این معادله در فیزیک برای توصیف پدیدههایی مانند انتشار گرما، انتشار ذرات در سیالات و نفوذ مواد استفاده میشود.
۳. درک خطاها (Understanding of Errors)#
ولگشت به درک خطاها در اندازهگیریها و محاسبات کمک میکند. در بسیاری از سیستمهای فیزیکی، خطاها به صورت تصادفی رفتار میکنند و میتوانند به عنوان یک ولگشت مدل شوند:
خطاها در اندازهگیریها میتوانند به صورت قدمهای تصادفی در نظر گرفته شوند.
با استفاده از ولگشت، میتوان توزیع خطاها و تأثیر آنها بر نتایج نهایی را تحلیل کرد.
این موضوع در آنالیز دادهها و بهینهسازی سیستمهای اندازهگیری بسیار مفید است.
۳. تاریخچهی مطالعه ولگشت#
مطالعه ولگشت به قرن نوزدهم بازمیگردد، زمانی که دانشمندان شروع به بررسی حرکت تصادفی ذرات کردند. یکی از اولین موارد ثبتشده، کارهای رابرت براون (Robert Brown) در سال ۱۸۲۷ بود:
براون، گیاهشناس اسکاتلندی، حرکت نامنظم ذرات گرده در آب را مشاهده کرد.
این پدیده، که امروزه به نام حرکت براونی (Brownian Motion) شناخته میشود، یکی از اولین نمونههای ولگشت در طبیعت بود.
توسعه ریاضی ولگشت#
در اواخر قرن نوزدهم و اوایل قرن بیستم، ریاضیدانان و فیزیکدانان شروع به فرمولبندی ریاضی ولگشت کردند:
الف) کارهای کارل پیرسون (Karl Pearson)#
در سال ۱۹۰۵، کارل پیرسون، آماردان انگلیسی، مفهوم ولگشت را به صورت ریاضی تعریف کرد.
او از ولگشت برای مدلسازی گسترش جمعیتها و بیماریها استفاده کرد.
ب) آلبرت اینشتین (Albert Einstein)#
در سال ۱۹۰۵، اینشتین در مقالهای مشهور، حرکت براونی را به صورت ریاضی توصیف کرد.
او نشان داد که حرکت براونی نتیجه برخوردهای تصادفی مولکولهای آب با ذرات گرده است.
کار اینشتین تأیید مستقیمی از وجود اتمها و مولکولها ارائه داد.
ج) ماریان اسمولوخوفسکی (Marian Smoluchowski)#
همزمان با اینشتین، اسمولوخوفسکی نیز به طور مستقل حرکت براونی را مطالعه کرد.
او معادلاتی برای توصیف رفتار آماری ذرات در حال حرکت تصادفی ارائه داد.
ولگشت در قرن بیستم#
در قرن بیستم، مطالعه ولگشت به حوزههای جدیدی گسترش یافت:
الف) نوربرت وینر (Norbert Wiener)#
وینر، ریاضیدان آمریکایی، در دهه ۱۹۲۰ فرمولبندی دقیقی از حرکت براونی ارائه داد.
او فرآیند وینر (Wiener Process) را تعریف کرد که امروزه به عنوان یکی از پایههای ریاضی ولگشت شناخته میشود.
ب) پل اردش (Paul Erdős) و مارک کاک (Mark Kac)#
در دهه ۱۹۴۰، اردش و کاک از ولگشت برای حل مسائل ترکیبیاتی و نظریه احتمالات استفاده کردند.
کار آنها به توسعه نظریههای پیشرفتهتر در ریاضیات منجر شد.
ج) ولگشت در مالی#
در دهه ۱۹۷۰، ولگشت به عنوان مدلی برای تحلیل بازارهای مالی مورد استفاده قرار گرفت.
نظریهی بازار کارا (Efficient Market Hypothesis) از مفاهیم ولگشت برای توصیف رفتار تصادفی قیمتها استفاده کرد.
ولگشت در فیزیک مدرن#
در فیزیک مدرن، ولگشت به عنوان یک ابزار قدرتمند برای مطالعه سیستمهای پیچیده استفاده میشود:
الف) فیزیک آماری#
ولگشت برای مدلسازی رفتار ذرات در سیستمهای آماری مانند گازها و مایعات استفاده میشود.
این مفهوم به درک پدیدههایی مانند انتشار (Diffusion) و رسانش گرمایی (Thermal Conduction) کمک میکند.
ب) فیزیک ماده چگال#
در سیستمهای ماده چگال، ولگشت برای توصیف حرکت الکترونها و فونونها استفاده میشود.
این موضوع در طراحی مواد جدید و نانوذرات اهمیت زیادی دارد.
ج) بیوفیزیک#
ولگشت در مطالعه حرکت مولکولها در سلولها و فرآیندهای زیستی مانند انتشار پروتئینها و حرکت باکتریها استفاده میشود.
محاسبات توزیع مکان نهایی ولگشت#
در یک ولگشت یکبعدی، ذره در هر قدم با احتمال \( p \) به راست و با احتمال \( q = 1 - p \) به چپ حرکت میکند. اگر \( N \) قدم بردارد، مکان نهایی ذره را میتوان با استفاده از توزیع دو جملهای مدلسازی کرد. در این بخش، میانگین و انحراف معیار مکان نهایی ذره را برای حالت کلی \( p \) محاسبه میکنیم.
۱. مدلسازی ولگشت با توزیع دو جملهای#
فرض کنید:
ذره در هر قدم با احتمال \( p \) به راست و با احتمال \( q = 1 - p \) به چپ حرکت کند.
اگر ذره \( k \) بار به راست و \( N - k \) بار به چپ حرکت کند، مکان نهایی ذره به صورت زیر است:
که در آن \( k \) تعداد قدمهای به راست است.
از آنجا که \( k \) از توزیع دو جملهای پیروی میکند، داریم:
۲. محاسبه میانگین مکان نهایی#
میانگین تعداد قدمهای به راست (\( k \)) در توزیع دو جملهای به صورت زیر است:
حال، میانگین مکان نهایی (\( X \)) را محاسبه میکنیم:
بنابراین، میانگین مکان نهایی ذره پس از \( N \) قدم به صورت زیر است:
۳. محاسبه واریانس مکان نهایی#
واریانس تعداد قدمهای به راست (\( k \)) در توزیع دو جملهای به صورت زیر است:
که در آن \( q = 1 - p \).
حال، واریانس مکان نهایی (\( X \)) را محاسبه میکنیم:
بنابراین، واریانس مکان نهایی ذره پس از \( N \) قدم به صورت زیر است:
۴. محاسبه انحراف معیار مکان نهایی#
انحراف معیار مکان نهایی (\( X \)) به صورت زیر محاسبه میشود:
۵. جمعبندی#
میانگین مکان نهایی: $\( E[X] = N(2p - 1) \)$
واریانس مکان نهایی:
\[ \text{Var}(X) = 4N p q \]انحراف معیار مکان نهایی:
\[ \sigma_X = 2 \sqrt{N p q} \]
تفسیر نتایج:#
میانگین مکان نهایی: اگر \( p > \frac{1}{2} \) باشد، میانگین مکان نهایی مثبت است (ذره به سمت راست حرکت میکند). اگر \( p < \frac{1}{2} \) باشد، میانگین مکان نهایی منفی است (ذره به سمت چپ حرکت میکند). اگر \( p = \frac{1}{2} \) باشد، میانگین مکان نهایی صفر است.
انحراف معیار: انحراف معیار مکان نهایی با \( \sqrt{N} \) افزایش مییابد و به \( p \) و \( q \) وابسته است. هرچه \( p \) به \( \frac{1}{2} \) نزدیکتر باشد، انحراف معیار بزرگتر میشود.
پیاده سازی#
در ابتدا مسئلهی ولگشت با یک تابع به صورت کامل حل شده و سپس به وسیلهی
numpy
با یک روش سریعتر مدل سازی کردهایم.
سپس تابعیت میانگین و انحراف از معیار با تعداد قدمها و پارامترهای دیگر مطالعه شدهاند.
import numpy as np
import matplotlib.pyplot as plt
p = 0.5 # احتمال رفتن به سمت راست
q = 1.0 - p # احتمال رفتن به سمت چپ
l = 1 # طول یک قدم
N = 10000 # تعداد قدمها
پیاده سازی با استفاده از آرایه#
from tqdm.notebook import tqdm # نمایش نوار پیشرفت
# پیاده سازی ساده
import random
allXs = []
for person in tqdm( range(1000) , desc='ولگردها' , position=0): # تعداد ولگردها
x0 = 0 # موقعیت اولیه
for s in range(N): # تعداد قدمها
r = random.random() > p # انتخاب یک عدد تصادفی بین 0 و 1
if r:
x0 += l # اگر عدد بزرگتر از p بود به سمت راست حرکت کن
else:
x0 -= l # در غیر این صورت به سمت چپ حرکت کن
allXs.append( x0 ) # ذخیره موقعیت نهایی
hist , bins =np.histogram( allXs , 28 , ( min(allXs) , max(allXs)) )
binCenters = []
for i in range( len(hist) ):
binCenters.append( (bins[i]+bins[i+1]) / 2 )
plt.bar( binCenters , hist )
<BarContainer object of 28 artists>
پیاده سازی با استفاده از کتابخانهی numpy#
#2nd approach, using numpy
def RandomWalk1D( nSteps , nTrials):
allRandoms = np.random.uniform( 0 , 1 , (nTrials , nSteps) ) # a random array for all the steps of all random walks
newRandoms = allRandoms < p # a boolean array for all the steps of all random walks that shows if the person goes to the right or not
finalRandoms = (2*l)*( newRandoms - 0.5 ) # it is important to note that 2*(true-0.5) is equal to 1 and 2*(false-0.5) is equal to -1
allNewxs = np.sum( finalRandoms , 1 ) # sum of all the steps for each random walk
return np.average( allNewxs ) , np.std( allNewxs ) # return the average and standard deviation of the final positions
# در این قسمت با فراخوانی تابع تعریف شده در قسمت بالا، میخواهیم تابعیت متوسط و انجراف معیار با تعداد قدمها را بررسی کنیم
steps = []
avgs = []
stds = []
for nSteps in tqdm( range(1000 , 100000 , 10000) , desc='steps'): # تعداد قدمها
steps.append( nSteps )
a , s = RandomWalk1D( nSteps , 1000)
avgs.append( a )
stds.append( s )
fig, axs = plt.subplots(2)
axs[0].scatter(steps,avgs,color='k' )
axs[0].set_title='Average'
axs[1].scatter(steps,stds,color='g')
axs[1].set_title='Standard Deviation'
plt.show()