در این مطلب، ویدئو استفاده از SciPy و SymPy در پایتون با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:26:17
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:15,500 –> 00:00:21,450
به یازدهمین سخنرانی در مورد
ریاضیات محاسباتی با SageMath خوش آمدید. در این سخنرانی،
2
00:00:21,450 –> 00:00:31,270
دو کتابخانه پایتون به نامهای
SciPy و SymPy را بررسی خواهیم کرد. این دو کتابخانه زمانی
3
00:00:31,270 –> 00:00:41,090
بسیار مهم و مفید هستند که بخواهیم
از پایتون برای کشف
4
00:00:41,090 –> 00:00:51,260
مفاهیم ریاضی استفاده کنیم. بنابراین، بیایید ببینیم SciPy چیست؟
SciPy یک کتابخانه پایتون است که از محاسبات علمی استفاده می کند
5
00:00:51,260 –> 00:01:00,050
. این شامل ماژولهایی برای بهینهسازی،
جبر خطی، درون یابی، ادغام،
6
00:01:00,050 –> 00:01:08,720
توابع ویژه، تبدیل سریع فوریه،
پردازش سیگنال و تصویر، حلکننده ODE
7
00:01:08,720 –> 00:01:18,399
و سایر کارهای رایج در علم
و مهندسی است. بنابراین، اجازه دهید از SciPy
8
00:01:18,399 –> 00:01:26,530
برای انجام برخی محاسبات عددی استفاده کنیم.
بنابراین، فرض کنید میخواهیم یک ریشه از این
9
00:01:26,530 –> 00:01:35,430
معادله f(x) برابر با 0 یا صفر f(x) پیدا کنیم.
اجازه دهید با یک مثال شروع کنیم؛ فرض کنید
10
00:01:35,430 –> 00:01:44,439
یک تابع f(x) داریم که x مکعب منهای 2 x
مربع منهای 5 x به اضافه 2 است. از آنجایی که این یک درجه دوم است،
11
00:01:44,439 –> 00:01:53,850
یک صفر واقعی خواهد داشت.
بنابراین، اجازه دهید این را اجرا کنیم، و سپس اجازه دهید ابتدا
12
00:01:53,850 –> 00:02:02,960
نمودار این تابع را رسم کنیم. بنابراین، ما از
pyplot از matplotlib استفاده خواهیم کرد و اجازه دهید نمودار آن را
13
00:02:02,960 –> 00:02:12,650
بین منهای 2 و 4 رسم کنیم. بنابراین،
ابتدا مقادیر x را بین منهای 2
14
00:02:12,650 –> 00:02:20,940
و 4 ایجاد می کنیم. بگذارید بگوییم 100 نقطه وجود دارد
و سپس نمودار آن را رسم کنیم.
15
00:02:20,940 –> 00:02:29,090
بنابراین، اینگونه است که نمودار به نظر می رسد و ببینید.
ما شبکه هایی قرار داده ایم تا بتوانیم ریشه های آن را پیدا کنیم
16
00:02:29,090 –> 00:02:35,590
. بنابراین، یک ریشه بین منفی 2
و 1 در جایی در اینجا وجود دارد. همچنین یک ریشه
17
00:02:35,590 –> 00:02:44,410
بین 0 و 1 وجود دارد و یک ریشه بین
3 و 4 وجود دارد. بنابراین، ما می خواهیم این ریشه ها را پیدا کنیم.
18
00:02:44,410 –> 00:02:54,120
خب چطور باید انجامش بدیم؟ بنابراین در داخل SciPy
ماژول دیگری به نام optimize وجود دارد و در داخل
19
00:02:54,120 –> 00:03:02,120
این optimize می توانید چندین تابع
مربوط به یافتن صفرها را پیدا کنید، همچنین مربوط به
20
00:03:02,120 –> 00:03:14,200
یافتن بهینه سازی یا حداکثر/حداقل
a، تابعی از 1 و 2 متغیر و استفاده از متغیرهای
21
00:03:14,200 –> 00:03:21,200
مختلف مواد و روش ها. بنابراین، اجازه دهید ابتدا
این بهینه سازی را وارد کنیم. اگر سعی می کنید
22
00:03:21,200 –> 00:03:27,959
در این بهینه سازی به کمک نگاه کنید.
بنابراین، اجازه دهید از Optimize Dot tab استفاده کنیم، اجازه دهید
23
00:03:27,959 –> 00:03:34,880
برگه را فشار دهیم، و سپس می توانید در اینجا ببینید که چندین
گزینه در دسترس است. در صورتی
24
00:03:34,880 –> 00:03:40,860
که دوره بهینه سازی را گذرانده باشید، می
توانید برخی از روش ها را بشناسید. بنابراین، در اینجا
25
00:03:40,860 –> 00:03:46,300
شما نیز، منحنی، منحنی برازش
منحنی دارید.
26
00:03:46,300 –> 00:03:53,250
و چندین روش وجود دارد، از جمله یافتن
حداقل/حداکثر. شما می توانید، همچنین می توانید از
27
00:03:53,250 –> 00:04:01,080
آن برای حل مسئله برنامه نویسی خطی استفاده کنید،
و همچنین روشی برای یافتن ریشه ها داریم. این
28
00:04:01,080 –> 00:04:06,120
می تواند ریشه یک تابع متغیر و
همچنین تابع چند متغیره را پیدا کند. اما در این
29
00:04:06,120 –> 00:04:17,930
مورد، شما یک صفر نیز دارید که می تواند
صفرها را پیدا کند. اما یک تابع وجود دارد.
30
00:04:17,930 –> 00:04:24,950
بیایید ببینیم، یک تابع به نام bisect وجود دارد
که از روش bisection استفاده می کند. بنابراین، اجازه
31
00:04:24,950 –> 00:04:33,550
دهید از این دو بخش استفاده کنیم. بنابراین، اجازه دهید بگوییم،
دو نقطه f را بهینه کنید، و باید
32
00:04:33,550 –> 00:04:39,290
بازهای را که میخواهیم یک ریشه پیدا کنیم، ذکر کنید،
به طوری که 3 کاما 4 باشد.
33
00:04:39,290 –> 00:04:45,470
بنابراین، یک ریشه بین 3 و 4 پیدا میکند. پس
اجازه دهید ما این را اجرا کن بنابراین، ریشه، در این مورد
34
00:04:45,470 –> 00:04:58,400
، 3.3223404 است، و به همین ترتیب، درست است؟ بنابراین، در صورتی
که یک بازه می دهیم، اجازه دهید بگوییم یک
35
00:04:58,400 –> 00:05:10,919
فاصله دیگر. مثلاً
بگوییم فاصلهای را که منهای 2 تا
36
00:05:10,919 –> 00:05:21,139
منهای 1 است ذکر کنیم. سپس در این بازه ریشه پیدا
می کند. بنابراین، اجازه دهید برای این ریشه صدا کنیم، بله،
37
00:05:21,139 –> 00:05:32,539
و اگر من، اگر شما، اجازه دهید بگوییم، فاصله بین
0 و 1. سپس شما یک ریشه در، در،
38
00:05:32,539 –> 00:05:39,240
در بازه 0 تا 1 دریافت خواهید کرد
39
00:05:39,240 –> 00:05:45,160
. بنابراین، به عنوان مثال،
اجازه دهید بگوییم، بین 4 و یا اجازه دهید
40
00:05:45,160 –> 00:05:54,389
بگوییم 5، و 7، و سپس اگر این را اجرا کنید،
5 کاما 7. سپس به شما خطای مقدار می دهد.
41
00:05:54,389 –> 00:06:00,139
چی میگه؟ می گوید که f(a) و f(b)
باید علائم متفاوتی داشته باشند. در این حالت بین
42
00:06:00,139 –> 00:06:10,990
5 تا 7 تابع مثبت است بنابراین
ریشه ندارد. بنابراین، خوب، اینگونه است که
43
00:06:10,990 –> 00:06:16,370
می توانید از bisect برای پیدا
کردن ریشه با استفاده از روش bisection استفاده کنید.
44
00:06:16,370 –> 00:06:23,229
اما شما همچنین می توانید ریشه را با استفاده از روش secant پیدا کنید.
بنابراین در داخل optimize تابعی به نام
45
00:06:23,229 –> 00:06:29,700
نیوتن وجود دارد و در صورتی که فقط مقدار تابع
و حدس اولیه را وارد کنید، از
46
00:06:29,700 –> 00:06:35,300
روش secant برای یافتن ریشه آن استفاده میکند و
میتوانید مقدار حدس متفاوتی بدهید. مثلاً
47
00:06:35,300 –> 00:06:41,010
اگر بگویم 2.5 یا بگویم منهای 2.5
ریشه منفی پیدا می کند.
48
00:06:41,010 –> 00:06:48,180
یا اگر بگویم بیایید بگوییم 0 امتیاز منفی
0.5 ریشه مثبت پیدا می کند. بنابراین، با
49
00:06:48,180 –> 00:06:55,430
دادن مقادیر حدس اولیه مختلف، می
توانید ریشه های مختلف را پیدا کنید، درست است؟
50
00:06:55,430 –> 00:07:02,139
اگر مشتق این تابع را در داخل
نیوتن عرضه کنید، اگر مشتق
51
00:07:02,139 –> 00:07:05,470
تابع f اول را نیز تهیه کنید.
بنابراین، در این مورد، ما
52
00:07:05,470 –> 00:07:11,889
مشتق تابعی را ارائه می کنیم که f اول برابر
است، از نماد لامبدا، لامبدا x استفاده می کنیم،
53
00:07:11,889 –> 00:07:18,360
و این، خروجی 3 x مربع منهای 4
x منهای 5 است، که مشتق این است. عملکرد.
54
00:07:18,360 –> 00:07:22,539
بنابراین، تابع x مکعب منهای 2 x مربع منهای
5 x به علاوه 2 بود.
55
00:07:22,539 –> 00:07:29,699
بنابراین، مشتق آن 3 x مربع منهای
4 x منهای 5 خواهد بود. بنابراین، این همان چیزی است که ما عرضه می کنیم.
56
00:07:29,699 –> 00:07:35,650
بنابراین، اگر مشتق این تابع را ارائه کنیم،
یک ریشه نیز پیدا خواهد کرد. اما
57
00:07:35,650 –> 00:07:42,860
اکنون از روش نیوتن رافسون استفاده خواهد کرد، درست است؟ شما
می توانید، می توانید با مقادیر مختلف شروع کنید
58
00:07:42,860 –> 00:07:51,860
، مثلاً اگر بگویم 5.5; سپس
ریشه بین 3 و 4 را پیدا می کند و به همین ترتیب، خوب؟
59
00:07:51,860 –> 00:08:03,180
بنابراین، اجازه دهید نگاه کنیم که چگونه میتوانیم درون یابی را
با استفاده از SciPy انجام دهیم؟ بنابراین، اجازه دهید ابتدا وارد کردن
60
00:08:03,180 –> 00:08:11,650
این ماژول SciPy را شروع کنیم، و در داخل این ماژول SciPy
، یک ماژول به نام interpolate وجود دارد.
61
00:08:11,650 –> 00:08:18,740
بنابراین، اگر سعی کنید به برخی از توابع
موجود، برخی از روش هایی که در
62
00:08:18,740 –> 00:08:27,860
داخل ماژول interpolate وجود دارد، نگاه کنید. خواهید دید که
درون یابی یک بعدی
63
00:08:27,860 –> 00:08:35,328
، دو بعدی دارد، درون یابی لاگرانژی نیز دارد،
و موارد دیگر، از جمله چند بعدی،
64
00:08:35,328 –> 00:08:42,078
درست است؟
بنابراین، شما می توانید این را بیشتر بررسی کنید. اگر
65
00:08:42,078 –> 00:08:48,180
درون یابی را با جزئیات بیشتری یاد گرفته باشید،
می توانید از آن استفاده کنید، خوب؟
66
00:08:48,180 –> 00:08:56,410
بنابراین، اجازه دهید به یک مثال ساده نگاه کنیم. بنابراین، از
SciPy interpolate، اجازه دهید interpld را وارد کنیم
67
00:08:56,410 –> 00:09:02,230
که درون یابی یک بعدی است. در مرحله بعد،
اجازه دهید به مجموعه ای از نکات نگاه کنیم.
68
00:09:02,230 –> 00:09:09,410
بنابراین، ما مجموعه ای از نقاط x کاما (xi،
yi) را می گیریم و مختصات x 0، 1، 3، 4، 5،
69
00:09:09,410 –> 00:09:18,350
7، 8 هستند. مختصات y 0، 4، 3، 2، 1، منهای
1، 0 هستند و اجازه دهید نمودار این توابع
70
00:09:18,350 –> 00:09:22,510
را رسم کنیم، اجازه دهید این نقاط، نقاط پراکنده را رسم کنیم.
بنابراین، به نظر می رسد این است. اکنون، در داخل
71
00:09:22,510 –> 00:09:27,670
این، میخواهیم یک چند جملهای درونیابی تکبعدی برازش کنیم
.
72
00:09:27,670 –> 00:09:33,220
بنابراین، در واقع مجموعه ای از خط مستقیم خواهد
بود، چیزی شبیه به هم پیوستن این نقاط.
73
00:09:33,220 –> 00:09:41,250
بنابراین، بگذارید ببینیم. بنابراین، چه خواهیم کرد؟ ما می
گوییم interp1d، و به آنها می دهیم،
74
00:09:41,250 –> 00:09:46,070
مختصات x و مختصات y را ذکر می کنیم.
بنابراین، و ما این را در p ذخیره می کنیم. اکنون، می توانید
75
00:09:46,070 –> 00:09:50,970
به آنچه که باید p باشد نگاه کنید. بنابراین، برای مثال، اگر
مقدار p را در نقاط مختلف ارزیابی کنم، اجازه
76
00:09:50,970 –> 00:09:59,310
دهید فقط بگوییم، p در 2.5، p در 2، p در 5. بنابراین،
2 و 5 در مختصات x هستند.
77
00:09:59,310 –> 00:10:06,940
2 وجود ندارد، اما 5 وجود دارد.
بنابراین، در 5، مقدار 1 است، و در 2،
78
00:10:06,940 –> 00:10:17,100
مقدار 3.5 است، در 2.5، مقدار 3.25 است، و به
شما یک مقدار به عنوان یک آرایه، آرایه یک بعدی می دهد،
79
00:10:17,100 –> 00:10:24,220
درست است؟ بنابراین، می توانید ارزیابی کنید، برای مثال
، اگر بگویم مقدار p در 10 چقدر است
80
00:10:24,220 –> 00:10:32,110
. سپس به شما خطا می دهد، زیرا
این 10 خارج از این محدوده است، محدوده x، در
81
00:10:32,110 –> 00:10:37,070
این مورد، بین 0 تا 8 است.
بنابراین، هر چیزی که خارج از این باشد، نمی
82
00:10:37,070 –> 00:10:47,579
تواند ارزیابی شود، درست است؟ بنابراین، اجازه دهید من
این را حذف کنم، درست است، و شما همچنین می توانید نمودار آن را رسم کنید
83
00:10:47,579 –> 00:10:54,560
، چند جمله ای درون یابی برازش
بعد یک. بنابراین، اجازه دهید مقادیر x را
84
00:10:54,560 –> 00:11:04,330
بین 0 تا 8، با طول گام 0.1 ارائه دهیم. مقدار y
p در جدید است، xnew که مقادیر x است،
85
00:11:04,330 –> 00:11:11,190
و سپس اجازه دهید نمودار آن را همراه
با نقاط و خطی که به آنها می پیوندد رسم کنیم.
86
00:11:11,190 –> 00:11:20,200
بنابراین، چند جمله ای درون یابی به این صورت
است. می توانید یک چند جمله ای درون یابی درجه بالاتری بگیرید
87
00:11:20,200 –> 00:11:26,830
و سپس سعی کنید نمودار آن
و سپس مجموعه ای از نقاط را رسم کنید. ما این کار را خواهیم کرد،
88
00:11:26,830 –> 00:11:32,130
نمونه های بیشتری از این نوع را با استفاده از SageMath انجام خواهیم داد،
درست است؟
89
00:11:32,130 –> 00:11:41,140
حال، اجازه دهید نمونه دیگری از برازش منحنی را بررسی کنیم
. بنابراین، فرض کنید ما مجموعه ای از نکات را داریم.
90
00:11:41,140 –> 00:11:48,060
اجازه دهید به مجموعه ای از نکات نگاه کنیم.
اینها مجموعه ای از نقاط، برخی از نقاط تصادفی، حدود
91
00:11:48,060 –> 00:11:54,880
50 نقطه تصادفی، و در داخل این به،
مجموعه ای از نقاط است که ما می خواهیم بگوییم،
92
00:11:54,880 –> 00:12:00,540
برخی از منحنی ها را جا می دهیم.
بنابراین، ابتدا اجازه دهید تناسب زیر خط منحنی
93
00:12:00,540 –> 00:12:12,580
را از SciPy optimize وارد کنیم، و سپس اجازه
دهید تابعی را که میخواهیم متناسب کنیم، ایجاد کنیم. بنابراین، در
94
00:12:12,580 –> 00:12:19,720
این مورد، اجازه دهید بگوییم، میخواهیم تابعی را
که sin b x است، a ضربدر sin b x قرار دهیم.
95
00:12:19,720 –> 00:12:25,480
بنابراین، ما میخواهیم
مقدار a و b را پیدا کنیم که به بهترین وجه در این مجموعه از
96
00:12:25,480 –> 00:12:33,660
نقاط قرار میگیرد. بنابراین، ابتدا این تابع تست را تعریف میکنیم
یا میتوانید آن را بهعنوان مدلی
97
00:12:33,660 –> 00:12:37,950
که میخواهید برازش کنید، نام ببرید و سپس چگونه از
آن استفاده کنیم.
98
00:12:37,950 –> 00:12:44,870
بنابراین، از برازش زیرخط منحنی استفاده کنید، و
تابع تست، و سپس مقادیر x، و
99
00:12:44,870 –> 00:12:50,180
مقادیر y دادهها را بدهید، و همچنین باید
نقطه اولیه را بدهید. از آنجایی که این یک
100
00:12:50,180 –> 00:12:55,220
روش عددی و عددی است، باید ذکر کنید که
مقادیر حدس اولیه برای این پارامترهای
101
00:12:55,220 –> 00:12:59,839
a و b چیست.
بنابراین، دو چیز را برمی گرداند. یک،
102
00:12:59,839 –> 00:13:06,590
مقدار تقریبی این پارامترهای a و
b را برمیگرداند، و همچنین ماتریس کوواریانس
103
00:13:06,590 –> 00:13:16,310
این پارامتر a و b را برمیگرداند، نوعی خطای
خطا، درست است؟ بنابراین، اجازه دهید این را اجرا کنیم، و
104
00:13:16,310 –> 00:13:23,390
مقدار a را 3.1362، مقدار b
را 2.035 می یابد.
105
00:13:23,390 –> 00:13:30,100
و همچنین می توانید ماتریس کوواریانس را چاپ کنید.
بنابراین این ماتریس کوواریانس a و
106
00:13:30,100 –> 00:13:37,880
b است و سپس می توانید مجموعه نقاط را
همراه با این منحنی برازش رسم کنید. بنابراین، این روشی است
107
00:13:37,880 –> 00:13:42,920
که می توانید انجام دهید. بنابراین، شما فقط
با استفاده از y برازش برابر است با تابع تست،
108
00:13:42,920 –> 00:13:50,070
و x داده، y داده، و ضریب.
شما ذکر می کنید ضریب 0 است که مقدار
109
00:13:50,070 –> 00:13:56,820
“a” است، ضریب 1 که مقدار “b”
است، و سپس نمودار پراکندگی، و سپس این
110
00:13:56,820 –> 00:14:01,170
رنگ قرمز است، درست است؟
بنابراین، اینگونه است که می توانید یک منحنی را تنظیم کنید. به
111
00:14:01,170 –> 00:14:08,470
جای a به b به گناه b x;
می توانید برای مثال از quadratic یا هر
112
00:14:08,470 –> 00:14:14,040
تابع دیگری استفاده کنید. البته،