در این دوره آنلاین آموزش متلب به صورت رایگان با سری آموزشهای نرم افزار متلب در خدمت شما هستیم. در واقع آنچه که شما به طور کاملا عملی برای استفاده در انجام پروژه متلب نیاز دارید در این جلسات ارائه خواهد شد.
جلسهی پیش دنباله فیبوناچی را به صورت تئوری بررسی کردیم. در این جلسه قصد داریم راجع به عدد طلایی در متلب صحبت کنیم.
محاسبه عدد طلایی در متلب
حال میخواهیم راجع به عدد طلایی که در بخش ابتدایی همین مطلب توضیح دادیم، صحبت کنیم.
الان در command window که در اینجا داریم، اگر بخواهیم عدد طلایی را به دست آوریم، مثلاً تا F(90) را تعریف کردیم. F(90)/F(89) را اگر بنویسیم مشاهده میکنید که عدد طلایی را به ما داده است.

همانطور که گفتیم عدد طلایی یک فرمولی داشت. اگر این فرمول را در اینجا بنویسیم، به صورت زیر خواهد بود.

رادیکال را در متلب با sqrt نمایش میدهند. یعنی هر وقت خواستید رادیکال بنویسید، یک sqrt قرار میدهید و روبهروی آن داخل پرانتز عدد مربوطه را مینویسید. تقسیم با / نشان میدهیم.
فرمول بالا فرمول عدد طلایی بود که مشاهده میکنید که الان با ۴ رقم اعشار دقیقا همان عدد 1.6180 قبلی شده است.
پس توجه داشته باشید که چیزی که ما در بالا نوشتیم، به درستی دارد کار میکند و همین را در اینجا میتوانیم ببینیم. گفتیم که هرچه جلوتر برویم، بیشتر به عدد طلایی نزدیک میشود. یعنی اگر بنویسیم که F(4)/F(3)، این عدد کمتر به عدد طلایی نزدیک است؛ مشاهده میکنید که ۵/۱ شد که خیلی دورتر از عدد طلایی است.

حال میخواهیم در اینجا چه کاری انجام دهیم؟ در اینجا میخواهیم بگوییم که تمام اعداد طلایی را به ما نشان دهد. این را چگونه میتوانیم تعریف کنیم؟ به سادگی میتوانیم این کار را انجام دهیم. میگوییم که برای kهای ۲ تا ۹۰، یک نسبتی را تعریف کند که آن نسبت را با r نمایش میدهیم. این نسبت را به صورت r(k)=F(k)/F(k-1) به دست میآوریم. این را به صورتهای دیگری نیز میتوان نشان داد. ولی ما میخواستیم به این شکل نشان دهیم.

به این صورت نوشتیم و میخواهیم از آن run بگیریم. در قسمت workspace مشاهده میکنید که یک r نمایش داده میشود. اگر روی آن کلیک کنیم، برای ما r را نمایش میدهد ولی همه را صفر گذاشته است. چرا؟ به چه دلیل این کار را انجام داده است؟


دلیل آن این است که ما یک بار k را در بالا تعریف کرده بودیم و به جای k دوم باید حرف دیگری مانند s یا j یا هر حرف دیگری به دلخواه خودتان تعریف کنید. ما s میگذاریم و بعد run میگیریم.

الان مشاهده میکنید که تمام اعداد را به ما نشان میدهد که رفته رفته به عدد طلایی نزدیک میشود.

اگر نمودار r را در plot مشاهده کنید، یک نوسان دارد و بعد به عددی که ما میخواهیم نزدیک شده است تا عدد طلایی ما تقریباً به دست آمده است.


سه تا خط آخری که نوشتیم، برای زبانهایی مانند javascript ، C، C+، C# و … خیلی خوب است. ولی در متلب میتوانیم کار را بسیار راحتتر کنیم.
الان ما p را تعریف میکنیم. (F از ۲ تا ۹۰) F(2:90) را داشتیم. به این نکته توجه کنید که وقتی که میخواهیم تقسیم ما عضو به عضو باشد، element wise تقسیم میکنیم و دیگر توجهی نداریم که ماتریسها یا نمودارهای شما برابر است یا خیر. F(2:90) را تقسیم بر F(1:89) میکنیم. حال میخواهیم ببینیم با این دستور چه اتفاقی میافتد. آن را اجرا میکنیم.

