همهی ما قطعا بارها کلمهی احتمال را شنیدهایم و به گوشمون خورده. توی کتابهای درسی هم در خیلی از سرفصلها به خصوص درس جبر و احتمال با مبانی و تئوری آمار و احتمال آشنا شدیم. ولی الان میخوایم یک قدم فراتر بریم و کمی افق دیدمون رو از مسائل کلیشهای که قبلا تو کتابهامون دیدیم فراتر ببریم. بنا داریم به یکی از مهمترین نتایجی که از دل نظریهی آمار و احتمال بیرون میاد بپردازیم و این نتیجه چیزی نیست جز قضیهی حد مرکزی یا همون Central Limit Theorem.
شاید به گوشتون خورده باشه که تابع توزیع بعضی از فرآیندهایی که در طبیعت رخ میدهد نرمال یا گاوسی هست و حالا ما میخواهیم ببینیم چرا و چگونه؟!
خب قبل از هر چیز ببینیم چرا به این قضیه میگن حد مرکزی. در دایرهی آمار، اطلاعات و احتمالات نقش مرکز رو داره و بسیاری از محاسبات بر اساس این قضیه انجام میشه. از طرفی صورت مجانبی داره و برای حد نمونههای بزرگ درست هست و خیلی خوب کار میکنه. از همین رو و به خاطر این دو دلیل میشه حد مرکزی.
اولین اطلاعاتی که ما میتونیم از یک فرآیند که مجموعهای از متغیرها در اون وجود دارند بدست آوریم از تابع توزیع اون فرآیند بدست میاد. مثلا تابع توزیع احتمال بیانگر احتمال هر کدوم از متغیرهای تصادفی و یا احتمال قرار گرفتن هر متغیر در یک بازهی معلوم هست که اولی برای متغیرهای گسسته و دومی برای متغیرهای پیوسته تعریف میشود.
صورت قضیه : تابع توزیع متغیر تصادفی که خودش از جمع $n$ تا متغیر تصادفی دیگه که دارای تابع توزیع $p(x)$ و واریانس محدود $\sigma_{i}$هستند، به سمت تابع توزیع گاوسی میل میکند.
یعنی متوسط گیری در تعداد زیاد (نگاه آماری ما به مساله) به سمت توزیع گاوسی متمایل میشه. بدون اینکه مهم باشه مجموعههای تصادفی تشکیل دهنده، خود دارای چه تابع توزیعی هستند. پس یک نکتهی خیلی خوب و مفید اینه که بدون داشتن اطلاعات اولیه میشه تا حد خوبی تابع توزیع رو روی جمع متغیرهای تصادفی تعیین کرد. حتی اگر متغیرهای اولیهی ما خودشون هم دارای تابع توزیع مشخصی باشند، متوسط گیری روی اونها به سمت تابع توزیع گاوسی متمایل میشه، با اینکه مستقل از هم اندازهگیری میشوند.
یکی از مثالهای ملموس در این زمینه :
زمانی که یک لودر خاکی را در یک پروژهی عمرانی جابجا میکند و در یک نقطه تخلیه میکند، انتظار داریم خاکهای ریخته شده شبیه یک تپه شود. یک تل از خاک شبیه یک تابع توزیع گاوسی دو بعدی است. هر فرآيندی که در طبیعت رخ میدهد، به شرطی که انحراف از معیار اون واگرا نباشد و عامل خارجی هم تصادفی بودن توزیع رو بهم نزنه، در نهایت توزیع به سمت تابع توزیع گاوسی میل میکند.
عکس زیرنمونهای از تابع توزیع گاوسی یا همان نمودار زنگولهای رو نشان میدهند.($\mu$ مقدار متوسط است)
توی این شکل هم میتوان به نوعی تجمع دادهها در زیر نمودار تابع توزیع نرمال مشاهده کرد که نشوندهندهی تجمع دادهها حول مقدارمتوسط هست.
برای مطالعهی بیشتر در مورد این قضیه و همچنین آشنایی بیشتر با مبانی آمار و احتمال میتونید سری به منابع زیر بزنید:
Feller, W. “The Fundamental Limit Theorems in Probability.” Bull. Amer. Math. Soc.51, 800-832, 194
Feller, W. An Introduction to Probability Theory and Its Applications, Vol. 1, 3rd ed. New York: Wiley, p. 229, 1968
Spiegel, M. R. Theory and Problems of Probability and Statistics. New York: McGraw-Hill, pp. 112-113, 1992
Zabell, S. L. “Alan Turing and the Central Limit Theorem.” Amer. Math. Monthly102, 483-494, 1995
Trotter, H. F. “An Elementary Proof of the Central Limit Theorem.” Arch. Math.10, 226-234, 1959
در پست قبل در مورد بالانس تئوری یا نظریه توازن صحبت کردیم و نشون دادیم که به کمک یک مدل ساده و ابتدایی میتونیم به جوامع، متناسب با نوع رابطهی اعضا با همدیگه، انرژی نسبت بدیم و مقدار این انرژی به ما میگه که جامعه مد نظر در چه وضعیتی از توازن قرار داره.
بنابر بهنجارش، اگر انرژی جامعه ۱- بهدست بیاد، جامعه کاملا متوازن یا بالانس هست که این در صورتی رخ میده که همه اعضای جامعه دوست همدیگه باشند و یا اینکه جامعه دو قطبی بشه، یعنی جامعه به دو زیر مجموعه تقسیم بشه به نحوی که درون زیرمجوعهها اعضا دوست باشند اما هر عضوی از این زیرمجوعه با اعضای زیرمجوعهی مقابل دشمن باشه. همینطور اگر انرژی جامعه بیشتر از ۱- بهدست بیاد یعنی جامعه نامتوازن هست و هر چقدر که انرژی به ۱+ (کران بالای انرژی بنابر بهنجارش) نزدیکتر باشه جامعه نامتوازنتر هست که به معنی وجود امکان نزاع و درگیری در بین اعضاست.
طی این پست میخوایم ببینیم اگر به یک جامعه با شرایط اولیه مشخص (جمعیت و انرژی اولیه)، عضو جدیدی وارد بشه چه اتفاقی میافته. اما قبل از اون اجازه بدید که مدل باراباشی-آلبرت رو معرفی کنیم.
به عنوان مثال در بین تمام سایتها گوگل، ویکیپدیا و فیسبوک بیشترین بازدیدکنندهها و پیوندها رو دارند یا مثلا در جامعهی ما، محمدرضا شجریان، حسین علیزاده و کیهان کلهر جزو برجستهترین هنرمندان موسیقی سنتی هستند، در مقایسه با جمعیت هنرمندان موسیقی، این افراد تعدادشون کمه. با اینوجود شهرت و محبوبیشون از همه هنرمندان بیشتره. این شبکهها، شبکههای بیمقیاس (scale-free) هستند به این معنی که توزیع درجه در این شبکهها با تقریب خوبی از یک الگوی قانونتوانی(power law) پیروی میکنه. این چندتا جملهی سخت که گفتم یعنی اینکه وقتی ما این شبکهها رو با یک گراف نمایش میدیم، درجه رئوس متناسب با وارون فراوانی(تعداد) اون رئوس هست . یعنی هرچی راسی درجهش بیشتر باشه (تعداد یالهای بیشتری بهش متصل بشند) فراوانیش کمتره و هر چقدر درجه راسی کمتر باشه فراوانیش بیشتره! همونجوری که تعداد سایتهایی مثل گوگل تعدادشون خیلی کمه، چون درجهشون زیاده.
کار آلبرت باراباشی و رکا آلبرت معرفی الگوریتمی بود که قادره چنین شبکههایی رو مدلسازی کنه. این الگوریتم صرفنظر از تصادفی بودن باید گرافی رو تولید کنه که توزیع درجه رئوسش قانونتوانی باشه. برای همین اساس این مدل دو چیزه:
۱) رشد: در طی زمان رئوس جدیدی به شبکه اضافه میشند.
۲) اتصال ترجیحی:رئوس جدید ترجیح میدند به رئوسی وصل بشند که درجهی بالاتری دارند.
برای همین این الگوریتم ابتدا یک شبکه متصل (همبند) با راس ایجاد میکنه. بعد از اون، در هر مرحله، راسی اضافه میشه و به راس قبلی وصل میشه. این m راس بر اساس درجهشون انتخاب میشند: یعنی احتمال اینکه راس جدید به iامین راس موجود درگراف وصل بشه برابره با نسبت درجه راس iام به مجموع درجات کل رئوس. این سبب میشه که «هاب» در شبکه بهوجود بیاد. هابها رئوسی هستند که درجه شون از بقیه رئوس شبکه بیشتره. (صفحه شجریان در اینستاگرام یک هاب به حساب میاد در بین خوانندهها همونجوری که گوگل یک هابه در بین سایتها!). يادتون باشه که در مدل باراباشی-آلبرت وزن هر یال ۱ است!
این اولین پستیه که قراره در مورد چیزایی حرف بزنم که کسی در موردش زیاد نشنیده و نخونده. یک موضوع جدید و در حال توسعه که به نظرم به شدت جذابه. خب یک سری مشکلات هست توی این پست از جمله اینکه خیلی از عبارتها رو «من» ترجمه کردم و هنوز ترجمهی رسمی براشون ارائه نشده و یا اینکه لااقل هنوز عرف نشدند. ممکنه یک سری ایراد علمی هم وارد بشه که در آینده تصحیحشون میکنم. موضوع این پست Balance Theory هست، اما از اونجایی که اگر «نظریه تعادل» ترجمه بشه خیلیها ممکنه در نگاه اول یاد تعادل نش یا نظریه تعادل عمومی بیفتند من به جای واژهی «تعادل» از واژهی «توازن» استفاده میکنم تا اطلاع ثانوی! درضمن مدلی که در ادامه مطرح میشه یک مدل ساده و ابتدایی هست، بنابراین احتمالا بعضی از سوالهای شما رو در حوزهی علوم اجتماعی و/یا علوم سیاسی بیجواب میذاره!
خیلی خب، سه نفر رو فرض کنید که میتونند دوست یا دشمن همدیگه باشند. همینطور دوستی و دشمنی رو متقابل فرض کنید، یعنی اگر کسی رو دوست دارید، اونم شما رو دوست داره. حالا اگر این سه نفر دوست هم باشند، اون موقع همه چیز خوبه و تنشی پیش نمیاد؛ دوست دوست شما، دوست شماست! اصطلاحا میگیم این مجموعه سه نفری در توازن قرار داره و یا اینکه متوازن -balanced- هست. اما اگر از بین این سه نفر دو نفر رابطهی خوبی با همدیگه نداشته باشند اونموقع ممکنه تنش پیش بیاد. به عنوان مثال فرض کنید که شما، همسرتون و مادرتون رو دوست دارید با این وجود، متاسفانه، مادرتون و همسرتون رابطهی خوبی با همدیگه ندارند.
اجازه بدید ،از این به بعد، به خاطر راحتی بیشتر از واژههای دقیق «دوست» و «دشمن» برای نوع روابط استفاده کنیم و دوستی رو کاملا ۱+ و یا ۱- فرض کنیم. بنابراین شما و همسرتون دوست، شما و مادرتون دوست ولی همسر شما و مادر شما دشمن همدیگه هستند. اینجا توازن از بین میره، به عنوان مثال کافیه شما هدیهای برای مادرتون بخرید، در این صورت همسرتون شاکی میشه و مجبورید شب رو توی کوچه بخوابید! حالا فرض کنید که شما و آرش، همزمان از یکی از همکار/همکلاسیهاتون به اسم احسان متنفرید. خب طبق یه قاعدهی قدیمی، داشتن دشمن مشترک دوستی میاره و یا اینکه دشمن دشمن شما، دوست شماست. آرش دشمن احسان و احسان دشمن شماست پس طبق این قاعده شما و آرش دوست هستید. این مجموعه هم متوازنه. حالت دیگه که ممکنه پیش بیاد این هست که شما، میثم و سهیل هر سه دشمن همدیگه باشید، خب به وضوح مشخصه که این مجموعه نامتوازن هست؛ هر لحظه ممکنه کسی علیه کسی شورش کنه!
تا اینجا چارچوب بحث ما در مورد توازن مشخص شد. جذابیت این موضوع برای ما دانشمندان (!) زمانی شروع میشه که به فکر مدلسازی این چارچوب باشیم. ایدهی اصلی این کار توسط هایدر (۱۹۵۸) مطرح شد. مثلثی فرض کنید که هر راسش یکی از سه نفر بالا باشه و ضلعی که هر دو راس رو بهم متصل میکنه رو به عنوان رابطه اون دو راس(نفر) در نظر بگیرید. اگر دو نفر دوست هم باشند، به ضلعی که دو راس متناظر با اون دو نفر رو متصل میکنه، ۱+ نسبت میدیم و اگر دو نفر دشمن هم باشند به ضلع متصل کننده ۱-.
اجازه بدید از نظریهی گراف کمک بگیریم. مطابق شکل ما یک گراف کامل با ۳ راس و ۳ یال داریم که رئوس، نمایندهی اعضای مجموعه و یالها تعیین کننده نوع رابطه (دوستی یا دشمنی) بین رئوس هستند. با توجه به چارچوب بالا اگر تعداد یالهای منفی که با خط چین توی شکل زیر مشخص شدهند فرد باشند (یکی یا سهتا) اونموقع گراف ما و یا شبکه ما نامتوازن -unbalanced- خواهد شد.
بنابراین مدلی که به عنوان یک «شبکه اجتماعی» برای توصیف روابط بین انسانها و متوازن بودنشون مطرح میکنیم این جوری ساخته میشه:
با توجه به افراد،سازمانها، کشورها و هرچیزی که روابط دوستی یا دشمنی دارند ما یک گراف کامل از مرتبه تعداد اعضا مشخص میکنیم. گراف کامل هست چون که فرض بر اینه که همهی اعضا همدیگه رو میشناسند و رابطه دارند. به عنوان مثال به کشورهای عضو سازمان ملل فکر کنید که یا از هم خوششون میاد یا از هم بدشون میاد!
هر یال یا مثبته و یا منفی. هیچ حالت بینابینی وجود نداره.
یک مثلث متوازن (balanced) است اگر و تنها اگر حاصلضرب علامت یالهای آن مثبت باشه. (اگر تعداد یالهای منفی فرد باشه: (-,-,- یا -,+,+) اونموقع گراف ما و یا شبکه ما نامتوازن خواهد شد.)
خب حالا فرض کنید که ما یک شبکهی مشخص از اعضا و روابطشون داریم:
آیا میتونیم بگیم که اوضاع این شبکه چقدر متوزانه؟
آیا میتونیم با در نظر گرفتن شبکهی کشورهای دنیا و روابطشون بگیم آیا ممکنه بین دو کشور صلح برقرار بشه؟ یا اگه بین دو کشور صلح برقرار شد، اون موقع این صلح موضعی (منطقهای) چه اثراتی روی صلح جهانی داره؟ به عبارت دیگه اگه علامت یالی رو در یک شبکه عوض کنیم (رابطهی دو نفر رو از دوستی به دشمنی و یا عکس تبدیل کنیم) اون موقع میشه فهمید برای کل شبکه چه اتفاقی میافته؟
آیا میتونیم پیشبینی کنیم در چه شرایطی ممکنه بین هوادارهای دو تیم ورزشی توی ورزشگاه آزادی درگیری و نزاع پیش میاد؟
بله، با تقریب خوبی میتونیم همه اینکارها رو به لطف نظریهی توازن و یا بالانس تئوری انجام بدیم.
اجازه بدید کمی عمیقتر بشیم. خیلی راحت اثبات میشه که فقط دو راه برای یک شبکه بزرگ وجود داره که متوازن بشه، یا همه دوست هم بشند (جامعه بهشت بشه!) و یا اینکه شبکه قطبیده بشه، به این معنی که شبکه به دو بلوک تقسیم بشه جوری که داخل هر بلوک اعضا، دوست همدیگه حساب میشند و اعضای بلوک مقابل دشمن! درست مثل زمانی که دنیا به دو بلوک شرق و غرب تقسیم شده بود؛ یه سری این ور دوست هم بودند، یه سری هم اونور، بعد اینوریها نمیخواستند سر به تن اونوریها باشه!
خب پس وقتی ما یک شبکه داریم که در یکی از این دو حالت نیست یعنی متوازن یا بالانس نیست. سوال مهم اینه که خب اگر بخواهیم که شبکه رو بالانس یا متوازن کنیم چه کار باید انجام بدیم؟ یک راه پیشنهادی این هست که یک یال رو به صورت تصادفی انتخاب کنیم و علامتش رو عوض کنیم و بعدش ببینیم برای سیستم چه اتفاقی میافته. به عبارت دیگه اگر بعد از عوض کردن اون یال، تعداد مثلثهای متوازن در کل شبکه زیاد بشه یعنی اینکه ما تونستیم شبکه رو به یک حالت متوازنتر هدایت کنیم، ولی اگر با عوض کردن علامت یالی تعداد مثلثهای متوازن شبکه کم بشه یعنی عدمتوازن رو توی شبکه بالا بردیم.
از اونجایی که ما فیزیکپیشه هستیم، اجازه بدید با رویکرد انرژی به قضیه نگاه کنیم؛ با توجه به پیشفرضهای ما، انرژی شبکه باید متناسب باشه با تعداد مثلثهای نامتوازن منهای تعداد مثلثهای متوازن موجود درشبکه:
n تعداد کل رئوس است و به خاطر بهنجارش (Normalization) تفاضل انرژیها رو بر تعداد کل مثلثهای شبکه تقسیم کردیم تا انرژی هنجار به واحد بشه! بنابراین بیشترین مقدار انرژی ۱ و کمترین مقدار ۱- خواهد شد. وجود منفی هم به این خاطر هست که هرچی انرژی کمتر باشه (منفیتر) سیستم متوازنتره. خب بیاید با استفاده از این رابطه نمودار انرژی رو برای دو تا شبکهی کوچیک، یکی با ۳ راس و دیگری با ۴ راس بکشیم:
نمودار A انرژی یک شبکه یا ۳ راس رو نشون میده که سادهترین شبکه برای بررسی هست. بنابراین انرژی شبکه یا ۱ (نامتوزان) و یا ۱- (متوازن) هست. عددی که بالای هر مثلث نوشته شده فراوانی هر کدوم هست (مثلا اینکه یک یال خطچین باشه سه حالت داره، بدیهیه!)
نمودار B انرژی یک شبکهی با ۴ راس رو نشون میده. خب توی این شبکه علاوه بر حالات قبل، انرژی صفر هم مشاهده میشه. طبیعیه که ما توی این شبکه میتونیم از بالا به پایین بیایم و شبکه رو متوازن کنیم. برای این کار کافیه علامت یکی از یالها رو عوض کنیم و به وضعیت پایدارتر برسیم. خب این سوال مطرح میشه که:
آیا توی هر شبکهای ممکنه با عوض کردن علامت یک یال، به یک شبکهی متوازنتر رسید؟
متاسفانه در مورد شبکههای بزرگ(تعداد راس بیشتر) حالتهایی در سیستم وجود داره که به Jammed States و یا به قول استیون استروگاتز Strict Jammed States معروف هستند. این حالتها چیزی نیستند جزو کمینههای نسبی انرژی. به این معنی که انرژی اینحالتها از تمام حالتهای ممکن که با تغییر علامت یک یال در دسترس هستند، کمتر هست. بنابراین در حالتهای jammed یا مسدود، امکان اینکه تنها با تعویض علامت یک یال به یک حالت متوازنتر رفت، وجود نداره. به عبارت دیگه انرژی حالتهای مسدود کوچکتر یا مساوی انرژی حالتهای مجاور هست.
نکتهای که وجود داره اینه که حالتهای مسدود نمیتونند هر مقدار انرژی اختیار کنند. در حقیقت اینحالتها حداکثر میتونند انرژی صفر داشته باشند (کران بالای انرژی حالتهای مسدود صفر است). اثبات این موضوع خیلی سرراسته: هر یالی در یک حالت مسدود متعلق به مثلثهای متوازنی هست که تعدادشون برابر با تعداد مثلثهای نامتوازنه، چون در غیر این صورت علامت اون یال باید عوض بشه که این در تناقض با تعریف حالت مسدوده! بنابراین در شبکههای نسبتا بزرگ حالتهای مسدودی وجود که انرژی این حالتها حداکثر صفر هست.
ویژگی جالبی در مورد حالتهای مسدود با انرژی صفر وجود داره؛ یالهای مثبت در این حالتها عضو یالهای گراف Paley هستند. گراف Paley گرافی هست که تعداد رئوسش (q) یک عدد اول به شکل q=4k+1 هست. هر دو راس در این گراف درصورتی وصل هستند که تفاضل شماره اون دو راس یک عدد مربع کامل باشه به پیمانهی q. این گرافها خیلی خوشگل هستند و قیافهی متقارنی دارند. میتونید تعدادی از این گرافها رو اینجا ببینید.
اگر دوست دارید به یک حالت مسدود با انرژی U=0 برسید:
به یالهایی از شبکه که عضو گراف Paley هستند «+» نسبت دهید.به سایر یالها (یالهایی که عضو شبکه (گراف کامل) هستند ولی عضو گراف Paley نیستند) «-» نسبت دهید.
یک راس جدید به شبکه اضافه کنید (وسط شبکه!). هم اکنون شبکه شما q+1 راس دارد.
راس جدید را به q راس قبلی وصل کنید و به یالهای بین این راس و سایر رئوس «-» نسبت دهید.
با این روش شما میتونید یک حالت مسدود با انرژی صفر بسازید که q+1 راس داره.
یادمه زمانی بچههایی که میخواستند برند رشتهی هنر (دوم دبیرستان زمان ما، نظام یکمی قدیم!) معمولا از طرف خانواده نهی میشدند، چون که رشته ریاضی-فیزیک و علوم تجربی گزینههای نزدیکتری هستند برای «یه چیزی شدن» تا هنر. خونوادهها و مدارس کاملا مزدورانه سعی میکردند دانشآموز بیچاره رو متقاعد کنند که وارد رشتههای ریاضی و تجربی بشه چون که آینده بهتری در انتظارش خواهد بود! توجیه اکثر خونوادهها هم این بود: «درسته که به موسیقی علاقهداری ولی برای اینکه بتونی کار گیر بیاری بهتره بری درس مهندسی بخونی (مثلا!) و اینکه تو میتونی در کنار ریاضی و فیزیک خوندن (توی مدرسه و بعد دانشگاه) ، موسیقی هم یاد بگیری ولی نمیتونی بری رشتهی هنر و بعد در کنارش ریاضی یا فیزیک یاد بگیری که!» مسئله این بود که انگار با رفتن به موسسهای که موسیقی تدریس میکرد، یادگیری موسیقی امکانپذیر بود در حالی که خارج از محیط مدرسه و دانشگاه یادگیری ریاضی و فیزیک خیر. به نظر من این توجیهها یکی از بدترین انتقامهایی بود که نظام آموزشی بیمار ما از علم گرفت. امیدوارم این طرز تفکر امروز از بین رفته باشه چون که امروز واقعا میشه دانشگاه نرفت ولی ریاضی و فیزیک یادگرفت!
توی این پست قصد دارم نشون بدم که تمام دروسی که یک دانشجوی کارشناسی فیزیک میگذرونه رو بدون رفتن به دانشگاه میشه گذروند، حتی با کیفیت بالاتر! امروز با وجودآموزش آنلایناین امکان هست که شما توی خونتون، زیر کولر و با بیژامه بشیند و مکانیک کوانتومی یا الکترومغناطیس یادبگیرید، اون هم از بهترین اساتید بهترین دانشگاههای دنیا!
دروس دانشجوهای فیزیک به سه دستهی: ۱) دروس پایه ۲) دروس تخصصی ۳) دروس انتخابی تقسیم میشند که من سعی میکنم تا اونجایی که یادم هست لینک کورس(دوره)هایی که مرتبط با هر درس هست رو بذارم.
در ضمن، ممکنه من یکسری از درسها و کورسها رو از قلم انداخته باشم. شما به راحتی میتونید با جستجو(سرچ) هر چیزی رو که بخواید پیدا کنید. راستی ;کورسهای آموزشی موسسه پریمیتر رو از دست ندید! همینطور به لینکهای پیشنهادی سر بزنید.
سوالی که ممکنه براتون مطرح بشه اینه که: پس واقعا دانشگاه رفتن وقت آدم رو تلف میکنه؟ یا مثلا نریم دانشگاه دیگه؟ یا دانشگاه رفتنمون اشتباه بود؟
جواب این سوال منفیه! دانشگاه فقط محل ارائهی یک سری درس نیست! دانشگاهها پایه و اساس پژوهش هستند و نه صرفا محل برگزاری یکسری کلاس! دانشگاه محل اجتماعات علمی و تحقیقاتی هست و به هیچ وجه نباید در دانشگاه رو بست! در ضمن شما توی دانشگاه با انسانهای متفاوتی تعامل میکنید، انسانهایی که در بین وفور و پراکندگی منابع و راههای موجود برای رسیدن به سطح خوبی از علم میتونند شما رو راهنمایی و هدایت کنند. در حقیقت اینکه شما فقط انسان باهوشی باشید و یا اینکه مطالعهی زیادی داشته باشید، کافی نیست. شاید در مقاطع اولیه تحصیل این قضیه زیاد خودش رو نشون نده ولی زمانی که پای پژوهش به میون بیاد اون موقع هدایت علمی مناسب خودش رو به خوبی نشون میده. مهمترین تفاوت دانشگاهها و موسسات علمی تراز اول جهان با بقیه جاها در نوع کلاسهاشون و ساختمونهاشون نیست، بلکه وجود افراد به معنی واقعی متخصص هست که وظیفهی هدایت علمی رو درست ایفا میکنند. این بحث خیلی مفصلیه، امیدوارم بشه طی چندتا پادکست توی رادیوفیزیکبهش پرداخت.
در پایان، از همهی دوستانم توی سایر رشتهها درخواست میکنم که این لیست رو در مورد رشتهی خودشون منتشر کنند.
سالها بود که بشر به بسیاری از معادلات سخت ریاضی و ارتباط تنگاتنگشان با علومی مانند فیزیک رسیده بود. اما نکته خیلی مهمی وجود داشت و آن انجام این محاسبات و کشف و بررسی پدیدههای طبیعی مرتبط با آنها بود. در بسیاری از موارد، انجام یک عملیات ساده ریاضیاتی ساعتها و حتی روزها از دانشمندان وقت میگرفت و زمان مهمترین مساله به حساب میآمد. انسان آن روزها به این فکر افتاد که چگونه میتواند این حجم وسیع از محاسبات را در زمان کمتر انجام دهد! و از همان روزها، اولین جرقه براي ساخت وسیلهای که بعدا به آن کامپیوتر گفتند زده شد. در سال 1937 میلادي اولین نسل از رایانهها ساخته شد. البته قبل از این سال هم تلاشهای موفقی در زمینهی ساخت دستگاههای محاسباتی انجام شده بود. شاید کسی در آن زمان فکرش را نمیکرد رایانهها تا حد امروزی بتوانند پیشرفت کنند. طوری که امروزه نمیتوانیم نقش اساسی آن را در زندگی در نظر نگیریم. اما اگر از آن دوران بگذریم و برسیم به زمان خودمان، میبینیم بهطور تخصصی در زمینه فیزیک، کامپیوترها نقش و جایگاه ویژهای پیدا کردهاند که روز به روز در حال پررنگتر شدن میباشد. شبیه سازیهای گستردهای که در فیزیک انجام میشود، محاسبات فیزیکی، طراحی آزمایشهای متنوع فیزیکی و . . . نمونههای کوچکی از کاربردهای کامپیوتر در فیزیک به حساب میآید.
قصد دارم طی چند پست از کاربردهای مختلف کامپیوتر در فیزیک صحبت کنم و نمونههایی از شبیه سازیها، تحلیل دادهها و کمی هم پردازش تصویرهای انجام شده در فیزیک را مورد بررسی قرار دهم.
براي برنامهنویسی چهکار کنیم؟
خب با زبانهای مختلفی میتوانیم برنامهمان را بنویسیم. در اینجا براي نمونه از دو زبان برنامه نویسی استفاده میکنیم : ++C و Python و برنامههایمان را با هر دو زبان مینویسیم. البته هرجا که نیاز باشد از نرمافزارهای دیگر هم حتما استفاده میکنیم تا با طیف گستردهتری از برنامههای کاربردی آشنا شویم. درواقع ++c که پیشرفته شده زبان c هست، یک زبان همه منظوره است که امکان برنامه نویسی شئگرا جزو ویژگیهای اصلی آن به حساب میآید و یک زبان برنامه نویسی با سطح میانی به حساب میآید. براي نوشتن کدها به زبان ++C میتوان از نرم افزار هاي مختلفی استفاده کرد. در سیستم عامل ویندوز نرم افزارهایی مثل ++Code Blocks، Dev C و Visual studio را شاید بتوان به عنوان ساده ترین و پرکاربردترین نرمافزارهای برنامه نویسی به زبان سی پلاس پلاس معرفی کرد. در توزیعهای گنو/لینوکس به سادگی میتوان کدهای مورد نظر را در هر نرمافزار ویرایشگر متنی مانند gedit (در دسکتاپ گنوم) نوشت و در ترمینال اجرا کرد. (یا مثلا اینکه از نرم افزار geany استفاده کرد). اما در مورد پایتون باید گفت یکی از ساده ترین، پرکاربردترین و محبوبترین زبانهای برنامهنویسی به حساب میآید. دارای محیطی بسیار ساده و دلنشین است که ارتباط برقرار کردن با آن بسیار راحت میباشد. برای اطلاعات بیشتر بهوبسایت پایتونرجوع بفرمایید.
برویم سراغ یکی از سادهترین و تقریبا مهمترین مباحث موجود در فیزیک: حل معادله دیفرانسیل. در بسیاری از مسائل فیزیکی(کلاسیک و غیرکلاسیک)، به یک معادله دیفرانسیل برخورد میکنیم. اگر سري به کتابهای آموزشی معادلات دیفرانسیل بزنید، راههای تحلیلی زیادی براي حل این معادلات پیدا خواهید کرد. از راه حلهای ساده گرفته تا راههای پیچیده و دشوار. در اینجا میخواهیم به معرفی روشهایی که بتوان بهسادگی بسیاری از معادلات دیفرانسیل را به صورت عددی (با کامپیوتر و برنامه نویسی) حل کرد، بپردازیم. در ضمن نکته بسیار مهمی که باید ذکر کنیم این است که بسیاری از معادلههای دیفرانسیل جواب تحلیلی ندارند! و استفاده از روشهای عددی تنها راه حل به حساب میآید.
روش حل عددی چیست!؟
در روشهای عددی مساله را بجای اینکه پیوسته در نظر بگیریم(مانند حل تحلیلی)، گسسته فرض میکنیم سپس در بازههای زمانی کوچک جواب مساله را به دست میآوریم و مساله را با تقریب زدن ساده ترش میکنیم. اینکار را بارها تکرار میکنیم تا به جواب مورد نظرمان برسیم. براي انواع معادلات دیفرانسیل، انواع روشهای عددی وجود دارد مثل :روش اویلر ، روش اویلر-کرامر، روش هون ، روش تیلور،روش رانگ-کوتا ، روش آدامز-بشفورت-مولتون و … .
با یک مثال ساده فیزیکی شروع کنیم:
می خواهیم نیمه عمر یک ماده رادیواکتیو را بررسی کنیم. نیمه عمربه مدت زمانی میگویند که ماده پرتوزا به نصف مقدار اولیهی خود بر اثر واکنشهای پرتوزایی تقلیل پیدا میکند. معادله دیفرانسیل مربوط به نیمهعمر رادیو اکتیو را میتوان بصورت زیر نوشت:
در این معادله ${N(t)}$ تعداد ذرات ماده برحسب زمان و τ طول عمر متوسط مادهی پرتوزا است.${N(0)}$ مقدار اولیه مادهاست و τ برای اورانیوم ۲۳۵ برابر با ۷۰۰میلیون سال است. حل تحلیلی این معادله به صورت زیر میباشد:
$$N(t)=N_0 e^{-t/\tau }$$
حالا میخواهیم این معادله را گسسته کنیم و در بازههای زمانی کوچک حلش کنیم و در نهایت حل عددی آن را با جواب تحلیلی مقایسه کنیم. ابتدا بسط تیلور تابع${N(t)}$ را می نویسیم:
خب در بسط تیلور، هرچقدر t∆ کوچکتر باشد تقریب دقیقتری داریم (زیرا گسستگی کمتر میشود) و حتی میتوانیم جملات از مرتبه 2 به بعد را هم نادیده بگیریم.زیرا هرچقدر t∆ کوچکتر باشد، در عمل وقتی به توان میرسد قابل چشم پوشی است. در نتیجه به معادله زیر میرسیم:
این معادله در واقع مقدار تابع مورد نظر را در هر مرحله نسبت به مرحله قبل به ما میدهد (به اندیس ها توجه کنید).طبق معادله دیفرانسیل مربوط به نیمه عمر رادیواکتیو هم میدانیم${ \frac{\mathrm{d}N(t) }{\mathrm{d} t}=-\frac{N(t)}{\tau} }$ و در نهایت میرسیم به یک معادله تر و تمیز برای برنامه نویسی و محاسبه عددی:
به این روش گسستهسازی معادله دیفرانسیل، روش اویلرمیگویند.
خب تنها کاري که باید براي نوشتن برنامه انجام دهیم پیاده کردن الگوریتم اویلر است . خب اطلاعاتی که در اختیار داریم چیست؟ مقدار اولیه ماده (شرایط اولیه)، معادله دیفرانسیل مربوطه و گام گسستهسازی یا همان t∆ . کاري که باید بکنیم این است که${N_{i+1}}$ را نسبت به مرحله قبل حساب و مقدار آن را در هر مرحله ذخیره کنیم. پس در واقع ما به یک ساختار تکرار نیازمندیم که در هر مرحله زمان و ${N_{i+1}}$ را برایمان حساب و ذخیره کند. یک سری کارهای جانبی هم میماند مثل تعریف متغیرها ، اضافه کردن کتابخانه ها (در زبان ++c) و … که کارهای سادهای هستند.
در ++c:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
double N, dt = 0.01, T = 700, t = 0;
N = 100;
ofstream o;
o.open("Radioactive Decay.txt", ios::out);
o<<"Time"<<"\t"<<"Numerical"<<endl;
while(t <= 20)
{
o<<t<<"\t"<<N<<endl;
N = N - (N / T) * dt;
t = t + dt;
}
o.close();
}
و در پایتون:
t = 0
T = 700
N = 100
dt = 0.01
f = open("Radioactive Decay.txt", "w")
f.write("Time" + "\t" + "Numerical" + "\n")
while t <= 20 :
N = N - ( N / T ) * dt
t = t + dt
f.write(str(t) + "\t" + str(N) + "\n")f.close()
سعی کردیم برنامهها را در نهایت سادگی بنویسیم! در قسمت اول برنامه، متغیرهای مورد نیاز را تعریف کردیم و مقدارهاي اولیه را به آنها نسبت دادیم. سپس یک فایل ایجاد کردیم تا اعداد محاسبه شده را در آن ذخیره کنیم. قسمت بعد با استفاده از یک دستور تکرار، الگوریتم اویلر را پیاده و اعداد را در فایلی که قبلا ایجاد کرده بودیم، ذخیره کردیم . حالا ما از این اعداد استفاده میکنیم و نمودارهاي مساله مورد نظرمان را رسم میکنیم.
در نمودارهای زیر حل تحلیلی و عددی را با هم مقایسه و درصد اختلاف آنها را با توجه گام گسستهسازی مقایسه کردهام. به این نکته هم باید توجه کرد که شرایط اولیه مساله کاملا دلخواه است و میتوان مساله را به ازای شرایط اولیه مختلف حل و جوابها را مقایسه کرد.
میبینیم که طبق انتظارمان حل تحلیلی و حل عددی بسیار به هم نزدیک هستند و با کاهش گام گسسته سازی جواب تحلیلی و عددی بسیار بهم نزدیک میشوند. معادلههای دیفرانسیل زیادي را میتوان به همین سادگی حل کرد. میتوان از بخش گرافیکی خود محیط برنامهنویسی هم استفاده کرد و نمودارها را در همان محیط برنامهنویسی رسم کرد (به زودی در مورد آنها هم مینویسم). همچنین میتوان خروجی برنامه را برای تحلیلهای دقیقتر و کارهای جالب و هیجان انگیز دیگر، به نرمافزارهای ریاضیاتی پیشرفته مثل Methematica داد.
چند سوال باقی می ماند: آیا همه معادلات دیفرانسیل را میتوان با این روش حل کرد؟ اگر معادله دیفرانسیل مرتبه یک نباشد حل عددی آن چگونه میشود؟ حلهای عددی برای هر مقدار اولیه و هر گام گسسته سازی دارای جواب قابل قبول هستند؟ به امید خدا در پستهای بعدي این سوالات را بررسی خواهیم کرد.
پادکست شماره ۱/۰،«فیزیک پایه – سهل ممتنع»، گفتوگوی صمیمی بینعباس کریمی و امید مومنزاده در مورد مفاهیم ابتدایی فیزیک پایه است . مفاهیمی که به وفور از آنها استفاده میکنیم و ظاهرا بسیار بدیهی به نظر میرسند؛ در صورتی که اینگونه نیست! مفاهیمی مثل جرم لختی، انرژی، فضا، بینهایت و … . همچنین در این پادکستعباس کریمیبه این پرسش پاسخ میدهد که آیا قوانین فیزیک کشف و یا اختراع شدهاند و پس از آنامید مومنزاده به این سوال در مورد ریاضیات میپردازد.
برای کمی سرگرمی بیشتر، از این به بعد شمارهی پادکستها به این صورت خواهد بود که ارقام ثابت کاهش یافته پلانک ،با افزایش دقت، شماره برنامه میشوند. در هر پادکست جدید یک رقم بامعنی به رقم قبلی اضافه خواهد شد. این شماره ۱/۰ ، شماره بعد ۱/۰۵، شماره بعد از آن ۱/۰۵۴ و …
دانلود مستقیم از سایت رادیو فیزیک (ترجیحا از گزینههای بالا استفاده کنید): دانلود
این پادکست یک برداشت کاملا آزاد از یکی از برنامههای World Science U است. آهنگ پخش شده در ابتدا و انتهای این پادکست برگفته شده از وب سایت symphonyofscience.com هستند. شما میتوانیدسایر موزیکهای پخش شده در این پادکست را از سایت jamendo.com رایگان و آزاد تهیه کنید.
با تشکر از همهی شما. امیدواریم که از شنیدن این پادکست لذت ببرید 🙂
درصورت تمایل این کتاب را دانلود کنید و عنوان مطلبی که علاقمند به ترجمه آن هستید را در قسمت نظرات بنویسید و یا به نشانی abbascarimi در gmail ایمیل کنید!