رفتن به نوشته‌ها

Author: عباس ک. ریزی

فیزیک آماری و علوم کامپیوتر:
سیستم‌های پیچیده، سیستم‌های دینامیکی غیرخطی، علم شبکه‌ و پدیده‌های بحرانی

abbas.sitpor.org

آگار، گذارفاز و بازگشت‌ناپذیری

در گذار فاز، سیستم ویژگی بازگشت‌پذیری ترمودینامیکی رو از دست میده و معمولا گسستگی در فضای ترمودینامیکی دیده میشه. یک لحظه مثال آب و یخ رو مرور کنیم: دمای انجماد آب (H2O مایع) و دمای ذوب برای یخ (H2O جامد) برابره. حدود صفر درجه آب یخ می‌زنه و یخ آب میشه!

اما مثلا برای «آگار» این‌جوری نیست! یعنی دمای ذوب آگار جامد و دمای انجماد آگار مایع یکی نیستند! آگار جامد در دمای ۸۵ درجه سانتی‌گراد ذوب میشه. اما وقتی آگار مایع داشته باشین و شروع به سرد کردنش کنید، در دمای ۴۰ درجه منجمد میشه (نه در ۸۵ درجه). یعنی چی؟!

وقتی آگار جامد رو در دمای ۸۵ درجه ذوب کنید، تا زمانی که به دمای ۴۰ درجه میرسه مایعه! یعنی اگه آگار ذوب شد و خواستین منجمدش کنید باید صبر کنید که به ۴۰ درجه برسه! برای همین اگه در بازه زمانی ۴۰ تا ۸۵ درجه آگار هم به صورت مایع می‌تونه وجود داشته باشه هم به صورت جامد! «بستگی داره که مسیر گرما دادن به سیستم چه جوری باشه» (ببینید که مسیر مهمه!)

این ایده وابستگی به مسیر رو توی فیزیک با واژه پسماند یا hysteresis در موردش حرف می‌زنند. مثال آشناترش وقتیه که میدان مغناطیسی روی یه تیکه آهن اعمال می‌کنیم و آهن خاصیت آهن‌ربایی (مغناطیسی) پیدا می‌کنه ولی وقتی میدان اعمال شده رو قطع می‌کنیم، برخلاف انتظارمون سیستم به حالت قبلی (عدم وجود خاصیت‌ آهن‌ربایی) بر نمی‌گرده

مدل تئوری مغناطش m، در برابر میدان مغناطیسی h. با شروع از مبدأ نمودار صعودی نشان‌دهنده منحنی مغناطش اولیه است. نمودار نزولی پس از اشباع، به همراه منحنی بازگشت پایین، حلقه اصلی را شکل می‌دهند.
نگاره از ویکی‌پدیا

این ایده اساسی شیوه کار کردن دیسک‌های مغناطسی (هارد کامپیوتر) هست.

این ویدیو هم ببینید:

یادگیری متلب و گنو اُکتاو

من معمولا از پایتون برای برنامه‌نویسی استفاده می‌کنم، چون پایتون آزاده، رایگانه و یه حالت آچار فرانسه‌طوری داره که کارهای مختلف میشه باهاش کرد. همین‌طور پایتون کتاب‌خونه‌های زیادی داره که برای کارهای مختلف علمی (محاسباتی) میشه ازشون استفاده کرد. خوبی این کتاب‌خونه‌ها اینه که به زبان‌های سطح پایین‌تری نوشته شدن به همین خاطر به قدر کافی سریع هستند! اگر هم کسی قصد کارهای تحلیل داده و یادگیری ماشین داشته باشه هم پایتون گزینه اوله، دست کم برای شروع! خلاصه همیشه به همه پیشنهاد می‌کنم که با پایتون شروع کنید و اگه کار دانشگاهی می‌کنید با پایتون ادامه بدین! از همه مهم‌تر وقتی شما با پایتون کد می‌زنید معمولا آدم‌هایی رو پیدا می‌کنید که مثل شما روی پروژه یا مسئله مشابهی کار کردن یا کار میکنند و از تجربیاتشون می‌تونید استفاده کنید یا ازشون سوال بپرسین.

با این وجود گاهی پیش میاد که آدم مجبور به استفاده از زبان‌های دیگه بشه. تجربه شخصی من اینه که عمده دانشگاهی‌ها به این دلیل مجبور میشن از یک زبان خاص استفاده کنند که به قدر کافی آدم‌های حرفه‌ای در تیمشون نیست! گاهی استاد و تیمی که پروژه‌ای رو پیش برده سال‌ها با یک زبان خاص کد زدند و ترجیحشون اینه که آدم‌های جدید هم با همون زبون ادامه بدن. راه کم‌دردسرتری هست معمولا، هر چند که گاهی می‌تونه به شدت احمقانه باشه! خلاصه ممکنه که هر کسی مجبور بشه سراغ زبان‌ها یا محیط‌های دیگه برنامه‌نویسی بره. یکی از این محیط‌ها متلب هست. توی لینوکس می‌تونید از Octave به جای متلب استفاده کنید و لذتش رو ببرید!

متلب یک محیط نرم‌افزاری برای انجام محاسبات عددی و یک زبان برنامه‌نویسی نسل چهارم است. واژهٔ متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مورد نظر است که از ترکیب دو واژهٔ MATrix (ماتریس) و LABoratory (آزمایشگاه) ایجاد شده‌است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد منفرد هم به عنوان ماتریس در نظر گرفته می‌شوند.

گنو اُکتاو ( GNU Octave) زبان برنامه‌نویسی سطح بالایی است که بیشتر برای محاسبات عددی به کار می‌رود. این برنامه امکانات زیادی را از طریق رابط خط فرمان برای حل عددی مسائل خطی و غیر خطی می‌دهد. این برنامه را می‌توان جایگزین مناسبی برای همتای غیر آزاد خود متلب به حساب آورد.

ویکی‌پدیا

در ادامه یک سری منبع برای یادگیری متلب و اکتاو رو معرفی می‌کنم.

برای شروع

از بین این دوره‌ها، ببینید کدوم یکی به مذاقتون بیشتر خوش میاد:

برای محسابات عددی

به طور کلی

پیشنهاد من اینه که کلیات متلب رو یاد بگیرین و از منابع مختلف مربوط به کارتون استفاده کنید. مخصوصا از مثال‌های خود Mathworks استفاده کنید. مثلا اینجا ۵۰۰ تا مثال خیلی خوب برای ریاضیات، آمار و یادگیری ماشین هست. خوبه به این‌ها حتما نگاه کنید. حواستون باشه که به روی ایران بسته‌س و شما نیاز به چیزی برای دور زدن تحریم دارین که حتما راه‌های مختلفی بلدین براش!

این کتاب پر از مثال‌های خیلی قشنگه و اساسا آموزشش بر پایه مثال زدن. فصل اولش هم برای کسایی که آشنایی با متلب ندارن یک سری مثال آموزشی خوب داره.

خوبی این کتاب اینه که جواب تمرین‌ها رو هم داره و می‌شه به عنوان کتاب کمکی برای تدریس ازش استفاده کرد.

به عنوان پیشنهاد به دوستانی که معلم این درس یا درس‌های دیگه میشن : میتونید به جای حل‌تمرین سنتی پایه کلاس‌هاتون رو بر همچین چیزی بذارید. همین کار کوچیک میتونه تغییر محسوسی توی آموزش فیزیک به‌وجود بیاره. این کتاب نسخه‌ پایتونی هم داره!

تجربه شخصی در کارهای مربوط به تحلیل داده در بازار و نه دانشگاه!

