Skip to content

Commit ccb6edd

Browse files
committed
Replace MathML with LaTeX syntax in python_by_example.md
- Convert 24 MathML blocks to clean LaTeX $...$ syntax - Use same LaTeX notation as bulk translations for consistency - Significantly reduces file size (210 lines removed, 34 added) - Improves readability and maintainability of math expressions Examples of conversions: - <math>...</math> epsilon_t → $\epsilon_t$ - <math>...</math> (0,1)^2 → $(0, 1)^2$ - <math>...</math> b_{t+1} = (1+r)b_t → $b_{t+1} = (1 + r) b_t$
1 parent 7977f90 commit ccb6edd

File tree

1 file changed

+34
-210
lines changed

1 file changed

+34
-210
lines changed

lectures/python_by_example.md

Lines changed: 34 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -23,48 +23,24 @@ kernelspec:
2323
پیش از شروع این درس، باید جلسه ی قبل را مطالعه کرده باشید.
2424

2525
## هدف:رسم یک فرآیند نویز سفید
26-
27-
فرض کنید می خواهیم یک فرآیند نویز سفید به صورت <math xmlns="http://www.w3.org/1998/Math/MathML">
28-
<msub>
29-
<mi>&#x3F5;</mi>
30-
<mn>0</mn>
31-
</msub>
32-
<mo>,</mo>
33-
<msub>
34-
<mi>&#x3F5;</mi>
35-
<mn>1</mn>
36-
</msub>
37-
<mo>,</mo>
38-
<mo>&#x2026;</mo>
39-
<mo>,</mo>
40-
<msub>
41-
<mi>&#x3F5;</mi>
42-
<mi>T</mi>
43-
</msub>
44-
</math> ، شبیه سازی و رسم کنیم، که در آن هر <math xmlns="http://www.w3.org/1998/Math/MathML">
45-
<msub>
46-
<mi>&#x3F5;</mi>
47-
<mi>t</mi>
48-
</msub>
49-
</math> یک مقدار مستقل و از توزیع نرمال استاندارد است.
26+
27+
فرض کنید می‌خواهیم فرآیند نویز سفید $\epsilon_0, \epsilon_1, \ldots, \epsilon_T$ را شبیه‌سازی و رسم کنیم، که در آن هر نقطه $\epsilon_t$ مستقل و نرمال استاندارد است.
5028

5129
به بیان دیگر، می خواهیم نمودارهایی همانند نمودار زیر تولید کنیم:
5230

53-
![نمودار فرآیند نویز سفید](images/python_by_example/test_program_1_updated.png)
31+
```{figure} _static/lecture_specific/python_by_example/test_program_1_updated.png
32+
:name: pbe_white_noise
33+
:figclass: auto
34+
:scale: 120
35+
```
5436

55-
(در اینجا <math xmlns="http://www.w3.org/1998/Math/MathML">
56-
<mi>t</mi>
57-
</math> محور افقی و <math xmlns="http://www.w3.org/1998/Math/MathML">
58-
<msub>
59-
<mi>&#x3F5;</mi>
60-
<mi>t</mi>
61-
</msub>
62-
</math> محور عمودی است.)
37+
(در اینجا $t$ روی محور افقی و $\epsilon_t$ روی محور عمودی است.)
6338

6439
ما این کار را به چند روش مختلف انجام خواهیم داد و هر بار نکات بیشتری درباره ی پایتون خواهیم آموخت.
6540

6641
## روش اول
6742

43+
(ourfirstprog)=
6844
در ادامه چند خط کد آمده که کاری را که تعریف کرده بودیم، انجام می دهد.
6945

7046
```{code-cell} ipython
@@ -77,6 +53,7 @@ plt.show()
7753
```
7854
بیایید این برنامه را تجزیه و تحلیل کنیم و ببینیم چگونه کار میکند.
7955

56+
(import)=
8057
### Imports
8158

8259
دو خط اول کد، قابلیت هایی را از کتابخانه های خارجی وارد می کند.
@@ -194,6 +171,7 @@ plt.show()
194171

195172
### یک نسخه با حلقه تکرار For
196173

174+
(firstloopprog)=
197175
این نسخه حلقه های `For` و لیست های پایتون را نشان می دهد.
198176

199177
```{code-cell} python3
@@ -217,18 +195,14 @@ plt.show()
217195

218196
* عبارت `# empty list` یک توضیح (کامنت) است و توسط مفسر پایتون نادیده گرفته می شود.
219197

