استفاده از این اسکریپت بسیار ساده است. چند مورد را ببینید: ( می توانید آن را به path اضافه کنید تا همیشه داشته باشیدش)
به خاطر داشته باشید که هر بار که این تابع را صدا می زنید یک HTTPS GET انجام می شود که البته زمانبر است. پس در صورتی که خارج از ایران هستید یا نیاز شدید دارید می توانید از آن استفاده کنید.
—-------------------------------------------------------------
[1] https://en.wikipedia.org/wiki/Mersenne_Twister
[2] Pironio, Stefano, Antonio Acín, Serge Massar, A. Boyer de La Giroday, Dzimitry N. Matsukevich, Peter Maunz, Steven Olmschenk et al. "Random numbers certified by Bell’s theorem." Nature 464, no. 7291 (2010): 1021-1024.
[3] https://www.computerworld.com/article/2539986/security0/microsoft-confirms-that-xp-contains-random-number-generator-bug.html
@MatlabTips
#For_beginner
#Rand #Truerand #Cryptography
نویسنده:(#A_2)
>>truerand %create a true random integer from 1 to 100
ans =
60
>> truerand(3,6) % create a matrix of 3x6 of true random numbers
ans =
77 67 30 25 94 86
51 25 76 86 4 20
26 95 75 57 22 48
به خاطر داشته باشید که هر بار که این تابع را صدا می زنید یک HTTPS GET انجام می شود که البته زمانبر است. پس در صورتی که خارج از ایران هستید یا نیاز شدید دارید می توانید از آن استفاده کنید.
—-------------------------------------------------------------
[1] https://en.wikipedia.org/wiki/Mersenne_Twister
[2] Pironio, Stefano, Antonio Acín, Serge Massar, A. Boyer de La Giroday, Dzimitry N. Matsukevich, Peter Maunz, Steven Olmschenk et al. "Random numbers certified by Bell’s theorem." Nature 464, no. 7291 (2010): 1021-1024.
[3] https://www.computerworld.com/article/2539986/security0/microsoft-confirms-that-xp-contains-random-number-generator-bug.html
@MatlabTips
#For_beginner
#Rand #Truerand #Cryptography
نویسنده:(#A_2)
Wikipedia
Mersenne Twister
pseudorandom number generator whose period is a Mersenne prime
🔵درباره dsolve و ode🔵
سطح پیچیدگی:🌓🌑🌑🌑🌑
پیشنیاز: (ندارد)
برای:(همه)
📝هدف از این پست: (این پست کاربرد و تفاوت دو دستور فوق العاده کاربردی در حوزه معادلات دیفرانسیل در متلب بیان میکند)
🔵dsolve🔵
دستور dsolve مربوط به کتابخانه سمبولیک ریاضی متلب است. پس نتیجتا خروجی هم بصورت سمبولیک خواهد بود. سمبولیک بودن چیزی جدای نمایشی مانند float-point یا نمایش های عددی دیگر است. تو حالت سمبولیک بیشتر با نماد سر و کار داریم تا عدد. شما می توانید یک معادله یا دستگاهی از معادلات مختلف را به راحتی با دستور dsolve حل کنید. خروجی به یکی از سه صورت زیر خواهد بود:
1⃣خروجی به صورت صریح بر حسب توابع مقدماتی(مثل چندجمله ای ها، مثلثاتی و ...)تولید می شود.
2⃣ خروجی به صورت صریح بر حسب توابع خاص(توابعی که خود جواب یک معادله دیفرنسیل معروف هستند مثل gamma) است.
3⃣ خروجی به صورت ضمنی تولید می شود.
بزرگترین مزیت دستور dsolve این است که یک فرمول بر میگرداند(البته نه همیشه) و البته خیلی از معادلات هم جوری حل میکند که هیچکس را خوش نمی اید.
🔵ode🔵
این نوع دستور دیگر مانندdsolve از کتابخانه سمبولیک نیست و یک ام فایله. این توابع معادله را با استفاده از الگوریتم هایی که در تکست های دانشگاهی (مانند رانگ-کوتا) به صورت عددی حل میکنند. برای مثال الگوریتم ode23 بر اساس مقالات Bogacki و Shampine است. عدد 23 در این تابع به دلیل وجود دو الگوریتم single-step(تشریح این الگوریتم در اسکوپ این پست نیست) است که یکی از آنها درجه 2 و دیگری درجه 3 است. مشابه این تابع، ode23s هست که در آن s نماینده کلمه "stiffness" است که پستی مخصوص به همین لغت قبلا گذاشته شد.
نویسنده:(#جبار_کمالی)
#For_all , #ODE
@MatlabTips
سطح پیچیدگی:🌓🌑🌑🌑🌑
پیشنیاز: (ندارد)
برای:(همه)
📝هدف از این پست: (این پست کاربرد و تفاوت دو دستور فوق العاده کاربردی در حوزه معادلات دیفرانسیل در متلب بیان میکند)
🔵dsolve🔵
دستور dsolve مربوط به کتابخانه سمبولیک ریاضی متلب است. پس نتیجتا خروجی هم بصورت سمبولیک خواهد بود. سمبولیک بودن چیزی جدای نمایشی مانند float-point یا نمایش های عددی دیگر است. تو حالت سمبولیک بیشتر با نماد سر و کار داریم تا عدد. شما می توانید یک معادله یا دستگاهی از معادلات مختلف را به راحتی با دستور dsolve حل کنید. خروجی به یکی از سه صورت زیر خواهد بود:
1⃣خروجی به صورت صریح بر حسب توابع مقدماتی(مثل چندجمله ای ها، مثلثاتی و ...)تولید می شود.
2⃣ خروجی به صورت صریح بر حسب توابع خاص(توابعی که خود جواب یک معادله دیفرنسیل معروف هستند مثل gamma) است.
3⃣ خروجی به صورت ضمنی تولید می شود.
بزرگترین مزیت دستور dsolve این است که یک فرمول بر میگرداند(البته نه همیشه) و البته خیلی از معادلات هم جوری حل میکند که هیچکس را خوش نمی اید.
🔵ode🔵
این نوع دستور دیگر مانندdsolve از کتابخانه سمبولیک نیست و یک ام فایله. این توابع معادله را با استفاده از الگوریتم هایی که در تکست های دانشگاهی (مانند رانگ-کوتا) به صورت عددی حل میکنند. برای مثال الگوریتم ode23 بر اساس مقالات Bogacki و Shampine است. عدد 23 در این تابع به دلیل وجود دو الگوریتم single-step(تشریح این الگوریتم در اسکوپ این پست نیست) است که یکی از آنها درجه 2 و دیگری درجه 3 است. مشابه این تابع، ode23s هست که در آن s نماینده کلمه "stiffness" است که پستی مخصوص به همین لغت قبلا گذاشته شد.
نویسنده:(#جبار_کمالی)
#For_all , #ODE
@MatlabTips
🔵نمونه گیری تصادفی🔵
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز:کدنویسی پایه
برای:همه
📝 هدف از این پست: (استفاده از امکانات جدید متلب برای نمونه گیری تصادفی و کاربرد آن در حالا مختلف)
بسیاری از الگوریتم هایی که به طور معمول استفاده می کنیم مانند الگوریتم های هوش مصنوعی(تکاملی، بیزین) الگوریتم های شبکه و تقریبا تمام شبیه سازی ها نیاز به نمونه گیری تصادفی دارند. بنابراین وقتی ندانید چگونه باید این کار را به صورت بهینه انجام دهید وقت و انرژی زیادی از شما صرف می شود. در این راه ممکن است قطعه کدهایی بنویسید که اصلا لازم نیستند چرا که خود متلب این امکانات را قبلا برای شما فراهم کرده است!
ابتدا با ساده ترین حالت ها شروع می کنیم: فرض کنید تعدادی عدد دارید و می خواهید به صورت تصادفی چند تایی از آن ها را انتخاب کنید. وقتی به این شکل صحبت می کنیم همواره پیش فرض ما این است که احتمال تمام عددها برای انتخاب شدن یکسان هستند(مانند لاتاری!) متلب برای تمامی این موارد یک تابع فوق العاده ایجاد کرده است: randsample مثلا مورد زیر را در نظر بگیرید
در این قطعه کوچک برنامه شما سه عدد به صورت تصادفی از لیست اعداد [3,5,1,6,7] انتخاب می کنید. حالا ممکن است شرایط قدری پیچیده باشد یعنی شما می خواهید انتخاب های شما با جایگذاری باشند. مانند یک کیسه توپ که پس از انتخاب دوباره آن را به کیسه برگردانید تا شانس دوباره ای به آن داده باشید. در این حالت کافی است آرگومان سوم(replacement ) را true کنید.
حالت های پیچیده تر هم ممکن است پیش بیاید! من در این جا یک مثال کاربردی ذکر می کنم: در الگوریتم کلونی مورچگان در قسمتی از الگوریتم(مهمترین قسمت آن) مورچه باید از بین چندین مسیر از نودی که در آن قرار دارد یکی را به صورت تصادفی انتخاب کند. . یک نما از این حالت را در شکل زیر می بینید:
سطح پیچیدگی:🌕🌕🌑🌑🌑
پیشنیاز:کدنویسی پایه
برای:همه
📝 هدف از این پست: (استفاده از امکانات جدید متلب برای نمونه گیری تصادفی و کاربرد آن در حالا مختلف)
بسیاری از الگوریتم هایی که به طور معمول استفاده می کنیم مانند الگوریتم های هوش مصنوعی(تکاملی، بیزین) الگوریتم های شبکه و تقریبا تمام شبیه سازی ها نیاز به نمونه گیری تصادفی دارند. بنابراین وقتی ندانید چگونه باید این کار را به صورت بهینه انجام دهید وقت و انرژی زیادی از شما صرف می شود. در این راه ممکن است قطعه کدهایی بنویسید که اصلا لازم نیستند چرا که خود متلب این امکانات را قبلا برای شما فراهم کرده است!
ابتدا با ساده ترین حالت ها شروع می کنیم: فرض کنید تعدادی عدد دارید و می خواهید به صورت تصادفی چند تایی از آن ها را انتخاب کنید. وقتی به این شکل صحبت می کنیم همواره پیش فرض ما این است که احتمال تمام عددها برای انتخاب شدن یکسان هستند(مانند لاتاری!) متلب برای تمامی این موارد یک تابع فوق العاده ایجاد کرده است: randsample مثلا مورد زیر را در نظر بگیرید
out = randsample([3,5,1,6,7], 3)
در این قطعه کوچک برنامه شما سه عدد به صورت تصادفی از لیست اعداد [3,5,1,6,7] انتخاب می کنید. حالا ممکن است شرایط قدری پیچیده باشد یعنی شما می خواهید انتخاب های شما با جایگذاری باشند. مانند یک کیسه توپ که پس از انتخاب دوباره آن را به کیسه برگردانید تا شانس دوباره ای به آن داده باشید. در این حالت کافی است آرگومان سوم(replacement ) را true کنید.
out = randsample([3,5,1,6,7], 3, 'true')
حالت های پیچیده تر هم ممکن است پیش بیاید! من در این جا یک مثال کاربردی ذکر می کنم: در الگوریتم کلونی مورچگان در قسمتی از الگوریتم(مهمترین قسمت آن) مورچه باید از بین چندین مسیر از نودی که در آن قرار دارد یکی را به صورت تصادفی انتخاب کند. . یک نما از این حالت را در شکل زیر می بینید:
اما مساله این است که احتمال انتخاب مسیر ها با هم متفاوت است و بنابراین این احتمال را باید در انتخابمان لحاظ کنیم. فرض کنید پس از قرار دادن در فرمول (به الگوریتم کلونی مورچه مراجعه کنید) احتمال مسیر ها به صورت یک لیست 5 تایی به صورت [0.2, 0.1, 0.1, 0.05, 0.3, 0.05, 0.12, 0.08] به دست آمدند که به ترتیب متناظر با حرکت به سمت نود های [3,5,1,6,7] هستند. حالا چون ما می خواهیم فقط یک مسیر را انتخاب کنیم آرگومان چهارم که احتمال مسیر هاست را به صورت زیر به خورد تابع می دهیم:(وقتی یکی انتخاب می کنیم قاعدتا با جایگذاری یا بدون آن مهم نیست)
فراموش نکنید که لزومی ندارد حتما یک زیر مجموعه از نمونه ها را انتخاب کنید! شما می توانید بر اساس توزیع احتمالی که دارید نمونه تولید کنید. مثلا فرض کنید که می خواهیم یک دنباله 48 تایی از دنباله DNA را تولید کنیم با این دانش که از چهار پروتئین سازنده DNA یعنی (Adenine, Thymine, Guanine , Cytosine) احتمال حضور آن هریک در زنجیره ی مارپیچی به صورت زیر است:
با همین تابع شما می توانید مقدار زیادی کد، وقت و اعصاب از خودتان را ذخیره کنید!
در قسمت بعدی نشان می دهیم که چگونه می توان همین کار را برای یک تابع احتمال پیوسته انجام داد.
@MatlabTips
#For_All
#Ransample #Rand #Ant_colony #Random_sample
نویسنده:(#A_2)
SelecteNode = randsample([3,5,1,6,7], 1, “true”,[0.2, 0.1, 0.1, 0.05, 0.3, 0.05, 0.12, 0.08] )
فراموش نکنید که لزومی ندارد حتما یک زیر مجموعه از نمونه ها را انتخاب کنید! شما می توانید بر اساس توزیع احتمالی که دارید نمونه تولید کنید. مثلا فرض کنید که می خواهیم یک دنباله 48 تایی از دنباله DNA را تولید کنیم با این دانش که از چهار پروتئین سازنده DNA یعنی (Adenine, Thymine, Guanine , Cytosine) احتمال حضور آن هریک در زنجیره ی مارپیچی به صورت زیر است:
R = randsample('ACGT',48,'true',[0.15 0.35 0.35 0.15])
با همین تابع شما می توانید مقدار زیادی کد، وقت و اعصاب از خودتان را ذخیره کنید!
در قسمت بعدی نشان می دهیم که چگونه می توان همین کار را برای یک تابع احتمال پیوسته انجام داد.
@MatlabTips
#For_All
#Ransample #Rand #Ant_colony #Random_sample
نویسنده:(#A_2)
🔵نگاهی کیفی به معادلات دیفرانسیل🔵
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: برای همه
📝هدف از این پست:( آشنایی با دستور quiver و رفتار میدان های برداری)
می توان جواب یک معادله دیفرانسیل را بدون اینکه آن را حل کنیم بصورت جئومتریکی بررسی کنیم. یکی از این روش ها استفاده از میدان های برداری است.
میدان برداری با رسم خط کوتاهی که از نقطه (t,y) عبور میکند و شیب آن f(t,y) است. جواب ها، یا منحنیهای انتگرالی، این ویژگی را دارند که در هر نقطه مماس بر میدان برداری است و بنابراین یک ارزیابی کلی و کیفی از حل یک معادله دیفرانسیل از میدان برداری استنتاج می شود.
برای معادلات ساده، می توانید میدان برداری را دستی رسم کنید، اما Matlab برای هر معادله درجه اولی قادرست میدان برداری را رسم کند.
در زیر یک مثال برای معادله دیفرانسیل خطی آورده شده است.
سطح پیچیدگی:🌕🌓🌑🌑🌑
پیشنیاز: برای همه
📝هدف از این پست:( آشنایی با دستور quiver و رفتار میدان های برداری)
می توان جواب یک معادله دیفرانسیل را بدون اینکه آن را حل کنیم بصورت جئومتریکی بررسی کنیم. یکی از این روش ها استفاده از میدان های برداری است.
میدان برداری با رسم خط کوتاهی که از نقطه (t,y) عبور میکند و شیب آن f(t,y) است. جواب ها، یا منحنیهای انتگرالی، این ویژگی را دارند که در هر نقطه مماس بر میدان برداری است و بنابراین یک ارزیابی کلی و کیفی از حل یک معادله دیفرانسیل از میدان برداری استنتاج می شود.
برای معادلات ساده، می توانید میدان برداری را دستی رسم کنید، اما Matlab برای هر معادله درجه اولی قادرست میدان برداری را رسم کند.
در زیر یک مثال برای معادله دیفرانسیل خطی آورده شده است.
دستوری که متلب برای رسم میدان برداری استفاده میکند quiver است. در کنار این دستور همواره meshgrid وجود دارد.
کاری که این کد انجام میدهد مجموعه ای نقاط (گرید) میسازد و این نقاط را در معادله دیفرانسیل (شیب هر نقطه) قرار میدهد. بردارهای (1,s) شیب مطلوب را به ما میدهد ولی با طول های متفاوت. به همین منظور نرمال کرده ایم.
t = -2:0.1:3;
y = -1:0.1:2;
[T,Y]= meshgrid(t,y);
S = Y.^2 + T;
L = sqrt(1 + S.^2);
quiver(T,Y,1./L,S./L,0.5)
axis tight
title 'superimpose of direction field and y''(t) = y^2 + t'
axis([-2 3 -1 2])
کاری که این کد انجام میدهد مجموعه ای نقاط (گرید) میسازد و این نقاط را در معادله دیفرانسیل (شیب هر نقطه) قرار میدهد. بردارهای (1,s) شیب مطلوب را به ما میدهد ولی با طول های متفاوت. به همین منظور نرمال کرده ایم.
در این شکل مشخص است که کجا نمودار صعودی است، کجا ماکزیمم دارد و ... . وقتی زمان به بی نهایت میل کند، جواب ها به صفر میل میکند و ... .
دسته جواب دقیق معادله به صورت زیر است:
دسته جواب دقیق معادله به صورت زیر است:
شکل زیر این دسته جواب ها را بر روی میدان برداری نشان می دهد.شما میتوانید به عنوان یک تمرین منحنی که نقاط ماکزیمم دسته جواب ها را به هم متصل میکند بر روی این نمودر بیندازید. البته این نقاط به صورت کیفی بر روی صفحه میدان برداری مشخص است.
Reference
B .R .Hunt, R.L.Lipsman, “Differential equation with matlab “, John Wiley, second edition, 2005,pp.65-68.
نویسنده:(#جبار_کمالی)
#For_all , #Differential_equation, #quiver
@MatlabTips
Reference
B .R .Hunt, R.L.Lipsman, “Differential equation with matlab “, John Wiley, second edition, 2005,pp.65-68.
نویسنده:(#جبار_کمالی)
#For_all , #Differential_equation, #quiver
@MatlabTips
🔵گرادایان از عمل تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
پیش نیاز: (آشنایی اندک با میدان های برداری)
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
خیلی از دانشجویان در درک مفاهیم انتزاعی چون گرادیان، مشتق جهتی و ... عاجز هستند. همه ما فرمول هایی این چنینی در کتب دانشگاهی مطالعه(یا بهتر بگویم حفظ کرده ایم) و بدون اینکه بدانیم در بطن ماجرا چه اتفاقی می افتد از دستورات متلب هم برای محاسبه این مفاهیم استفاده میکنیم. بد نیست که یک بار این مفهوم مرور شود. سعی میکنیم در پنج پست جداگانه این مفهوم منتقل شود.
گرادیان حالت کلی تری از مشتق، یا نرخ تغییر یک تابع است. در حقیقت گرادیان برداری است که:
1⃣جاهایی که تابع بیشترین تغییرات را دارد مشخص میکند.
2⃣در بیشینه و کمینه های محلی صفر است (در این نقاط جهتی یافت نمیشود که نشان دهد تابع کاهش یا افزایش می یابد)
اصطلاح گرادیان برای توابعی با چند ورودی یک خروجی (میدان اسکالر) مورد استفاده قرار میگیرد. البته شما می توانید بگویید که یک خط هم گرادیان دارد(شیب خط)، اما حرف من این است که استفاده از گرادیان برای توابع تک متغیره کار بیخودی است.
"گرادیان" به تغییرات تدریجی رنگ هم گفته میشود(کسانی که با فوتوشاپ کار کرده اند یا افرادی که به تغییر رنگ در نمودارهای سه بعدی متلب دقت کرده اند حرف مرا بهتر درک میکنند)، اما در این کانال میخواهیم به تعریف ریاضیاتی گرادیان بپردازیم.
چهار پست بعدی ویژگی گرادیان، یک مثال کاملا ملموس از گرادیان، ریاضی گرادیان و گرادیان در متلب خواهد بود.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
سطح پیچیدگی: 🌕🌑🌑🌑🌑
پیش نیاز: (آشنایی اندک با میدان های برداری)
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
خیلی از دانشجویان در درک مفاهیم انتزاعی چون گرادیان، مشتق جهتی و ... عاجز هستند. همه ما فرمول هایی این چنینی در کتب دانشگاهی مطالعه(یا بهتر بگویم حفظ کرده ایم) و بدون اینکه بدانیم در بطن ماجرا چه اتفاقی می افتد از دستورات متلب هم برای محاسبه این مفاهیم استفاده میکنیم. بد نیست که یک بار این مفهوم مرور شود. سعی میکنیم در پنج پست جداگانه این مفهوم منتقل شود.
گرادیان حالت کلی تری از مشتق، یا نرخ تغییر یک تابع است. در حقیقت گرادیان برداری است که:
1⃣جاهایی که تابع بیشترین تغییرات را دارد مشخص میکند.
2⃣در بیشینه و کمینه های محلی صفر است (در این نقاط جهتی یافت نمیشود که نشان دهد تابع کاهش یا افزایش می یابد)
اصطلاح گرادیان برای توابعی با چند ورودی یک خروجی (میدان اسکالر) مورد استفاده قرار میگیرد. البته شما می توانید بگویید که یک خط هم گرادیان دارد(شیب خط)، اما حرف من این است که استفاده از گرادیان برای توابع تک متغیره کار بیخودی است.
"گرادیان" به تغییرات تدریجی رنگ هم گفته میشود(کسانی که با فوتوشاپ کار کرده اند یا افرادی که به تغییر رنگ در نمودارهای سه بعدی متلب دقت کرده اند حرف مرا بهتر درک میکنند)، اما در این کانال میخواهیم به تعریف ریاضیاتی گرادیان بپردازیم.
چهار پست بعدی ویژگی گرادیان، یک مثال کاملا ملموس از گرادیان، ریاضی گرادیان و گرادیان در متلب خواهد بود.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
🔵گرادیان از مفهوم تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش دوم
حالا که می دانیم گرایان مشتق یک تابع چند متغیره است،پس بیایید به کمک همدیگر ویژگیهای آن را استخراج کنیم.
مشتق معمولی(مشتق در صفحه) به ما نرخ تغییر یک متغیر (عموما با X نشان می دهیم) می دهد. برای مثال dF/dX به ما میگوید که تابع F به ازای تغییر در مقدار X به چه میزان تغییر میکند. اما اگر تابعی بیش از یک متغیر داشته باشد، چندین مشتق نیز دارد: مقدار تابع با "بالا-پایین کردن" X و y تغییر میکند.
میتوانیم این نرخ های چندگانه از تغییر را بوسیله یک بردار نمایش دهیم که هر المان از این بردار نماینده یک مشتق باشد. بنابراین، تابعی که سه متغیر دارد، گرادیانی با سه عنصر خواهد داشت:
تابع F(x) تابعی یک متغیره است و یک مشتق دارد: dF/dx
تابع F(x,y,z) تابعی سه متغیره است و سه مشتق دارد:(dF/dx,dF/dy,dF/dz)
گرادیان یک تابع چندمتغیره، برای هر جهتی از تابع یک عنصر دارد.
و درست شبیه مشتق معمولی، گرادیان به جهت بیشترین افزایش اشاره میکند. حالا که ما چندین جهت داریم، جهت بیشترین افزایش دیگر یک خط رو به جلو یا عقب در امتداد محور X (آنگونه که در توابع تک متغیره بود) نیست.
اگر دو متغیر داشته باشیم، آنگاه گرادیان (در این حالت دو بعدی است) می تواند هر جهتی در فضای سه بعدی مشخص کند که به سمت افزایش تابع مورد نظر ما حرکت میکند.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش دوم
حالا که می دانیم گرایان مشتق یک تابع چند متغیره است،پس بیایید به کمک همدیگر ویژگیهای آن را استخراج کنیم.
مشتق معمولی(مشتق در صفحه) به ما نرخ تغییر یک متغیر (عموما با X نشان می دهیم) می دهد. برای مثال dF/dX به ما میگوید که تابع F به ازای تغییر در مقدار X به چه میزان تغییر میکند. اما اگر تابعی بیش از یک متغیر داشته باشد، چندین مشتق نیز دارد: مقدار تابع با "بالا-پایین کردن" X و y تغییر میکند.
میتوانیم این نرخ های چندگانه از تغییر را بوسیله یک بردار نمایش دهیم که هر المان از این بردار نماینده یک مشتق باشد. بنابراین، تابعی که سه متغیر دارد، گرادیانی با سه عنصر خواهد داشت:
تابع F(x) تابعی یک متغیره است و یک مشتق دارد: dF/dx
تابع F(x,y,z) تابعی سه متغیره است و سه مشتق دارد:(dF/dx,dF/dy,dF/dz)
گرادیان یک تابع چندمتغیره، برای هر جهتی از تابع یک عنصر دارد.
و درست شبیه مشتق معمولی، گرادیان به جهت بیشترین افزایش اشاره میکند. حالا که ما چندین جهت داریم، جهت بیشترین افزایش دیگر یک خط رو به جلو یا عقب در امتداد محور X (آنگونه که در توابع تک متغیره بود) نیست.
اگر دو متغیر داشته باشیم، آنگاه گرادیان (در این حالت دو بعدی است) می تواند هر جهتی در فضای سه بعدی مشخص کند که به سمت افزایش تابع مورد نظر ما حرکت میکند.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
🔵گرادیان از مفهوم تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش سوم - یک مثال
فرض کنید یک اجاق جادویی داریم که مختصات هر نقطه از فضای آن بر رویش نوشته می شود و یک صفحه نمایش مخصوص هم دارد:
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش سوم - یک مثال
فرض کنید یک اجاق جادویی داریم که مختصات هر نقطه از فضای آن بر رویش نوشته می شود و یک صفحه نمایش مخصوص هم دارد:
میتوانیم در هر لحظه سه مختصه (مثلا "3,5,2") وارد کنیم و صفحه نمایش گرادیان دما در این نقطه به ما نشان دهد.
مراقب باشید که مختصات و گرادیان را با یکدیگر قاطی نکنید. مختصات مکان جاری بر روی محورx-y-z است. در حالی که گرادیان جهت حرکت از مکان جاری (به سمت بالا، پایین، چپ، راست و ...) می باشد.
حالا فرض کنید ما از تخیلاتمون کمک میگیریم و یه خرگوش زنده رو میندازیم تو اجاق (چون که گوشت خرگوش خوشمزس). این خرگوش را در نقطه ای تصادفی درون اجاق قرار می دهیم و هدف ما این است که در سریعترین زمان ممکن کبابش کنیم. اینجاست که گرادیان به داد ما خواهد رسید.
گرادیان در هر مکان به بیشترین افزایش آن تابع اشاره میکند. در این مورد خاص، تابع ما دما را اندازه گیری میکند. بنابراین، گرادیان به ما خواهد گفت که خرگوش را چگونه به مکانی هدایت کنیم که بیشترین دما را داشته باشد تا این خرگوش سریعتر کباب شود. توجه کنید که گرادیان مختصات به ما نمیدهد، تنها جهت حرکت به سمت افزایش دما را میدهد.
از نقطه (3,5,2) شروع کرده و گرادیان را چک میکنیم. در این مورد خاص، گرادیان (3,4,5) است. دقت کنید که قرار نیست ما 3 واحد به راست، 4 واجد به عقب 5 واحد به سمت بالا حرکت کنیم. گرادیان جهت است و ما در این راستا کمی حرکت میکنیم و دوباره گرادیان را چک میکنیم. این پروسه را بارها و بارها تکرار میکنیم تا هر بار به مکان های گرمتری برسیم.
نهایتا، به گرم ترین بخش اجاق میرسی و اینجا جایی است که باید بمانیم.
مراقب باشید که مختصات و گرادیان را با یکدیگر قاطی نکنید. مختصات مکان جاری بر روی محورx-y-z است. در حالی که گرادیان جهت حرکت از مکان جاری (به سمت بالا، پایین، چپ، راست و ...) می باشد.
حالا فرض کنید ما از تخیلاتمون کمک میگیریم و یه خرگوش زنده رو میندازیم تو اجاق (چون که گوشت خرگوش خوشمزس). این خرگوش را در نقطه ای تصادفی درون اجاق قرار می دهیم و هدف ما این است که در سریعترین زمان ممکن کبابش کنیم. اینجاست که گرادیان به داد ما خواهد رسید.
گرادیان در هر مکان به بیشترین افزایش آن تابع اشاره میکند. در این مورد خاص، تابع ما دما را اندازه گیری میکند. بنابراین، گرادیان به ما خواهد گفت که خرگوش را چگونه به مکانی هدایت کنیم که بیشترین دما را داشته باشد تا این خرگوش سریعتر کباب شود. توجه کنید که گرادیان مختصات به ما نمیدهد، تنها جهت حرکت به سمت افزایش دما را میدهد.
از نقطه (3,5,2) شروع کرده و گرادیان را چک میکنیم. در این مورد خاص، گرادیان (3,4,5) است. دقت کنید که قرار نیست ما 3 واحد به راست، 4 واجد به عقب 5 واحد به سمت بالا حرکت کنیم. گرادیان جهت است و ما در این راستا کمی حرکت میکنیم و دوباره گرادیان را چک میکنیم. این پروسه را بارها و بارها تکرار میکنیم تا هر بار به مکان های گرمتری برسیم.
نهایتا، به گرم ترین بخش اجاق میرسی و اینجا جایی است که باید بمانیم.
اما صبر کنید، خرگوش را نخورید😁😁
قبل اینکه خرگوش را بخورید، نیم نگاهی به گرادیان بیندازیم. هنگامی که ما به گرم ترین نقطه میرسیم، گرادیان در آن نقطه چقدر است؟ صفر. هیچی. چرا؟؟ خوب وقتی که در مکان ماکزیمم هستید، هیچ جهتی وجود ندارد که به بیشترین افزایش اشاره کند. هر جهتی منجر به کاهش دما میشود. درست مثل اینکه بر روی قله کوه ایستاده اید: هر جهتی که حرکت کند به سمت دره خواهد بود. گرادیان صفر به شما می گوید که در نقطه ماکزیمم هستید و بهتر از این نمیشود.
اما اگر چندین ماکزیمم باشد چه؟ مانند دو قله کنار هم؟ برای اینکه بالاترین نقطه را بیابید، باید ابتدا قدری به سمت پایین حرکت کنید.
پیدا کردن ماکزیمم در توابع تک متغیره به معنی پیدا کردن تمام مکان هایی است که مشتق در آن صفر است. اگر بیاد داشته باشید، مشتق معمولی تنها مینیمم و ماکزیمم محلی را مشخص میکرد و برای بدست آوردن مین و ماکس مطلق باید تمام نقاط بحرانی را در تابع چک میکردیم.
همین اصل نیز برای گرادیان که فرم کلی تری از مشتق است حاکم است. می بایست چندین مکان را که گرادیان در آنها صفر است بیابید و سپس این نقاط را در تابع تست کنید.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
قبل اینکه خرگوش را بخورید، نیم نگاهی به گرادیان بیندازیم. هنگامی که ما به گرم ترین نقطه میرسیم، گرادیان در آن نقطه چقدر است؟ صفر. هیچی. چرا؟؟ خوب وقتی که در مکان ماکزیمم هستید، هیچ جهتی وجود ندارد که به بیشترین افزایش اشاره کند. هر جهتی منجر به کاهش دما میشود. درست مثل اینکه بر روی قله کوه ایستاده اید: هر جهتی که حرکت کند به سمت دره خواهد بود. گرادیان صفر به شما می گوید که در نقطه ماکزیمم هستید و بهتر از این نمیشود.
اما اگر چندین ماکزیمم باشد چه؟ مانند دو قله کنار هم؟ برای اینکه بالاترین نقطه را بیابید، باید ابتدا قدری به سمت پایین حرکت کنید.
پیدا کردن ماکزیمم در توابع تک متغیره به معنی پیدا کردن تمام مکان هایی است که مشتق در آن صفر است. اگر بیاد داشته باشید، مشتق معمولی تنها مینیمم و ماکزیمم محلی را مشخص میکرد و برای بدست آوردن مین و ماکس مطلق باید تمام نقاط بحرانی را در تابع چک میکردیم.
همین اصل نیز برای گرادیان که فرم کلی تری از مشتق است حاکم است. می بایست چندین مکان را که گرادیان در آنها صفر است بیابید و سپس این نقاط را در تابع تست کنید.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips