MatlabTips
891 subscribers
462 photos
73 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
اما مساله این است که احتمال انتخاب مسیر ها با هم متفاوت است و بنابراین این احتمال را باید در انتخابمان لحاظ کنیم. فرض کنید پس از قرار دادن در فرمول (به الگوریتم کلونی مورچه مراجعه کنید) احتمال مسیر ها به صورت یک لیست 5 تایی به صورت [0.2, 0.1, 0.1, 0.05, 0.3, 0.05, 0.12, 0.08] به دست آمدند که به ترتیب متناظر با حرکت به سمت نود های [3,5,1,6,7] هستند. حالا چون ما می خواهیم فقط یک مسیر را انتخاب کنیم آرگومان چهارم که احتمال مسیر هاست را به صورت زیر به خورد تابع می دهیم:(وقتی یکی انتخاب می کنیم قاعدتا با جایگذاری یا بدون آن مهم نیست)
‍‍‍‍‍‍‍
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 است. در کنار این دستور همواره meshgrid وجود دارد.
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
برهم نهی میدان برداری و دسته جواب ها
🔵گرادایان از عمل تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
پیش نیاز: (آشنایی اندک با میدان های برداری)
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)

خیلی از دانشجویان در درک مفاهیم انتزاعی چون گرادیان، مشتق جهتی و ... عاجز هستند. همه ما فرمول هایی این چنینی در کتب دانشگاهی مطالعه(یا بهتر بگویم حفظ کرده ایم) و بدون اینکه بدانیم در بطن ماجرا چه اتفاقی می افتد از دستورات متلب هم برای محاسبه این مفاهیم استفاده میکنیم. بد نیست که یک بار این مفهوم مرور شود. سعی میکنیم در پنج پست جداگانه این مفهوم منتقل شود.
گرادیان حالت کلی تری از مشتق، یا نرخ تغییر یک تابع است. در حقیقت گرادیان برداری است که:
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
🔵گرادیان از مفهوم تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش سوم - یک مثال

فرض کنید یک اجاق جادویی داریم که مختصات هر نقطه از فضای آن بر رویش نوشته می شود و یک صفحه نمایش مخصوص هم دارد:
اجاق جادویی
میتوانیم در هر لحظه سه مختصه (مثلا "3,5,2") وارد کنیم و صفحه نمایش گرادیان دما در این نقطه به ما نشان دهد.
مراقب باشید که مختصات و گرادیان را با یکدیگر قاطی نکنید. مختصات مکان جاری بر روی محورx-y-z است. در حالی که گرادیان جهت حرکت از مکان جاری (به سمت بالا، پایین، چپ، راست و ...) می باشد.

حالا فرض کنید ما از تخیلاتمون کمک میگیریم و یه خرگوش زنده رو میندازیم تو اجاق (چون که گوشت خرگوش خوشمزس). این خرگوش را در نقطه ای تصادفی درون اجاق قرار می دهیم و هدف ما این است که در سریعترین زمان ممکن کبابش کنیم. اینجاست که گرادیان به داد ما خواهد رسید.

گرادیان در هر مکان به بیشترین افزایش آن تابع اشاره میکند. در این مورد خاص، تابع ما دما را اندازه گیری میکند. بنابراین، گرادیان به ما خواهد گفت که خرگوش را چگونه به مکانی هدایت کنیم که بیشترین دما را داشته باشد تا این خرگوش سریعتر کباب شود. توجه کنید که گرادیان مختصات به ما نمیدهد، تنها جهت حرکت به سمت افزایش دما را میدهد.
از نقطه (3,5,2) شروع کرده و گرادیان را چک میکنیم. در این مورد خاص، گرادیان (3,4,5) است. دقت کنید که قرار نیست ما 3 واحد به راست، 4 واجد به عقب 5 واحد به سمت بالا حرکت کنیم. گرادیان جهت است و ما در این راستا کمی حرکت میکنیم و دوباره گرادیان را چک میکنیم. این پروسه را بارها و بارها تکرار میکنیم تا هر بار به مکان های گرمتری برسیم.
نهایتا، به گرم ترین بخش اجاق میرسی و اینجا جایی است که باید بمانیم.
اما صبر کنید، خرگوش را نخورید😁😁

قبل اینکه خرگوش را بخورید، نیم نگاهی به گرادیان بیندازیم. هنگامی که ما به گرم ترین نقطه میرسیم، گرادیان در آن نقطه چقدر است؟ صفر. هیچی. چرا؟؟ خوب وقتی که در مکان ماکزیمم هستید، هیچ جهتی وجود ندارد که به بیشترین افزایش اشاره کند. هر جهتی منجر به کاهش دما میشود. درست مثل اینکه بر روی قله کوه ایستاده اید: هر جهتی که حرکت کند به سمت دره خواهد بود. گرادیان صفر به شما می گوید که در نقطه ماکزیمم هستید و بهتر از این نمیشود.
اما اگر چندین ماکزیمم باشد چه؟ مانند دو قله کنار هم؟ برای اینکه بالاترین نقطه را بیابید، باید ابتدا قدری به سمت پایین حرکت کنید.
پیدا کردن ماکزیمم در توابع تک متغیره به معنی پیدا کردن تمام مکان هایی است که مشتق در آن صفر است. اگر بیاد داشته باشید، مشتق معمولی تنها مینیمم و ماکزیمم محلی را مشخص میکرد و برای بدست آوردن مین و ماکس مطلق باید تمام نقاط بحرانی را در تابع چک میکردیم.
همین اصل نیز برای گرادیان که فرم کلی تری از مشتق است حاکم است. می بایست چندین مکان را که گرادیان در آنها صفر است بیابید و سپس این نقاط را در تابع تست کنید.
نویسنده: (#جبار_کمالی)
#For_all, #Gradient
@MatlabTips
🔵گرادیان از مفهوم تا تئوری🔵
سطح پیچیدگی: 🌕🌑🌑🌑🌑
یش نیاز: (آشنایی اندک با میدان های برداری)
برای: همه
📝هدف از این پست: (تفهیم گرادیان به شیوه ای ساده و روان)
🖊بخش سوم - ریاضیات

ما تعریف گرادیان را میدانیم: مشتق هر متغیر از تابع. نماد گرادیان یک دلتا سر و ته شده است و به آن "دل" می گویند(اگه بخایم خیلی غیرفنی صحبت کنیم این جمله خیلی هم بی راه نیست. دلتا نشان دهنده تغییرات یک متغیر است و گرادیان هم تغییر همه متغیرهاست). اگر تابع سه متغیره را در نظر بگیریم:
دقت کنید مولفه X بردار گرادیان مشتق جزیی تابع نسبت به X است و این موضوع در مورد دو متغیر دیگر نیز صادق است. دقت کنید که گرادیان به صورت یک عملگر هم می تواند بر روی تابع اعمال شود.
اگر بخواهیم جهتی بیابیم که به سمت افزایش تابع حرکت کنیم باید مختصات کنونی را (3,4,5) درون گرادیان تابع قرار دهیم.