From 46e76b4fedfa37edf4c315ecf686633f7e307866 Mon Sep 17 00:00:00 2001 From: Zahra-khanzadeh Date: Tue, 12 Aug 2025 17:46:13 +0330 Subject: [PATCH] fix bullet list markdown, add new lecture python_by_example.md, update toc --- lectures/_toc.yml | 2 +- lectures/about_py.md | 75 +- lectures/getting_started.md | 88 +- .../images/python_by_example/pbe_ex2_fig.png | Bin 0 -> 82791 bytes .../test_program_1_updated.png | Bin 0 -> 24041 bytes lectures/python_by_example.md | 867 ++++++++++++++++++ 6 files changed, 970 insertions(+), 62 deletions(-) create mode 100644 lectures/images/python_by_example/pbe_ex2_fig.png create mode 100644 lectures/images/python_by_example/test_program_1_updated.png create mode 100644 lectures/python_by_example.md diff --git a/lectures/_toc.yml b/lectures/_toc.yml index 2d37226..130dffc 100644 --- a/lectures/_toc.yml +++ b/lectures/_toc.yml @@ -6,7 +6,7 @@ parts: chapters: - file: about_py - file: getting_started - # - file: python_by_example + - file: python_by_example # - file: functions # - file: python_essentials # - file: oop_intro diff --git a/lectures/about_py.md b/lectures/about_py.md index 1dab58b..5fc729a 100644 --- a/lectures/about_py.md +++ b/lectures/about_py.md @@ -23,17 +23,15 @@ _ کریس ویگینس در این درس: +* پایتون را معرفی خواهیم کرد - پایتون را معرفی خواهیم کرد +* برخی از ویژگی های پایتون را نشان خواهیم داد - برخی از ویژگی های پایتون را نشان خواهیم داد +* در رابطه با ارتباط پایتون و هوش مصنوعی بحث خواهیم کرد - در رابطه با ارتباط پایتون و هوش مصنوعی بحث خواهیم کرد - - توضیح می دهیم که چرا پایتون زبان محبوب ما برای محاسبات علمی است - - و شما را به ادامه ی مسیر و اهدافتان تشویق می کنیم. +* توضیح می دهیم که چرا پایتون زبان محبوب ما برای محاسبات علمی است +* و شما را به ادامه ی مسیر و اهدافتان تشویق می کنیم. همچنین شما نیازی به درک همه ی مواردی که در این درس خواهید دید، ندارید؛ زیرا در ادامه ی دروس تمامی جزئیات را آموزش خواهیم داد. @@ -60,17 +58,41 @@ _ کریس ویگینس این موضوع مهم است زیرا: -پولمان را پس انداز می کند، به جای یک شرکت انتفاعی، توسط جامعه ی کاربران کنترل می شود و قابلیت تکثیر و [علم باز](https://en.wikipedia.org/wiki/Open_science) را تشویق می کند. +* پولمان را پس انداز می کند + +* به جای یک شرکت انتفاعی، توسط جامعه ی کاربران کنترل می شود + +* و قابلیت تکثیر و [علم باز](https://en.wikipedia.org/wiki/Open_science) را تشویق می کند. ### کاربردهای رایج پایتون پایتون یک زبان همه منظوره است که تقریبا در همه ی حوزه های کاربردی از جمله موارد زیر استفاده می شود: -هوش مصنوعی، محاسبات علمی، ارتباطات، توسعه ی وب، CGI و رابط های کاربری گرافیکی، توسعه ی بازی، محتوای چندرسانه ای و غیره. +* هوش مصنوعی + +* محاسبات علمی + +* ارتباطات + +* توسعه ی وب + +* رابط های کاربری گرافیکی و CGI + +* توسعه ی بازی + +* محتوای چندرسانه ای + +* و غیره. همچنین بطور گسترده ای توسط شرکت های زیر و بسیاری دیگر از شرکت ها مورد استفاده و پشتیبانی قرار می گیرد: - [Google](https://www.google.com/)، [OpenAI](https://openai.com/)، [Netflix](https://www.netflix.com/)، [Meta](https://opensource.fb.com/)، [Dropbox](https://www.dropbox.com/)، [Amazon](https://www.amazon.com/)، [Reddit](https://www.reddit.com/) +* [Google](https://www.google.com/) +* [OpenAI](https://openai.com/) +* [Netflix](https://www.netflix.com/) +* [Meta](https://opensource.fb.com/) +* [Dropbox](https://www.dropbox.com/) +* [Amazon](https://www.amazon.com/) +* [Reddit](https://www.reddit.com/) ### جایگاه محبوبیت @@ -276,7 +298,15 @@ value همچنین می توانید نمونه های بیشتری را در [گالری تصاویر Matplotlib](https://matplotlib.org/stable/gallery/index.html) بیابید. - سایر کتابخانه های گرافیکی عبارتند از [seaborn](https://seaborn.pydata.org/)، [Plotly](https://plot.ly/python/) (یک رابط سطح بالا برای Matplotlib می باشد)، [Altair](https://altair-viz.github.io/) و [Bokeh](http://bokeh.pydata.org/en/latest/) . + سایر کتابخانه های گرافیکی عبارتند از: + +* [Plotly](https://plot.ly/python/) + +* [seaborn](https://seaborn.pydata.org/)(یک رابط سطح بالا برای Matplotlib می باشد) + +* [Altair](https://altair-viz.github.io/) + +* [Bokeh](http://bokeh.pydata.org/en/latest/) . همچنین برای مشاهده نمونه های بیشتری از نمودارهای رسم شده با استفاده از کتابخانه های مختلف، می توانید به [گالری نمودارهای پایتون](https://www.python-graph-gallery.com/) مراجعه کنید. @@ -323,26 +353,27 @@ plt.show() در اینجا فهرست کوتاهی از چند کتابخانه ی علمی مهم برای پایتون که پیشتر نگفتیم برایتان آورده ایم: -[SymPy](http://www.sympy.org/): برای جبر نمادین، از جمله محاسبه ی حد، مشتق و انتگرال +* [SymPy](http://www.sympy.org/): برای جبر نمادین، از جمله محاسبه ی حد، مشتق و انتگرال + +* [statsmodels](http://statsmodels.sourceforge.net/): برای توابع آماری -[statsmodels](http://statsmodels.sourceforge.net/): برای توابع آماری +* [scikit-learn](http://scikit-learn.org/): برای یادگیری ماشین -[scikit-learn](http://scikit-learn.org/): برای یادگیری ماشین +* [Keras](https://keras.io/): برای یادگیری ماشین -[Keras](https://keras.io/): برای یادگیری ماشین +* [Pyro](https://pyro.ai/) و [PyStan](https://pystan.readthedocs.org/en/latest/): برای تحلیل داده های بیزی -[Pyro](https://pyro.ai/) و [PyStan](https://pystan.readthedocs.org/en/latest/): برای تحلیل داده های بیزی +* [GeoPandas](https://geopandas.org/en/stable/): برای تحلیل داده های مکانی -[GeoPandas](https://geopandas.org/en/stable/): برای تحلیل داده های مکانی +* [Dask](https://docs.dask.org/en/stable/): برای پردازش موازی -[Dask](https://docs.dask.org/en/stable/): برای پردازش موازی +* [Numba](http://numba.pydata.org/): اجرای پایتون با سرعت برابر با کدهای سطح پایین قابل اجرا توسط سخت افزار -[Numba](http://numba.pydata.org/): اجرای پایتون با سرعت برابر با کدهای سطح پایین قابل اجرا توسط سخت افزار +* [CVXPY](https://www.cvxpy.org/): برای بهینه سازی محدب -[CVXPY](https://www.cvxpy.org/): برای بهینه سازی محدب +* [scikit-image](https://scikit-image.org/) و [OpenCV](https://opencv.org/): برای پردازش و تحلیل داده های تصویری -[scikit-image](https://scikit-image.org/) و [OpenCV](https://opencv.org/): برای پردازش و تحلیل داده های تصویری +* [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/): XML و HTML برای استخراج داده ها از فایل های -[BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/): XML و HTML برای استخراج داده ها از فایل های در این مجموعه خواهیم آموخت که چگونه از بسیاری از این کتابخانه ها برای کارهای محاسباتی علمی در اقتصاد و امور مالی استفاده کنیم. diff --git a/lectures/getting_started.md b/lectures/getting_started.md index 3c75d76..64b72f8 100644 --- a/lectures/getting_started.md +++ b/lectures/getting_started.md @@ -12,17 +12,18 @@ kernelspec: # بیاین شروع کنیم ## مقدمه -در این بخش شما خواهید آموخت که چگونه: -از پایتون در فضای ابری استفاده کنید + در این بخش شما خواهید آموخت که چگونه: -یک محیط محلی پایتون راه اندازی و اجرا کنید +1. از پایتون در فضای ابری استفاده کنید -دستورات ساده ی پایتون را اجرا کنید +1. یک محیط محلی پایتون راه اندازی و اجرا کنید -یک نمونه از برنامه را اجرا کنید +1. دستورات ساده ی پایتون را اجرا کنید + +1. یک نمونه از برنامه را اجرا کنید -کتابخانه های برنامه نویسی موردنیاز برای این دوره را نصب کنید +1. کتابخانه های برنامه نویسی موردنیاز برای این دوره را نصب کنید ## پایتون در فضای ابری @@ -55,8 +56,9 @@ kernelspec: نکات: - اطمینان حاصل کنید که نسخه ی مناسب سیستم عامل خود را نصب می کنید. - اگر در طول فرایند نصب از شما پرسیده شد که آیا آناکوندا را به عنوان نصب پیش فرض پایتون انتخاب می کنید، گزینه "بله" را انتخاب کنید. +* اطمینان حاصل کنید که نسخه ی مناسب سیستم عامل خود را نصب می کنید. + +* اگر در طول فرایند نصب از شما پرسیده شد که آیا آناکوندا را به عنوان نصب پیش فرض پایتون انتخاب می کنید، گزینه "بله" را انتخاب کنید. ### به روزرسانی آناکوندا @@ -65,7 +67,7 @@ kernelspec: 1. یک ترمینال باز کنید -2.عبارت ` conda update anaconda ` را تایپ کنید +1. عبارت ` conda update anaconda ` را تایپ کنید برای اطلاعات بیشتر درباره کوندا، در ترمینال عبارت " conda help " را تایپ کنید. @@ -74,9 +76,11 @@ kernelspec: [ژوپیتر](http://jupyter.org/) نوت بوک ها یکی از چندین راه های قابل دسترس برای ارتباط برقرار کردن با پایتون هستند. ژوپیتر نوت بوک ها از یک رابط مبتنی بر مرورگر برای دسترسی به پایتون استفاده می کنند که دارای ویژگی های زیر است: - قابلیت نوشتن و اجرای دستورات پایتون - خروجی قالب بندی شده در مرورگر، شامل جداول، نمودارها، انیمیشن ها و غیره - امکان ترکیب متن قالب بندی شده و نمایش عبارات ریاضی +* قابلیت نوشتن و اجرای دستورات پایتون + +* خروجی قالب بندی شده در مرورگر، شامل جداول، نمودارها، انیمیشن ها و غیره + +* امکان ترکیب متن قالب بندی شده و نمایش عبارات ریاضی به دلیل این قابلیت ها، امروزه ژوپیتر یکی از ابزارهای مهم در اکوسیستم محاسبات علمی محسوب می شود. @@ -86,10 +90,13 @@ kernelspec: درحالیکه ژوپیتر تنها روش برنامه نویسی در پایتون نیست، اما بهترین گزینه برای موقعیت هایی است که: - می خواهید برنامه نویسی با پایتون را شروع کنید - ایده های جدید را آزمایش کنید یا فقط بخش های کوچکی از کد را بررسی کنید - قصد دارید از محیط های تعاملی قدرتمند آنلاین مانند Google Colab استفاده کنید - می خواهید ایده های علمی خود را با دانشجویان یا همکاران خود به اشتراک بگذارید و با آنها همکاری کنید +* می خواهید برنامه نویسی با پایتون را شروع کنید + +* ایده های جدید را آزمایش کنید یا فقط بخش های کوچکی از کد را بررسی کنید + +* قصد دارید از محیط های تعاملی قدرتمند آنلاین مانند [Google Colab](https://research.google.com/colaboratory/) استفاده کنید + +* می خواهید ایده های علمی خود را با دانشجویان یا همکاران خود به اشتراک بگذارید و با آنها همکاری کنید این مجموعه دروس نیز برای اجرا در ژوپیتر نوت بوک ها طراحی شده اند. @@ -99,10 +106,10 @@ kernelspec: برای اینکار می توانید: - در منوی برنامه های خود به دنبال Jupyter بگردید - یک ترمینال باز کنید و دستور jupyter notebookرا اجرا کنید +* در منوی برنامه های خود به دنبال Jupyter بگردید -**کاربران ویندوز باید به جای "ترمینال" از "Anaconda Command Prompt" استفاده کنند.** +* یک ترمینال باز کنید و دستور `jupyter notebook`را اجرا کنید + * کاربران ویندوز باید به جای "ترمینال" از "Anaconda Command Prompt" استفاده کنند. اگر روش دوم را انتخاب کنید، با چیزی مشابه تصویر زیر رو به رو خواهید شد. @@ -110,8 +117,9 @@ kernelspec: خروجی نشان می دهد که نوت بوک در `/http://localhost:8888` در حال اجرا است. - localhost اسم رایانه ی محلی شماست - 8888 شماره پورتی است که رایانه ی شما از آن استفاده می کند +* `localhost` اسم رایانه ی محلی شماست + +* `8888` [شماره پورتی](https://en.wikipedia.org/wiki/Port_%28computer_networking%29) است که رایانه ی شما از آن استفاده می کند بنابراین، هسته ی ژوپیتر در حال دریافت دستورات پایتون از طریق پورت 8888 در رایانه ی محلی شماست. @@ -155,22 +163,25 @@ kernelspec: دوحالت اصلی وجود دارد: -1.حالت ویرایش (Edit mode) +1. حالت ویرایش (Edit mode) + + * با یک کادر سبز دور سلول و یک مکان نمای چشمک زن مشخص می شود. - با یک کادر سبز دور سلول و یک مکان نمای چشمک زن مشخص می شود. - هر چیزی که تایپ کنید، به همان شکل در سلول نوشته می شود. + * هر چیزی که تایپ کنید، به همان شکل در سلول نوشته می شود. -2.حالت فرمان (Command mode) +1. حالت فرمان (Command mode) - کادر سبز با یک کادر آبی جایگزین می شود. - کلیدهای صفحه کلید به عنوان فرمان تفسیر می شوند. (مثلا با زدن کلید b ، یک سلول جدید در زیر سلول فعلی ایجاد می شود). + * کادر سبز با یک کادر آبی جایگزین می شود. + + * کلیدهای صفحه کلید به عنوان فرمان تفسیر می شوند. (مثلا با زدن کلید `b` ، یک سلول جدید در زیر سلول فعلی ایجاد می شود). برای جا به جایی بین حالت ها: - برای رفتن از حالت ویرایش به حالت فرمان: کلید Esc یا Ctrl + M را بزنید. - برای رفتن از حالت فرمان به حالت ویرایش: کلید Enter را فشار دهید یا درون یک سلول کلیک کنید. +* برای رفتن از حالت ویرایش به حالت فرمان: کلید `Esc` یا `Ctrl-M` را بزنید. + +* برای رفتن از حالت فرمان به حالت ویرایش: کلید `Enter` را فشار دهید یا درون یک سلول کلیک کنید. وقتی به این رفتار حالت محور عادت کنید، کار با ژوپیتر نوت بوک بسیار سریع و کارآمد خواهد بود. @@ -223,13 +234,12 @@ plt.show() در جلسه ی قبل این خط از کد را اجرا کردیم: `import numpy as np` - Numpy یک کتابخانه ی عددی است که به طور گسترده با آن کار خواهیم کرد. +* Numpy یک کتابخانه ی عددی است که به طور گسترده با آن کار خواهیم کرد. بعد از این دستور، می توانیم به توابع کتابخانه Numpy با استفاده از نحو `np.function_name`دسترسی داشته باشیم. - برای مثال بیاید دستور np.random.randn(3) را امتحان کنید. - +* برای مثال بیاید دستور `np.random.randn(3)` را امتحان کنید. می توانیم ویژگی های مختلف `np` را با استفاده از کلید Tab بررسی کنیم. @@ -383,9 +393,9 @@ print("foobar") اگر با کدی مواجه شدید که در یک فایل با پسوند `*.py` ذخیره شده است، لازم است به این دو سوال توجه کنید: -1.چگونه باید آن را اجرا کرد؟ +1. چگونه باید آن را اجرا کرد؟ -2.چگونه می توان آن را ویرایش یا تغییری در آن اعمال کرد؟ +1. چگونه می توان آن را ویرایش یا تغییری در آن اعمال کرد؟ برای این کارها شما دو گزینه پیش روی خود دارید! @@ -410,8 +420,8 @@ print("foobar") یک ویرایشگر خوب امکانات زیر را ارائه می دهد: - فرمان های کارآمد برای ویرایش متن(مثل کپی، جایگذاری، جست وجو و جایگزینی) - برجسته سازی نحوی (syntax highlighting) برای خوانایی بهتر کد و امکانات مشابه دیگر +* فرمان های کارآمد برای ویرایش متن(مثل کپی، جایگذاری، جست وجو و جایگزینی) +* برجسته سازی نحوی (syntax highlighting) برای خوانایی بهتر کد و امکانات مشابه دیگر در حال حاضر، یکی از محبوب ترین ویرایشگرهای متنی برای برنامه نویسی [VS Code](https://code.visualstudio.com/) است، که کاربری بسیار آسانی دارد و افزونه های باکیفیت زیادی برای آن عرضه شده است. @@ -434,14 +444,14 @@ print("foobar") اکنون وقت آن است که: -1.مرورگر خود را اجرا کنید (یا اگر باز است، یک تب جدید باز کنید.) +1. مرورگر خود را اجرا کنید (یا اگر باز است، یک تب جدید باز کنید.) -2.آدرسی که در مرحله قبل داده شده (مثلا `http://localhost:8888`) را در نوار آدرس وارد کنید. +1. آدرسی که در مرحله قبل داده شده (مثلا `http://localhost:8888`) را در نوار آدرس وارد کنید. اکنون باید بتوانید یک جلسه ی معمولی از نوت بوک ژوپیتر را اجرا کنید. این روش، جایگزین دیگری برای اجرای نوت بوک است که می تواند در برخی موقعیت ها مفید باشد. -برای نمونه، اگر صفحه ی وب تصادفا بسته شود ولی هسته ی ژوپیتر هنوز فعال باشد، همچنان می‎توانید از این طریق دوباره به نوت بوک دسترسی پیدا کنید. +برای نمونه، اگر صفحه ی وب تصادفا بسته شود ولی هسته ی ژوپیتر هنوز فعال باشد، همچنان می توانید از این طریق دوباره به نوت بوک دسترسی پیدا کنید. ```{exercise-end} ``` diff --git a/lectures/images/python_by_example/pbe_ex2_fig.png b/lectures/images/python_by_example/pbe_ex2_fig.png new file mode 100644 index 0000000000000000000000000000000000000000..28c7d34c03dc12376d84b83beb4dff477d28e427 GIT binary patch literal 82791 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 Y2(f19k{vezSayiEhJkv8s$InY1Jzy{L;wH) literal 0 HcmV?d00001 diff --git a/lectures/python_by_example.md b/lectures/python_by_example.md new file mode 100644 index 0000000..e7c79fd --- /dev/null +++ b/lectures/python_by_example.md @@ -0,0 +1,867 @@ +--- +jupytext: + text_representation: + extension: .md + format_name: myst +kernelspec: + display_name: Python 3 + language: python + name: python3 +--- + +# یک مثال مقدماتی + +## مقدمه + +حال ما آماده ایم تا یادگیری زبان برنامه نویسی پایتون را آغاز کنیم. + +در این بخش، ابتدا چند کد کوتاه پایتون می نویسیم و سپس آنها را بررسی و تحلیل می کنیم. + +هدف این درس، آشنایی شما با نحو(syntax) پایه ای پایتون و ساختارهای داده ای آن است و با مباحث پیچیده تر در جلسات بعد آشنا خواهیم شد. + +پیش از شروع این درس، باید جلسه ی قبل را مطالعه کرده باشید. + +## هدف:رسم یک فرآیند نویز سفید + + فرض کنید می خواهیم یک فرآیند نویز سفید به صورت + + ϵ + 0 + + , + + ϵ + 1 + + , + + , + + ϵ + T + + ، شبیه سازی و رسم کنیم، که در آن هر + + ϵ + t + + یک مقدار مستقل و از توزیع نرمال استاندارد است. + + به بیان دیگر، می خواهیم نمودارهایی همانند نمودار زیر تولید کنیم: + + ![نمودار فرآیند نویز سفید](images/python_by_example/test_program_1_updated.png) + + (در اینجا + t + محور افقی و + + ϵ + t + + محور عمودی است.) + +ما این کار را به چند روش مختلف انجام خواهیم داد و هر بار نکات بیشتری درباره ی پایتون خواهیم آموخت. + +## روش اول + +در ادامه چند خط کد آمده که کاری را که تعریف کرده بودیم، انجام می دهد. + +```{code-cell} ipython +import numpy as np +import matplotlib.pyplot as plt + +ϵ_values = np.random.randn(100) +plt.plot(ϵ_values) +plt.show() +``` +بیایید این برنامه را تجزیه و تحلیل کنیم و ببینیم چگونه کار میکند. + +### Imports + +دو خط اول کد، قابلیت هایی را از کتابخانه های خارجی وارد می کند. + +خط اول NumPY را وارد می کند؛ بسته ای محبوب در پایتون برای کارهایی مانند: + + +* کار با آرایه ها (بردارها و ماتریس ها) + +* توابع ریاضی رایج مانند `cos` و `sqrt` + +* تولید اعداد تصادفی + +* جبر خطی و غیره. + +پس از وارد کردن کتابخانه با دستور `import numpy as np`، می توانیم از طریق نحو `np.attribute` به این قابلیت ها دسترسی پیدا کنیم. + +در ادامه دو مثال دیگر آورده ایم: + +```{code-cell} python3 +np.sqrt(4) +``` + +```{code-cell} python3 +np.log(4) +``` + +#### چرا در برنامه نویسی پایتون، از Importهای متعددی استفاده می شود؟ + +برنامه های پایتون معمولا به چندین دستور `import` نیاز دارند. + +دلیل این موضوع این است که هسته ی زبانی پایتون عمداً کوچک نگه داشته شده تا یادگیری، نگهداری و توسعه ی آن آسان باشد. + +وقتی بخواهید کارهای جالب تر و پیشرفته تری با پایتون انجام دهید، تقریبا همیشه باید قابلیت های اضافی را با استفاده از `import` به برنامه اضافه کنید. + +#### پکیج ها(Packages) + +همانطور که پیشتر گفته شد، NumPy یک پکیج پایتونی است. + +پکیج ها ابزاری هستند که توسعه دهندگان برای سازمان دهی کدی که می خواهند به اشتراک بگذارند از آن ها استفاده می کنند. + +در واقع، یک **پکیج** چیزی نیست جز یک پوشه (دایرکتوری) که شامل موارد زیر است: + + +1. فایل هایی حاوی کد پایتون - که در اصطلاح پایتون به آن ها **ماژول** (modules)گفته می شود. + +1. گاهی ممکن است شامل کدهایی کامپایل شده باشد که پایتون توانایی دسترسی به آن ها را دارد (مثلا توابعی که از زبان هایی مثل C یا FORTRAN کامپایل شده اند) + +1. فایلی به نام `__init__.py` که مشخص می کند هنگامی که می نویسیم `import package_name` چه چیزی اجرا شود + + +می توانید با اجرای کد زیر در پایتون، محل فایل `__init__.py` مربوط به NumPY را بررسی کنید: + +```{code-block} ipython +:class: no-execute + +import numpy as np + +print(np.__file__) +``` + +#### زیرپکیج ها (Subpackages) + +به خط حاوی `ϵ_values = np.random.randn(100)` در کد توجه کنید. + +در این دستور، `np` به پکیج NumPY اشاره دارد، و `random` یک زیرپکیج از NumPY است. + +زیرپکیج ها در واقع همان پکیج هایی هستند که به صورت زیرپوشه(ساب دایرکتوری) درون یک پکیج دیگر قرار دارند. + +برای مثال اگر به ساختار پکیج NumPY نگاه کنید، می توانید پوشه ای به نام `random` را درون آن پیدا کنید. + +### وارد کردن مستقیم توابع یا متغیرها از یک پکیج + +کدی را که پیشتر دیدیم به خاطر بیاورید + +```{code-cell} python3 +import numpy as np + +np.sqrt(4) +``` +در اینجا روش دیگری برای دسترسی به تابع جذر در NumPY آمده است. + +```{code-cell} python3 +from numpy import sqrt + +sqrt(4) +``` +این روش هم کاملا درست کار می کند. + +مزیت این روش این است که اگر در کد خود از `sqrt` زیاد استفاده کنیم، در این صورت تایپ کمتری خواهیم داشت. + +اما عیب آن این است که در یک کد طولانی، ممکن است این دو خط با تعداد زیادی از خطوط دیگر از هم جدا شوند. +در این صورت خوانندگان اگر بخواهند بدانند که `sqrt` از کجا آمده، برای فهمیدن منبع آن دچار مشکل خواهند شد. + +### نمونه گیری تصادفی + +بیاید به کدی که نویز سفید رسم می کند برگردیم. سه خط بعد از دستور Import به این صورت هستند: + +```{code-cell} ipython +ϵ_values = np.random.randn(100) +plt.plot(ϵ_values) +plt.show() +``` +خط اول 100 عدد نرمال استاندارد (تقریبا) مستقل تولید می کند و آن ها را در متغیر `ϵ_values` ذخیره می کند. + +دو خط بعدی نمودار را رسم می کنند. + +در ادامه، روش های مختلفی را بررسی خواهیم کرد تا بتوانیم این نمودار را بهتر تنظیم و بهینه سازی کنیم. + +## روش های دیگر پیاده سازی برنامه + +بیایید چندتا نسخه ی جایگزین برای اولین برنامه مان بنویسیم؛ برنامه ای که مقادیر تصادفی مستقل و با توزیع یکسان (IID) از توزیع نرمال استاندارد را رسم می کرد. + +برنامه هایی که در ادامه می بینید، نسبت به نسخه اصلی کارایی کمتری دارند و از این نظر کمی غیرطبیعی هستند. اما آنها به ما کمک می کنند تا برخی از سینتکس ها و معانی مهم پایتون را در یک محیط آشنا نشان دهیم. + +### یک نسخه با حلقه تکرار For + +این نسخه حلقه های `For` و لیست های پایتون را نشان می دهد. + +```{code-cell} python3 +ts_length = 100 +ϵ_values = [] # empty list + +for i in range(ts_length): + e = np.random.randn() + ϵ_values.append(e) + +plt.plot(ϵ_values) +plt.show() +``` + +به طور خلاصه: + + +* خط اول طول موردنظر برای سری زمانی را تعیین می کند. + +* خط بعدی یک لیست خالی به نام `ϵ_values` ایجاد می کند که مقادیر تولید شده را در خود ذخیره خواهد کرد. + +* عبارت `# empty list` یک توضیح (کامنت) است و توسط مفسر پایتون نادیده گرفته می شود. + +* سه خط بعدی حلقه `For` هستند که به طور پیوسته یک عدد تصادفی جدید + + ϵ + t + + تولید می کنند و آنها را به انتهای لیست `ϵ_values` اضافه می کنند. + +* دو خط آخر نمودار را تولید کرده و به کاربر نمایش می دهند. + + +بیایید برخی از بخش های این کد را با جزئیات بیشتری بررسی کنیم. + +### لیست ها + +دستور `ϵ_values = []` را در نظر بگیرید، این دستور یک لیست خالی ایجاد می کند. + + لیست ها یک ساختار داده داخلی در پایتون هستند که برای گروه بندی مجموعه ای از اشیا استفاده می شوند. + + همچنین لیست ها ترتیب عناصر را حفظ می کنند و اجازه وجود داده های تکراری را نیز می دهند. + +برای مثال، این کد را امتحان کنید: + +```{code-cell} python3 +x = [10, 'foo', False] +type(x) +``` + +عنصر اول لیست X یک [عدد صحیح (integer)](https://en.wikipedia.org/wiki/Integer_(computer_science)) است، عنصر بعدی یک [رشته متنی (string)](https://en.wikipedia.org/wiki/String_(computer_science))، و عنصر سوم یک مقدار [بولین (Boolean value)](https://en.wikipedia.org/wiki/Boolean_data_type) می باشد. + +برای اضافه کردن مقدار به لیست میتوانیم از دستور `list_name.append(some_value)` استفاده کنیم. + +```{code-cell} python3 +x +``` + +```{code-cell} python3 +x.append(2.5) +x +``` +در اینجا `append()` یک **متد** **(method)** محسوب می شود. متد ها توابعی هستند که به یک شیء متصل می شوند. (در اینجا به لیست X متصل شده است) + +ما در ادامه به طور کامل با متدها آشنا خواهیم شد، اما برای درک اولیه: + + +* اشیاء پایتون مانند لیست ها، رشته ها و غیره همگی دارای متد هایی هستند که برای پردازش و تغییر داده های درون شیء استفاده می شوند. + +* هر نوع شیء در پایتون متدهای مخصوص به خود را دارد، برای مثال اشیاء رشته ای دارای [متدهای مخصوص رشته ها](https://docs.python.org/3/library/stdtypes.html#string-methods) هستند ،لیست ها [متد لیستی](https://docs.python.org/3/tutorial/datastructures.html#more-on-lists) دارند. + +یکی دیگر از متدهای کاربردی لیست، `pop()` است. + +```{code-cell} python3 +x +``` + +```{code-cell} python3 +x.pop() +``` + +```{code-cell} python3 +x +``` + +در پایتون، شماره گذاری عناصر لیست ها از صفر شروع می شود یا به عبارتی zero-based هستند.(همانند زبان های C، جاوا یا Go) به این معنا که اولین عنصر لیست با `x[0]` ارجاع داده می شود. + +```{code-cell} python3 +x[0] # first element of x +``` + +```{code-cell} python3 +x[1] # second element of x +``` + +### حلقه For + +حالا بیایید حلقه `for` از برنامه ای که قبلا نوشتیم را دوباره بررسی کنیم: + +```{code-cell} python3 +for i in range(ts_length): + e = np.random.randn() + ϵ_values.append(e) +``` + +در اینجا پایتون دو خط تورفته (indented lines) را به تعداد `ts_length` بار قبل از اینکه به ادامه کد برود، اجرا می کند. + +این دو خط به عنوان یک **بلوک کد (code block)** شناخته می شوند، چرا که "بلوک" کدی را تشکیل می دهد که در حلقه تکرار می شوند. + +برخلاف اکثر زبان های برنامه نویسی دیگر، پایتون محدوده بلوک را **فقط از روی تو رفتگی** تشخصی می دهد. + +در برنامه ای که ما نوشته ایم، کاهش تورفتگی پس از خط `ϵ_values.append(e)` ، به پایتون می فهماند که این خط نشان دهنده انتهای بلوک کد است. + +بعدا بیشتر درباره تورفتگی (indentation) صحبت خواهیم کرد؛ اما حالا بیایید به مثال دیگری از حلقه For بپردازیم: + +```{code-cell} python3 +animals = ['dog', 'cat', 'bird'] +for animal in animals: + print("The plural of " + animal + " is " + animal + "s") +``` + +این مثال به شفاف سازی نحوه عملکرد حلقه `for` کمک می کند: هنگامیکه یک حلقه با ساختار زیر اجرا می کنیم + +```{code-block} python3 +:class: no-execute + +for variable_name in sequence: + +``` + +مفسر پایتون مراحل زیر را انجام می دهد: + +* برای هر عنصر از دنباله `sequence`، نام متغیر `variable_name` را به آن عنصر متصل (blind) می کند و سپس بلوک کد را اجرا می کند. + +### یادداشتی درباره تورفتگی (Indentation) + +در بحث درباره حلقه `for` توضیح دادیم که بلوک های کدی که در حلقه تکرار می شوند با تورفتگی (indentation) مشخص می شوند. + +در واقع در پایتون، **همه** بلوک های کد (شامل آن هایی که درون حلقه ها، شروط if، تعریف توابع و موارد مشابه قرار دارند) با تورفتگی از یکدیگر متمایز می شوند. + +برخلاف اکثر زبان های برنامه نویسی دیگر، فاصله های سفید (whitespace) در کد پایتون مستقیما بر خروجی برنامه تاثیر می گذارند. + +یکبار که از آن اساده کنید، مزایای کار با آن برایتان آشکار می شود؛ زیرا این قابلیت: + +* تورفتگی های تمیز و منسجم ایجاد می کند و خوانایی را بهبود می بخشد. + +* بی نظمی هایی مانند براکت ها یا دستورات پایانی که در زبان های دیگر استفاده می شوند را حذف می کند. + +از سوی دیگر، استفاده صحیح از این قابلیت به کمی دقت نیاز دارد، پس بنابراین به یادداشته باشید: + + +* خط ماقبل شروع یک بلوک کد با یک دونقطه (:) پایان می یابد، همانند مثال های زیر : + + * `for i in range(10):` + * `if x > y:` + * `while x < 100:` + +* همه ی خطوط داخل یک بلوک کد باید مقدار یکسانی تورفتگی داشته باشند. + +* استاندارد پایتون برای تورفتگی، 4 فاصله (space) است و شما هم باید از همین مقدار استقاده کنید. + + +### حلقه های While + +حلقه `for` رایج ترین تکنیک برای تکرار در پایتون است. + +اما برای توضیح بهتر، اجازه دهید برنامه ای را که قبلا نوشتیم، تغییر دهیم و از یک حلقه `while` به جای آن استقاده کنیم. + +```{code-cell} python3 +ts_length = 100 +ϵ_values = [] +i = 0 +while i < ts_length: + e = np.random.randn() + ϵ_values.append(e) + i = i + 1 +plt.plot(ϵ_values) +plt.show() +``` + +حلقه while به اجرای بلوک کد (که با تورفتگی مشخص شده است)ادامه می دهد تا زمانی که شرط (```i < ts_length```) برقرار باشد. + +در این حالت، برنامه به افزودن مقادیر به لیست ```ϵ_values``` ادامه می دهد تا زمانی که ```i``` برابر با ```ts_length``` شود: + +```{code-cell} python3 +i == ts_length #the ending condition for the while loop +``` + +توجه داشته باشید که: + +* بلوک کد مربوط به حلقه `while` تنها با تورفتگی (indentation) مشخص می شود. + +* عبارت `i = i + 1` را می توان با `i += 1` جایگزین کرد. + +## یک کاربرد دیگر + +بیایید قبل از پرداختن به تمرینات، یک کاربرد دیگر را بررسی کنیم. + +در این مثال، موجودی یک حساب بانکی را در طول زمان رسم می کنیم. + +در این بازه زمانی هیچ برداشتی انجام نشده و تاریخ پایان دوره را با $T$ نشان می دهیم. + +موجودی اولیه + + b + 0 + + و نرخ بهره $r$ است. + +موجوی حساب از دوره $t$ به + t + + + 1 + طبق رابطه + + b + + t + + + 1 + + + = + ( + 1 + + + r + ) + + b + t + + به روزرسانی می شود. + +در کد زیر دنباله ی + + b + 0 + + , + + b + 1 + + , + + , + + b + T + + را تولید و رسم می کنیم. + +برای ذخیره این دنباله، به جای استفاده از یک لیست پایتون، از یک آرایه NumPy استفاده خواهیم کرد. + +```{code-cell} python3 +r = 0.025 # interest rate +T = 50 # end date +b = np.empty(T+1) # an empty NumPy array, to store all b_t +b[0] = 10 # initial balance + +for t in range(T): + b[t+1] = (1 + r) * b[t] + +plt.plot(b, label='bank balance') +plt.legend() +plt.show() +``` + +عبارت `b = np.empty(T+1)` حافظه ای برای ذخیره اعداد `T+1` (که اعداد اعشاری هستند) اختصاص می دهد. + +سپس این اعداد توسط حلقه ی `for` مقداردهی می شوند. + +اختصاص دادن حافظه در ابتدای کار کارآمدتر از استقاده از یک لیست پایتون و متد `append` است، چون در روش دوم، برنامه باید به طور مکرر از سیستم عامل درخواست فضای حافظه جدید کند. + +توجه کنید که ما به نمودار یک راهنما یا عنوان نمادها (legend) را اضافه کرده ایم ؛ قابلیتی که از شما خواسته خواهد شد در تمرینات استفاده کنید. + +## تمرینات + +اکنون به سراغ تمرین ها می رویم. مهم است که آنها را قبل از اینکه به سراغ درس بعدی بروید کامل کنید، زیرا این تمرین ها مفاهیم جدیدی را معرفی می کنند که در ادامه به آن ها نیاز خواهیم داشت. + +```{exercise-start} +:label: pbe_ex1 +``` + +اولین تکلیف شما شبیه سازی و رسم نمودار یک سری زمانی همبسته (correlated time series +) است. + +$$ +x_{t+1} = \alpha \, x_t + \epsilon_{t+1} +\quad \text{where} \quad +x_0 = 0 +\quad \text{and} \quad t = 0,\ldots,T +$$ + +فرض می شود که دنباله ی شوک ها + { + + ϵ + t + + } + مستقل و با توزیع یکسان(IID)، و دارای توزیع نرمال استاندارد باشد. + +در راه حل خود، دستورات import را تنها به موارد زیر محدود و تنها از کتابخانه های زیر استفاده کنید + +```{code-cell} python3 +import numpy as np +import matplotlib.pyplot as plt +``` + +مقادیر $T$ و $\alpha$ را به ترتیب $T=200$ و $\alpha = 0.9$ قرار دهید. + +```{exercise-end} +``` + +```{solution-start} pbe_ex1 +:class: dropdown +``` + +یک راه حل این است: + +```{code-cell} python3 +α = 0.9 +T = 200 +x = np.empty(T+1) +x[0] = 0 + +for t in range(T): + x[t+1] = α * x[t] + np.random.randn() + +plt.plot(x) +plt.show() +``` + +```{solution-end} +``` + +```{exercise-start} +:label: pbe_ex2 + +با استفاده از راه حل تمرین 1، یک سری زمانی شبیه سازی شده رسم کنید؛ یکی برای هر کدام از حالت های $\alpha=0$، $\alpha=0.8$ و $\alpha=0.98$. + +از یک حلقه `for` برای پیمایش مقادیر مختلف $\alpha$ استفاده کنید. + +اگر میتوانید، یک راهنما(legend) به نمودار اضافه کنید تا بتوان تفاوت بین این سه سری زمانی را تشخیص داد. + +```{hint} +:class: dropdown + +* اگر چندبار تابع `plot()` را قبل از فراخوانی `show()` اجرا کنید، تمام خطوط رسم شده در یک نمودار نمایش داده خواهند شد. + +* برای افزودن راهنما (legend)، توجه داشته باشید که اگر متغیر `var = 42` باشد، عبارت `f'foo{var}'` به رشته `'foo42'` تبدیل می شود. +``` + +```{exercise-end} +``` + + +```{solution-start} pbe_ex2 +:class: dropdown +``` + +```{code-cell} python3 +α_values = [0.0, 0.8, 0.98] +T = 200 +x = np.empty(T+1) + +for α in α_values: + x[0] = 0 + for t in range(T): + x[t+1] = α * x[t] + np.random.randn() + plt.plot(x, label=f'$\\alpha = {α}$') + +plt.legend() +plt.show() +``` + +```{note} +عبارت `f'$\\alpha = {α}$'` در راه حل، نمونه ای از اف-استرینگ ([f-String](https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings)) در پایتون است. این قابلیت به شما اجازه می دهد تا از `{}` برای قراردادن یک عبارت درون رشته استفاده کنید. + +عبارت داخل `{}` ارزیابی (محاسبه) می شود و نتیجه ی آن درون رشته جایگزین می گردد. +``` + +```{solution-end} +``` + +```{exercise-start} +:label: pbe_ex3 + +همانند تمرینات قبلی، سریزمانی را رسم کنید. + +$$ +x_{t+1} = \alpha \, |x_t| + \epsilon_{t+1} +\quad \text{where} \quad +x_0 = 0 +\quad \text{and} \quad t = 0,\ldots,T +$$ + +همانند قبل از $T=200$، $\alpha = 0.9$ و $\{\epsilon_t\}$ استفاده کنید. + +به صورت آنلاین جست و جو کنید و یک تابع پیدا کنید که بتوان برای محاسبه قدرمطلق + | + + x + t + + | + از آن استفاده کرد. +``` + +```{exercise-end} +``` + + +```{solution-start} pbe_ex3 +:class: dropdown +``` + +یک راه حل این است: + +```{code-cell} python3 +α = 0.9 +T = 200 +x = np.empty(T+1) +x[0] = 0 + +for t in range(T): + x[t+1] = α * np.abs(x[t]) + np.random.randn() + +plt.plot(x) +plt.show() +``` + +```{solution-end} +``` + +```{exercise-start} +:label: pbe_ex4 +``` + +یکی از جنبه های مهم، تقریبا در تمام زبان های برنامه نویسی، برنچینگ (branching) و شرط ها (conditions) هستند. + +در پایتون، شرط ها معمولا با استفاده از دستور if--else پیاده سازی می شوند. + +در اینجا یک مثال آورده شده است که برای هر عدد منفی در یک آرایه مقدار 1- را چاپ می کند و برای هر عدد صفر یا مثبت مقدار 1 را خروجی می دهد: + +```{code-cell} python3 +numbers = [-9, 2.3, -11, 0] +``` + +```{code-cell} python3 +for x in numbers: + if x < 0: + print(-1) + else: + print(1) +``` +اکنون یک راه حل جدید برای تمرین 3 بنویسید که در آن از هیچ تابع آماده ای برای محاسبه قدرمطلق استفاده نشده باشد. + +به جای استفاده از تابع آماده، از یک دستور شرطی if--else برای محاسبه ی قدرمطلق استفاده کنید. + +```{exercise-end} +``` + +```{solution-start} pbe_ex4 +:class: dropdown +``` + +یک روش این است: + +```{code-cell} python3 +α = 0.9 +T = 200 +x = np.empty(T+1) +x[0] = 0 + +for t in range(T): + if x[t] < 0: + abs_x = - x[t] + else: + abs_x = x[t] + x[t+1] = α * abs_x + np.random.randn() + +plt.plot(x) +plt.show() +``` + +در اینجا نیز روش کوتاه تری برای نوشتن همان برنامه وجود دارد: + +```{code-cell} python3 +α = 0.9 +T = 200 +x = np.empty(T+1) +x[0] = 0 + +for t in range(T): + abs_x = - x[t] if x[t] < 0 else x[t] + x[t+1] = α * abs_x + np.random.randn() + +plt.plot(x) +plt.show() +``` + +```{solution-end} +``` + + + +```{exercise-start} +:label: pbe_ex5 +``` + +این تمرین کمی سخت تر است و نیاز به فکر و برنامه ریزی دارد. + +تکلیف شما این است که با استفاده از روش [مونته کارلو](https://en.wikipedia.org/wiki/Monte_Carlo_method)، یک تقریب برای عدد + π + محاسبه کنید. + +به جز موارد زیر، از هیچ کتابخانه ای استفاده نکنید: + +```{code-cell} python3 +import numpy as np +``` + +```{hint} +:class: dropdown + +راهنماهای شما به شرح زیر است: + +* اگر $U$ یک متغیرتصادفی دوبعدی یکنواخت روی مربع واحد + ( + 0 + , + 1 + + ) + 2 + + باشد، آنگاه احتمال اینکه $U$ در زیرمجموعه ای $B$ از + ( + 0 + , + 1 + + ) + 2 + + قرار گیرد، برابر با مساحت ناحیه ی $B$ است. + +* اگر + + U + 1 + + , + + , + + U + n + + نسخه های مستقل و با توزیع یکسان از $U$ باشند، آنگاه با بزرگ شدن $n$، نسبت نقاطی که در ناحیه $B$ قرار میگیرند، به احتمال قرارگرفتن در $B$ همگرا می شوند. + +* برای یک دایره ، + $مساحت = \pi * شعاع^2$ + ``` + +```{exercise-end} +``` + + +```{solution-start} pbe_ex5 +:class: dropdown +``` + +دایره ای با قطر یک را درون یک مربع درنظر بگیرید. + +فرض کنید + A + مساحت آن باشد و + r + = + 1 + + / + + 2 + شعاع آن است. + +اگر مقدار + π + را بدانیم، میتوانیم مساحت + A + را از طریق رابطه + A + = + π + + r + 2 + + محاسبه کنیم. + +اما در اینجا هدف محاسبه ی + π + است، که میتوانیم از رابطه + π + = + A + + / + + + r + 2 + + به دست آوریم. + +خلاصه: اگر بتوانیم مساحت دایره ای با قطر 1 را تخمین بزنیم، آنگاه تقسیم کردن آن بر + + r + 2 + + = + ( + 1 + + / + + 2 + + ) + 2 + + = + 1 + + / + + 4 + تخمینی برای + π + به ما می دهد. + +ما این مساحت را با نمونه گیری از توزیع یکواخت دومتغیره و بررسی کسری از نقاط که درون دایره می افتند، تخمین میزنیم: + +```{code-cell} python3 +n = 1000000 # sample size for Monte Carlo simulation + +count = 0 +for i in range(n): + + # drawing random positions on the square + u, v = np.random.uniform(), np.random.uniform() + + # check whether the point falls within the boundary + # of the unit circle centred at (0.5,0.5) + d = np.sqrt((u - 0.5)**2 + (v - 0.5)**2) + + # if it falls within the inscribed circle, + # add it to the count + if d < 0.5: + count += 1 + +area_estimate = count / n + +print(area_estimate * 4) # dividing by radius**2 +``` + +```{solution-end} +``` \ No newline at end of file