من برای مدتی (۶ ماه) به‌خاطر امرار معاش و کسب تجربه وارد یه پروژه تحلیل داده به صورت پاره‌وقت شدم. درآمدش بد نبود و خوش هم می‌گذشت از یه جهت‌هایی! اگه شما تجربه‌ای در برنامه‌نویسی دارین یا ممکنه نیاز به کار پاره وقت داشته باشین یا اینکه کلا دوست داشته باشین که به صورت تفریحی از این کارا کنید، یه سری پیشنهاد دارم که بهتون کمک کنه وارد این شغل بشین.

فقط توجه کنید که این‌ها تجربه یه آدم حرفه‌ای نیست! تجربه کسی هست که فیزیک خونده و حالا می‌خواد یه کار پاره وقت رو تجربه کنه! کاری خارج از صنعت تست و کنکور و المپیاد. امیدوارم حرفه‌ای‌ها ببخشن و با نظرات خودشون این نوشته رو بهتر کنن.

فلسفهٔ پایتون خوانایی بالای برنامه‌های نوشته شده و کوتاهی و بازدهی نسبی بالای آن است.

۱) پایتون یاد بگیرید

پایتون بر هر درد بی‌درمان دواست. اینم سه تا دوره خوب فارسی:

💡 اگر پایتون رو شروع کردین، ادامه این نوشته رو بخونید!

دیگه وقتش رسیده که حرفه‌ای تر بشین! اولین قدم – به عنوان پیشنهاد – اینه که برین توی ژوپیتر نوت‌بوک کد بزنید، خیلی محیطش خوبه، همون‌جا کدو ران می‌کنید و خیلی راحته همه چیز. در هر مرحله هم خیلی راحت میشه کنترل کرد که دارین چیکار می‌کنید. برای آشنایی بیشتر مثلا این نوشته رو ببینید.

در ضمن گوگل یه چیزی درست کرده به اسم Google Colab که یه ژوپتر نوت بوک آنلاینه که میشه بری اونجا و آنلاین کد بزنی روی کامپیوترای گوگل! ۱۲ گیگ رم میده بهتون با یه پردازنده نسبتا معقول. gpu هم میده برای پردازش‌های موازی! خوبی این‌کار اینه که حتی با یه کامپیوتر ضعیف هم میشه راحت کد پایتون زد و مهم‌تر این‌که میشه کد رو به اشتراک بذاری و همزمان چند نفر توی یه پروژه مشارکت داشته باشند. در ضمن، هر چیزی که بشه روی کامپیوتر شخصی نصب کرد، به راحتی روی گوگل کولب هم نصب میشه. خودتون ببنید چیه دیگه! داخل خود پروژه هم کلی کد نمونه هست. فیلم آموزشی هم هست. اینجا هم یکمی توضیح هست برای گوگل کولب.

بین محیط‌هایی که میشه کد زد ژوپیتر رو بیشتر به این خاطر پیشنهاد می‌کنم چون که می‌تونید برین روی گوگل کولب و راحت زندگی کنید! به خصوص توی کار گروهی به جای این‌که هی به مردم توضیح بدین که دارین چیکار می‌کنید یا مثلا نمودارهاتونو مدام بخواین ذخیره کنید و جدا براشون بفرستین، راحت لینک گوگل کلب رو میدین و میگین خب همه چیز اینجا هست. از طرف دیگه شفاف هم هست دیگه همه چیز. بقیه هم کدتون رو می‌تونن دنبال کنند و این‌که خودتونم یه جوری مجبور میشین تمیز کد بزنید و مرتب کامنت گذاری کنید، توضیح بنویسید که بعدترش دچار مشکل نشین در ادامه پروژه. امکانات خیلی زیادی خلاصه هست.

۲) تحلیل داده به کمک پایتون

الان وقتشه که یه سری کورس تحلیل داده هم ببینید و یاد بگیرین (مهم‌ترین کتابخونه پایتون برای تحلیل داده Pandas هست). با دوره‌ آنلاین آشنا هستید؟!

دوره‌های پیشنهادی:

یک دوره جامع از دانشگاه میشیگان:

۳) آمار یاد بگیرید