220-
* سه خط بعدی حلقه `For` هستند که به طور پیوسته یک عدد تصادفی جدید <math xmlns="http://www.w3.org/1998/Math/MathML">
221-
<msub>
222-
<mi>&#x3F5;</mi>
223-
<mi>t</mi>
224-
</msub>
225-
</math> تولید می کنند و آنها را به انتهای لیست `ϵ_values` اضافه می کنند.
198+
* سه خط بعدی حلقه `for` هستند، که به طور مکرر یک عدد تصادفی جدید $\epsilon_t$ می‌کشد و آن را به انتهای لیست `ϵ_values` اضافه می‌کند.
226199

227200
* دو خط آخر نمودار را تولید کرده و به کاربر نمایش می دهند.
228201

229202

230203
بیایید برخی از بخش های این کد را با جزئیات بیشتری بررسی کنیم.
231204

205+
(lists_ref)=
232206
### لیست ها
233207

234208
دستور `ϵ_values = []` را در نظر بگیرید، این دستور یک لیست خالی ایجاد می کند.
@@ -355,7 +329,7 @@ for variable_name in sequence:
355329

356330
* استاندارد پایتون برای تورفتگی، 4 فاصله (space) است و شما هم باید از همین مقدار استقاده کنید.
357331

358-
332+
(whileloopprog)=
359333
### حلقه های While
360334

361335
حلقه `for` رایج ترین تکنیک برای تکرار در پایتون است.
@@ -396,56 +370,11 @@ i == ts_length #the ending condition for the while loop
396370

397371
در این بازه زمانی هیچ برداشتی انجام نشده و تاریخ پایان دوره را با $T$ نشان می دهیم.
398372

399-
موجودی اولیه <math xmlns="http://www.w3.org/1998/Math/MathML">
400-
<msub>
401-
<mi>b</mi>
402-
<mn>0</mn>
403-
</msub>
404-
</math> و نرخ بهره $r$ است.
405-
406-
موجوی حساب از دوره $t$ به <math xmlns="http://www.w3.org/1998/Math/MathML">
407-
<mi>t</mi>
408-
<mo>+</mo>
409-
<mn>1</mn>
410-
</math> طبق رابطه <math xmlns="http://www.w3.org/1998/Math/MathML">
411-
<msub>
412-
<mi>b</mi>
413-
<mrow data-mjx-texclass="ORD">
414-
<mi>t</mi>
415-
<mo>+</mo>
416-
<mn>1</mn>
417-
</mrow>
418-
</msub>
419-
<mo>=</mo>
420-
<mo stretchy="false">(</mo>
421-
<mn>1</mn>
422-
<mo>+</mo>
423-
<mi>r</mi>
424-
<mo stretchy="false">)</mo>
425-
<msub>
426-
<mi>b</mi>
427-
<mi>t</mi>
428-
</msub>
429-
</math> به روزرسانی می شود.
430-
431-
در کد زیر دنباله ی <math xmlns="http://www.w3.org/1998/Math/MathML">
432-
<msub>
433-
<mi>b</mi>
434-
<mn>0</mn>
435-
</msub>
436-
<mo>,</mo>
437-
<msub>
438-
<mi>b</mi>
439-
<mn>1</mn>
440-
</msub>
441-
<mo>,</mo>
442-
<mo>&#x2026;</mo>
443-
<mo>,</mo>
444-
<msub>
445-
<mi>b</mi>
446-
<mi>T</mi>
447-
</msub>
448-
</math> را تولید و رسم می کنیم.
373+
موجودی اولیه $b_0$ و نرخ بهره $r$ است.
374+
375+
موجودی از دوره $t$ به $t+1$ طبق $b_{t+1} = (1 + r) b_t$ به‌روزرسانی می‌شود.
376+
377+
در کد زیر، دنباله $b_0, b_1, \ldots, b_T$ را تولید و رسم می‌کنیم.
449378

450379
برای ذخیره این دنباله، به جای استفاده از یک لیست پایتون، از یک آرایه NumPy استفاده خواهیم کرد.
451380

@@ -489,14 +418,7 @@ x_0 = 0
489418
\quad \text{and} \quad t = 0,\ldots,T
490419
$$
491420

492-
فرض می شود که دنباله ی شوک ها <math xmlns="http://www.w3.org/1998/Math/MathML">
493-
<mo fence="false" stretchy="false">{</mo>
494-
<msub>
495-
<mi>&#x3F5;</mi>
496-
<mi>t</mi>
497-
</msub>
498-
<mo fence="false" stretchy="false">}</mo>
499-
</math> مستقل و با توزیع یکسان(IID)، و دارای توزیع نرمال استاندارد باشد.
421+
فرض می‌شود دنباله شوک‌های $\{\epsilon_t\}$ IID و نرمال استاندارد باشد.
500422

501423
در راه حل خود، دستورات import را تنها به موارد زیر محدود و تنها از کتابخانه های زیر استفاده کنید
502424

@@ -595,14 +517,7 @@ $$
595517
596518
همانند قبل از $T=200$، $\alpha = 0.9$ و $\{\epsilon_t\}$ استفاده کنید.
597519
598-
به صورت آنلاین جست و جو کنید و یک تابع پیدا کنید که بتوان برای محاسبه قدرمطلق <math xmlns="http://www.w3.org/1998/Math/MathML">
599-
<mo stretchy="false">|</mo>
600-
<msub>
601-
<mi>x</mi>
602-
<mi>t</mi>
603-
</msub>
604-
<mo stretchy="false">|</mo>
605-
</math> از آن استفاده کرد.
520+
آنلاین برای تابعی که می‌تواند برای محاسبه قدر مطلق $|x_t|$ استفاده شود جستجو کنید.
606521
```
607522

608523
```{exercise-end}
@@ -709,9 +624,7 @@ plt.show()
709624

710625
این تمرین کمی سخت تر است و نیاز به فکر و برنامه ریزی دارد.
711626

712-
تکلیف شما این است که با استفاده از روش [مونته کارلو](https://en.wikipedia.org/wiki/Monte_Carlo_method)، یک تقریب برای عدد <math xmlns="http://www.w3.org/1998/Math/MathML">
713-
<mi>&#x3C0;</mi>
714-
</math> محاسبه کنید.
627+
وظیفه محاسبه تقریبی برای $\pi$ با استفاده از روش [مونته کارلو](https://en.wikipedia.org/wiki/Monte_Carlo_method) است.
715628

716629
به جز موارد زیر، از هیچ کتابخانه ای استفاده نکنید:
717630

@@ -724,39 +637,9 @@ import numpy as np
724637
725638
راهنماهای شما به شرح زیر است:
726639
727-
* اگر $U$ یک متغیرتصادفی دوبعدی یکنواخت روی مربع واحد <math xmlns="http://www.w3.org/1998/Math/MathML">
728-
<mo stretchy="false">(</mo>
729-
<mn>0</mn>
730-
<mo>,</mo>
731-
<mn>1</mn>
732-
<msup>
733-
<mo stretchy="false">)</mo>
734-
<mn>2</mn>
735-
</msup>
736-
</math> باشد، آنگاه احتمال اینکه $U$ در زیرمجموعه ای $B$ از <math xmlns="http://www.w3.org/1998/Math/MathML">
737-
<mo stretchy="false">(</mo>
738-
<mn>0</mn>
739-
<mo>,</mo>
740-
<mn>1</mn>
741-
<msup>
742-
<mo stretchy="false">)</mo>
743-
<mn>2</mn>
744-
</msup>
745-
</math> قرار گیرد، برابر با مساحت ناحیه ی $B$ است.
746-
747-
* اگر <math xmlns="http://www.w3.org/1998/Math/MathML">
748-
<msub>
749-
<mi>U</mi>
750-
<mn>1</mn>
751-
</msub>
752-
<mo>,</mo>
753-
<mo>&#x2026;</mo>
754-
<mo>,</mo>
755-
<msub>
756-
<mi>U</mi>
757-
<mi>n</mi>
758-
</msub>
759-
</math> نسخه های مستقل و با توزیع یکسان از $U$ باشند، آنگاه با بزرگ شدن $n$، نسبت نقاطی که در ناحیه $B$ قرار میگیرند، به احتمال قرارگرفتن در $B$ همگرا می شوند.
640+
* اگر $U$ یک متغیر تصادفی یکنواخت دوبعدی روی مربع واحد $(0, 1)^2$ باشد، احتمال اینکه $U$ در زیرمجموعه $B$ از $(0,1)^2$ قرار بگیرد برابر با مساحت $B$ است.
641+
642+
* اگر $U_1,\ldots,U_n$ کپی‌های IID از $U$ باشند، با بزرگ شدن $n$، کسری که در $B$ قرار می‌گیرد، به احتمال قرار گرفتن در $B$ همگرا می‌شود.
760643
761644
* برای یک دایره ،
762645
$مساحت = \pi * شعاع^2$
@@ -770,74 +653,15 @@ import numpy as np
770653
:class: dropdown
771654
```
772655

773-
دایره ای با قطر یک را درون یک مربع درنظر بگیرید.
774-
775-
فرض کنید <math xmlns="http://www.w3.org/1998/Math/MathML">
776-
<mi>A</mi>
777-
</math> مساحت آن باشد و <math xmlns="http://www.w3.org/1998/Math/MathML">
778-
<mi>r</mi>
779-
<mo>=</mo>
780-
<mn>1</mn>
781-
<mrow data-mjx-texclass="ORD">
782-
<mo>/</mo>
783-
</mrow>
784-
<mn>2</mn>
785-
</math> شعاع آن است.
786-
787-
اگر مقدار <math xmlns="http://www.w3.org/1998/Math/MathML">
788-
<mi>&#x3C0;</mi>
789-
</math> را بدانیم، میتوانیم مساحت <math xmlns="http://www.w3.org/1998/Math/MathML">
790-
<mi>A</mi>
791-
</math> را از طریق رابطه <math xmlns="http://www.w3.org/1998/Math/MathML">
792-
<mi>A</mi>
793-
<mo>=</mo>
794-
<mi>&#x3C0;</mi>
795-
<msup>
796-
<mi>r</mi>
797-
<mn>2</mn>
798-
</msup>
799-
</math> محاسبه کنیم.
800-
801-
اما در اینجا هدف محاسبه ی <math xmlns="http://www.w3.org/1998/Math/MathML">
802-
<mi>&#x3C0;</mi>
803-
</math> است، که میتوانیم از رابطه <math xmlns="http://www.w3.org/1998/Math/MathML">
804-
<mi>&#x3C0;</mi>
805-
<mo>=</mo>
806-
<mi>A</mi>
807-
<mrow data-mjx-texclass="ORD">
808-
<mo>/</mo>
809-
</mrow>
810-
<msup>
811-
<mi>r</mi>
812-
<mn>2</mn>
813-
</msup>
814-
</math> به دست آوریم.
815-
816-
خلاصه: اگر بتوانیم مساحت دایره ای با قطر 1 را تخمین بزنیم، آنگاه تقسیم کردن آن بر <math xmlns="http://www.w3.org/1998/Math/MathML">
817-
<msup>
818-
<mi>r</mi>
819-
<mn>2</mn>
820-
</msup>
821-
<mo>=</mo>
822-
<mo stretchy="false">(</mo>
823-
<mn>1</mn>
824-
<mrow data-mjx-texclass="ORD">
825-
<mo>/</mo>
826-
</mrow>
827-
<mn>2</mn>
828-
<msup>
829-
<mo stretchy="false">)</mo>
830-
<mn>2</mn>
831-
</msup>
832-
<mo>=</mo>
833-
<mn>1</mn>
834-
<mrow data-mjx-texclass="ORD">
835-
<mo>/</mo>
836-
</mrow>
837-
<mn>4</mn>
838-
</math> تخمینی برای <math xmlns="http://www.w3.org/1998/Math/MathML">
839-
<mi>&#x3C0;</mi>
840-
</math> به ما می دهد.
656+
دایره‌ای با قطر یک را درون یک مربع درنظر بگیرید.
657+
658+
فرض کنید $A$ مساحت آن و $r=1/2$ شعاع آن باشد.
659+
660+
اگر $\pi$ را بدانیم، می‌توانیم $A$ را از طریق $A = \pi r^2$ محاسبه کنیم.
661+
662+
اما در اینجا نکته محاسبه $\pi$ است که می‌توانیم با $\pi = A / r^2$ انجام دهیم.
663+
664+
خلاصه: اگر بتوانیم مساحت دایره‌ای با قطر 1 را تخمین بزنیم، تقسیم بر $r^2 = (1/2)^2 = 1/4$ تخمینی از $\pi$ می‌دهد.
841665

842666
ما این مساحت را با نمونه گیری از توزیع یکواخت دومتغیره و بررسی کسری از نقاط که درون دایره می افتند، تخمین میزنیم:
843667

0 commit comments

Comments
 (0)