مشاهده میکنید که p را برای ما تعریف کرد و این دستور دقیقا مانند همان rای است که تعریف کردیم.


نمودار آن را مشاهده کنید که دقیقا مشابه نمودار قبلی است.


در اینجا هم چک میکنیم که خیالمان راحت شود.


الان p ما ۱، ۲، ۵/۱ و … است.
اما r را در اینجا از صفر تعریف کردیم ولی برای p صفر را تعریف نکردیم. به همین دلیل نمیگوییم که با هم برابرند.
اگر تعریف کنید مشاهده میکنید که همانهایی هستند که در آن بالا داشتیم. اگر دقت کنید خودتان هم میتوانید این چیزی را که گفتیم، انجام دهید و ببینید.
گفتیم که در دنبالهی فیبوناچی F(1) یعنی جملهی اول برابر ۱ است. F(2) یعنی جملهی دوم آن باز هم برابر با ۱ است.
در اینجا یک حلقه تعریف کردیم و گفتیم for (برای) جملهی سوم تا ۱۰۰ …
۱۰۰ تا جمله تعریف کردیم و این هم منطق دنبالهی فیبوناچی است که میگوید جملهای که الان وجود دارد، برابر جملهی قبلی به اضافهی جملهی دو تا قبلی میشود. یعنی هر جملهای در دنبالهی فیبوناچی به جز جملهی اول و دوم با جمع دو جملهی قبلیاش برابر میشود. این منطق دنباله بود که ما آن را در یک حلقه نوشتیم.
میخواستیم عدد طلایی را حساب کنیم. گفتیم عدد طلایی چیست؟ عدد طلایی تقسیم دو عدد متوالی است؛ عدد بعدی منهای عدد قبلی. عدد بعدی در دنبالهی فیبوناچی برابر میشود با F(j+1) یعنی یک جملهی بعدی منهای خود F(j). و این عدد طلایی را با r(j) نسبت میدهیم که j از ۱ تا ۹۹ تعریف میشود. این قسمت را با استفاده از حلقه نوشتیم. اما در خط ۹ دستور را دقیقا vectorize کردیم که در برنامه متلب هم بسیار به این موضوع vectorize کردن توجه میشود. گفتیم که از جملهی دوم تا ۱۰۰ تقسیم بر یک جملهی قبلترشان کند. یعنی دقیقا جمله ۲ تا ۱۰۰ را تقسیم بر جملهی ۱ تا ۹۹ کند. که به آن q نسبت میدهیم.
در انتهای جلسه قبل گفتیم که r و q دقیقا با هم برابر هستند. جلسه قبل از صفر شروع کرده بودیم و برابری را نشان نداد. حال در اینجا که به درستی نوشتیم، میتوانیم نشان دهیم که r و q کاملا با هم برابر هستند. اما چه تفاوتی دارند؟ بهتر است r را به کار ببریم یا به صورت vectorize به کار ببریم؟ کدامشان بهتر است؟ به صورت vectorize بهتر است؟ به چه دلیل؟ دلیل آن را در جلسهی آینده خواهیم گفت.
در جلسه آینده در رابطه با سورها و انواع آن در متلب صحبت خواهیم کرد.
در صورتی که شما پس از خواندن محتوای جلسات قبلی و این بخش که به سادهترین زبان ممکن دربارهی برنامهی متلب و محیط کاربری آن توضیح داده باز هم سردرگم هستید. میتوانید با برون سپاری انجام پروژه متلب خود به کارشناسان حرفهای کارت پروژه میباشد. میتوانید از طریق شمارهی 09104503300 با پشتیبانان کارت از طریق پیام یا تماس در ارتباط باشید.
برای کسب اطلاعات بیشتر در مورد متلب میتوانید به مقاله آموزش متلب مقدماتی مراجعه کنید.
ارسال پاسخ