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

برچسب: دینامیک غیرخطی

پیشنهادهایی برای دانشجویان تحصیلات تکمیلی، به‌ویژه برای سیستم‌های پیچیده

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

تا جایی که می‌تونید با سواد بشید.

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

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

مستقل از حرف‌های بالا، یه سری چیزها رو باید خوب بدونید:

برنامه‌نویسی و شبیه‌سازی رو جدی بگیرید

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

عمیق بشید

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

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

تماشاچی نباشید!

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

این جزئیات هم مهمه:

یادگیری «سیستم‌های پیچیده» رو از کجا و چه‌طور آغاز کنیم؟!

خیلی وقته که از من پرسیده میشه که اگر بخوایم یادگیری سیستم‌های پیچیده رو شروع کنیم باید چیکار کنیم؟! آیا میشه بیرون از دانشگاه این کار رو انجام داد؟ یا اگر من رشته‌م مثلا کیهان‌شناسی، آمار یا ریاضی هست برام مقدوره که یادبگیرم؟ خب جواب اینه: چرا که نه! اما اینکه یک راه خیلی خاص وجود داشته باشه، راستش وجود نداره. در حقیقت آدم‌های مختلفی به این سوال طی سال‌های گذشته جواب‌های متنوعی دادن؛ مثلا  مارک نیومن یک‌بار در مورد موضوعات مطرح و منابع موجود در Complex Systems: A Survey نوشته. با این حال سعی می‌کنم طرحی برای شروع یادگیری سیستم‌های پیچیده در ادامه ترسیم کنم. از هرگونه نظر، انتقاد یا پیشنهاد از صمیم قلب استقبال می‌کنم، به‌ویژه از طرف متخصصان. راستی  قبل‌تر نوشته‌ای با عنوان «چگونه یک‌ فیزیک‌دان نظری خوب شویم؟» از خِراردوس توفت، نوبلیست، ترجمه کرده بودم.

اخیرا کتابی منتشر شده به اسم «مقدمه‌ای بر نظریه سیستم‌های پیچیده» که برای شروع سیستم‌های پیچیده کتاب بدی نیست. مخصوصا فصل‌های اولش!

کتاب مقدمه‌ای بر نظریه سیستم‌های پیچیده

پیش‌فرض این نوشته اینه که خواننده به حساب دیفرانسیل و انتگرال، معادلات دیفرانسیل و فیزیک پایه مسلط هست و علاقه شدیدی به ورود به حوزه بین‌رشته‌ای داره! اصلی‌ترین پیش‌نیاز برای یادگیری سیستم‌های پیچیده شهامت و حوصله کافی برای ورود به دنیایی تازه و هیجان‌انگیزه! اگر به دنبال کتابی هستین که حس کلی از «سیستم‌های پیچیده» به شما بده نگاه کنید به کتاب «سیری در نظریه پیچیدگی» نوشته ملانی میچل با ترجمه رضا امیر رحیمی.  همین‌طور کورس مقدماتی در Complexity Explorer وجود داره برای این که یک آشنایی کلی از سیستم‌های پیچیده پیدا کنید.

لیستی که در ادامه اومده، بسته به هر موضوع، از ابتدایی به پیشرفته مرتب شده و تقریبا سعی کردم ترتیب معنی‌داری برقرار کنم. به این معنی که شما می‌تونید به‌ترتیب موضوعات مطرح شده یادگیری اون‌ها رو شروع کنید و بسته به زمانی که دارین توی هر کدوم عمیق و عمیق‌تر بشین!

۱) جبر خطی و ماتریس‌ها

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

  1. کورس جبر خطی Vector and Matrix Algebra by Anthony D. Rhodes
  2. ویدیوهای Essence of linear algebra
  3. کورس و کتاب جبرخطی Gilbert Strang

این کتاب با نگاهی جدید به مکانیک کلاسیک، به موضوعات مورد نیاز برای سیستم‌های پیچیده می‌پردازد.

۲) مکانیک کلاسیک

بخش زیادی از سیستم‌های پیچیده توسط فیزیک‌دانان توسعه داده شده، پس باید با ادبیات ابتدایی فیزیک آشنا بشید!

  1. کورس مکانیک کلاسیک لنرد ساسکیند
  2. کتاب Introduction to Modern Dynamics – Chaos, Networks, Space and Time – David D. Nolte

۳) آمار، احتمال و فرایندهای تصادفی

