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

برچسب: روش‌های محاسباتی

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

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

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

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

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

ویکی‌پدیا

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

برای شروع

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

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

به طور کلی

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

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

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

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

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

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

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

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

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

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

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

عمیق بشید.

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

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

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

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

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

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