اگه واقعا می‌خواین کار درست حسابی کنید باید درست آمار بدونید. این دوره رو پیشنهاد می‌کنم:

نکته مهم اینه که لزومی نداره که خیلی کورس ببینید یا کتاب بخونید! خیلی چیزا رو حین کار میشه یاد گرفت. ولی دونستن یه حداقل‌هایی کمک می‌کنه که شما سریع‌تر بتونید کار پیدا کنید یا موقع کار اصلا بدونید برای رفع مشکلتون چی باید سرچ کنید! فراموش نکنید که گوگل بهترین کمک‌دهنده شما در این مسیره. گوگل معلم خوبیه، ازش سوال بپرسید! راستی، این نوشته از جادی – به عنوان یک آدم حرفه‌ای و با سابقه – رو بخونید.

#شرح_پیچیدگی

در توییتر متخصصان حوزه پیچیدگی با هشتگ #ComplexityExplained در مورد مفهوم پیچیدگی توییت کردند و ماحصل توییت‌ها تبدیل به دفترچه‌ای شد در #شرح_پیچیدگی. دفترچه‌ای برای توضیح مفهوم پیچیدگی بر اساس آرا صاحب‌نظران این حوزه!

شما می‌توانید سایت اصلی این پروژه را با رفتن به این نشانی ببینید:
complexityexplained.github.io

این اثر با مجوز زیر منتشر شده است:
CC BY-NC-ND 4.0

این شما و این نسخه فارسی این دفترچه :

ComplexityExplainedFarsi

«مقدمه‌ای بر بازبهنجارش» هفته پنجم: بازبهنجارش در فیزیک انرژی‌های بالا، نظریه گروه‌ها و نظریه نرخ-اعوجاج

دوره «مقدمه‌ای بر بازبهنجارش»

قصد من ارائه یک معرفی مدرن از بازبهنجارش از افق سیستم‌های پیچیده‌ است. با نظریه اطلاعات و پردازش تصویر آغاز می‌کنم و به سراغ مفاهیم بنیادی چون پدیدارگی، درشت-دانه‌بندی و نظریه مؤثر در نظریه پیچیدگی خواهم رفت. آنچه برای این مجموعه نیاز دارید شهامت آشنایی با ایده‌های جدید و البته کمی نظریه احتمال، حسابان و جبر خطی است. برای تمرین‌های پیشنهادی هم خوب است که کمی پایتون و متمتیکا بدانید.

با تشکر از Simon Dedeo، موسسه سانتافه و بهار بلوک آذری.

ایده بازبهنجارش در مورد مطالعه نظریه‌ها است هنگامی که از مقیاسی به مقیاس دیگر می‌روند.

هفته پنجم: بازبهنجارش در فیزیک انرژی‌های بالا، نظریه گروه‌ها و نظریه نرخ-اعوجاج

در ابتدای این جلسه کمی در مورد بازبهنجارش در فیزیک انرژی‌های بالا صحبت خواهم کرد و سپس با معرفی کوتاهی از نظریه‌ گروه‌ها، سراغ قضیه Krohn–Rhodes می‌روم. در انتها به این پرسش می‌پردازم که آیا برتری بین روش‌های درشت-دانه‌بندی وجود دارد یا خیر. در قسمت انتهایی نظریه نرخ-اعوجاج (Rate–distortion theory) را مطرح می‌کنم.


ویدیوها

۱) بازبهنجارش در فیزیک انرژی‌های بالا

۲) نظریه گروه‌ها

۳) نظریه نرخ-اعوجاج


برای مطالعه بیشتر


اسلایدها

بازبهنجارش-قسمت-آخر

«مقدمه‌ای بر بازبهنجارش» هفته چهارم: مدل آیزینگ

دوره «مقدمه‌ای بر بازبهنجارش»

قصد من ارائه یک معرفی مدرن از بازبهنجارش از افق سیستم‌های پیچیده‌ است. با نظریه اطلاعات و پردازش تصویر آغاز می‌کنم و به سراغ مفاهیم بنیادی چون پدیدارگی، درشت-دانه‌بندی و نظریه مؤثر در نظریه پیچیدگی خواهم رفت. آنچه برای این مجموعه نیاز دارید شهامت آشنایی با ایده‌های جدید و البته کمی نظریه احتمال، حسابان و جبر خطی است. برای تمرین‌های پیشنهادی هم خوب است که کمی پایتون و متمتیکا بدانید.

با تشکر از Simon Dedeo، موسسه سانتافه و بهار بلوک آذری.

ایده بازبهنجارش در مورد مطالعه نظریه‌ها است هنگامی که از مقیاسی به مقیاس دیگر می‌روند.

هفته چهارم: مدل آیزینگ

مدل آیزینگ، به عنوان معرف‌ترین مدل در فیزیک آماری، یک مدل ساده برای توصیف گذار فاز در مواد مغناطیسی است. این مدل از متغیرهای گسسته (اسپین) به روی یک گراف مشبکه (Lattice) تشکیل شده است. در این قسمت از مجموعه مقدمه‌ای بر بازبهنجارش، نخست مدل آیزینگ را معرفی می‌کنم و سپس به سراغ درشت‌-دانه‌بندی شبکه‌ اسپینی می‌روم. چالش‌های پیش‌رو را مطرح می‌کنم و سرانجام به پدیدارگی جملات مرتبه‌-بالاتر و نقاط ثابت جریان بازبهنجارش می‌پردازم.


ویدیوها

۱) مرور جلسات گذشته و معرفی مدل آیزینگ

۲) درشت-دانه بندی شبکه اسپینی

۳) یافتن نقاط ثابت


برای مطالعه بیشتر

برای بیشتر عمیق شدن

شبیه‌سازی مدل آیزینگ


اسلایدها

بازبهنجارش-آیزینگ۱

«مقدمه‌ای بر بازبهنجارش» هفته سوم: اتوماتای سلولی

دوره «مقدمه‌ای بر بازبهنجارش»

قصد من ارائه یک معرفی مدرن از بازبهنجارش از افق سیستم‌های پیچیده‌ است. با نظریه اطلاعات و پردازش تصویر آغاز می‌کنم و به سراغ مفاهیم بنیادی چون پدیدارگی، درشت-دانه‌بندی و نظریه مؤثر در نظریه پیچیدگی خواهم رفت. آنچه برای این مجموعه نیاز دارید شهامت آشنایی با ایده‌های جدید و البته کمی نظریه احتمال، حسابان و جبر خطی است. برای تمرین‌های پیشنهادی هم خوب است که کمی پایتون و متمتیکا بدانید.

با تشکر از Simon Dedeo، موسسه سانتافه و بهار بلوک آذری.

ایده بازبهنجارش در مورد مطالعه نظریه‌ها است هنگامی که از مقیاسی به مقیاس دیگر می‌روند.

هفته سوم: اتوماتای سلولی

یک اتوماتای سلولی شامل یک شبکه منظم از سلول‌های خاموش و روشن است. تحول این سلول‌ها توسط قواعد ثابتی که فقط وابسته به وضعیت قبلی آن سلول و همسایگانش است مشخص می‌شود. در این جلسه ابتدا اتوماتای سلولی را معرفی می‌کنم و به مفاهیمی چون «کامل بودن تورینگ» و «نمودارهای جابه‌جاشوند»  می‌پردازم. سپس سراغ درشت-دانه‌بندی اتوماتای سلولی و مقاله ۲۰۰۴ و ۲۰۰۵ گلدنفلد می‌روم و در نهایت در مورد شبکه‌‌های بازبهنجارش بحث خواهم کرد.


ویدیوها

۱) معرفی اتوماتای سلولی

۲) درشت-دانه بندی اتوماتای سلولی

۳) شبکه‌های بازبهنجارش


برای مطالعه بیشتر


اسلایدها

بازبهنجارش-اتوماتای-سلولی۵