ایده‌های اصلی آمار و احتمال رو باید بدونید. یعنی هرکسی که در دنیای امروز زندگی می‌‌کنه باید بدونه!

  1. کتاب An Introduction to Random Vibrations, Spectral & Wavelet Analysis by D. E. Newland
  2. کتاب Probability Theory: The Logic of Science by E. T. Jaynes
  3. جزوه فرایندهای تصادفی دکتر کریمی‌پور

۴) فرکتال‌ها و مفاهیم مقیاسی

  1. مقدمه‌ای بر هندسه فرکتالی: ویدیو
  2. کتاب Scale: The Universal Laws of Growth, Innovation, Sustainability, and the Pace of Life in Organisms, Cities, Economies, and Companies by Geoffrey West
  3. کورس Fractals and Scaling by David Feldman
  4. این ویدیو رو ببینید:

۵) فیزیک آماری و پدیده‌های بحرانی

مکانیک آماری رو خیلی خوب باید بدونید! از ایده‌های ابتدایی تا مباحث پیشرفته. مدل آیزینگ رو خیلی جدی بگیرین!

  1. کورس مکانیک آماری لنرد ساسکیند
  2. کورس و کتاب فیزیک آماری ذرات، مهران کاردر
  3. کتاب Statistical Mechanics Entropy, Order Parameters, and Complexity by James P. Sethna
  4. کورس کوتاه  Introduction to Renormalization by Simon DeDeo
  5. کتاب Lectures On Phase Transitions And The Renormalization Group by Nigel Goldenfeld
  6. کتاب David Tong: Lectures on Kinetic Theory

    کتاب دینامیک غیرخطی و آشوب استیون استروگتز به همراه ویدیوهای کلاس درسش یکی از بهترین منابع یادگیری دینامیک غیرخطی است.

۶) دینامیک غیرخطی و آشوب

  1. کورس Introduction to Dynamical Systems and Chaos by David Feldman
  2. کورس و کتاب Nonlinear Dynamics and Chaos by Steven H. Strogatz
  3. کورس Nonlinear Dynamics: Mathematical and Computational Approaches by Liz Bradley

۷) شبکه‌ها (علم شبکه)

  1. ویدیو «ظهور علم شبکه»
  2. مقاله مروری The shortest path to complex networks by S. N. Dorogovtsev and J. F. F. Mendes
  3. این ۴ ویدیو رو ببینند.
  4. کتاب علم شبکه باراباشی
  5. کتاب Networks: An Introduction by Mark Newman
  6. این ویدیو رو ببینید:

۸) روش‌ها و تکنیک‌های محاسباتی و شبیه‌سازی

  1. کورس پایتون برای همه
  2. کورس پایتون برای پژوهش
  3. کتاب Monte Carlo Simulation in Statistical Physics: An Introduction by Kurt Binder, Dieter W. Heermann
  4. کتاب Complex Network Analysis in Python by Dmitry Zinoviev
  5. کورس Introduction to Agent-Based Modeling by William Rand

۹)  نظریه اطلاعات و محاسبه

Self-contained, precise. Numerous examples and exercises make it a valuable teaching book
Builds a bridge between physics of glasses and computer science problems

  1. کورس Introduction to Computation Theory by Josh Grochow
  2. مقاله مروری A Mini-Introduction To Information Theory by Edward Witten
  3. کتاب Information, Physics, and Computation by Marc Mézard and Andrea Montanari

۱۰) نظریه بازی‌‌ها

  1. کورس Game Theory I – Static Games by Justin Grana
  2. کورس Game Theory II- Dynamic Games by Justin Grana
  3. کتاب Strategy: An Introduction to Game Theory by Joel Watson

۱۱) یادگیری ماشین

  1. کورس Matrix Methods in Data Analysis, Signal Processing, and Machine Learning – Gilbert Strang
  2. کورس Fundamentals of Machine Learning by Brendan Tracey and Artemy Kolchinsky
  3. مقاله مروری A high-bias, low-variance introduction to Machine Learning for physicists
  4. ویدیو Bayesian Inference by Peter Green

به طور کلی، دوره‌های آموزشی Complexity Explorer رو دنبال کنید. موسسه سن‌تافه (سانتافه!)  یک کورس مقدماتی روی پیچیدگی داره. همین‌طور پیشنهاد می‌کنم عضو کانال Complex Systems Studies در تلگرام بشین. فراموش نکنید که اینترنت پره از منابع خوب برای یادگیری ولی چیزی که کمه، همت! در آخر دیدن این ویدیو رو با زیرنویس فارسی پیشنهاد می‌کنم: