اعداد فیبوناچی و اسرار آن

اولین اعداد سری فیبوناچی عبارت اند از:
۰٬ ۱٬ ۱٬ ۲٬ ۳٬ ۵٬ ۸٬ ۱۳٬ ۲۱٬ ۳۴٬ ۵۵٬ ۸۹٬ ۱۴۴٬ ۲۳۳٬ ۳۷۷٬ ۶۱۰٬ ۹۸۷٬ ۱۵۹۷٬ ۲۵۸۴٬ ۴۱۸۱
"عدد فی" از دنباله ی فیبوناچی مشتق شده است، تصاعد مشهوری که شهرتش تنها به این دلیل نیست که هرجمله با مجموع دو جمله ی پیشین خود برابری می کند. بلکه به این دلیل است که خارج قسمت هر دو جمله ی کنار هم خاصیت اعداد فیبوناچی و اسرار آن اعداد فیبوناچی و اسرار آن حیرت انگیزی نزدیک به عدد 1.6 را دارد که به "نسبت طلایی" مشهور است.
دنباله فیبوناچی با متلب
توی این پست میخوام روش سادهای برای بدست آوردن دنبالهی فیبوناچی با استفاده از دستورات متلب رو براتون توضیح بدم.
برای این کار پیشنیاز زبان برنامهنویسی متلب (پایهی زبان C) و اندکی هم فلوچارت نویسی هست که البته اصلا نگران نباشید اگر این ها رو بلد نیستید. چون زبانی بسیار سادهست و به راحتی میتونید تحلیلش کنید
همونطور که میدونید دنبالهی فیبوناچی این شکلیه:
1, 1, 2, 3, 5, 8, 13, 21 و.
اگر کمی بهش دقت کنید متوجه میشید که در مرحله اول عدد ۱ رو با ۱ جمع میکنیم. مرحله دوم یا به عبارتی جملهی سوم دنبالهی فیبوناچی با جمع کردن دو جملهی قبلی حاصل میشه یعنی اگر جملات رو با fn مشخص کنیم، جمله سوم دنباله از طریق رابطهی f3=f2+f1 بدست میاد. و همینطور جمله چهارم هم از حاصل جمع جملهی دوم اعداد فیبوناچی و اسرار آن و سوم، جملهی پنجم از حاصل جمع جملهی چهارم و سوم و الی آخر.
دقیقا کاری که ما میخوایم توی محیط متلب انجام بدیم:
این کدها رو ببینید:
برای توضیحش از خط اول شروع میکنیم و خط به خط میریم جلو
۱. این دستور به منظور تمیز کردن command prompt متلب استفاده میشه و یه جورایی کدهای اضافی رو از صفحه پاک میکنه.
۲. هر متغیری که توی workspace شما ذخیره شده باشه با این دستور پاک میشه.
۳. برای حلقههایی که داریم باید از یه شمارنده استفاده کنیم. متغیر i رو برای شمارش تعداد تکرارهای حلقهمون استفاده میکنیم.
۴. جملهی اول دنبالهی فیبوناچی رو با مشخص کردن مقدار اولیه برای متغیر f1 مشخص میکنیم.
۵. مشابه خط قبلی، جملهی دوم دنباله رو با مشخص کردن مقدار اولیه برای اعداد فیبوناچی و اسرار آن متغیر f2 مشخص میکنیم.
۶. حالا وقتشه از کاربر بپرسیم که میخواد این دنباله تا چند جمله نمایش داده بشه. یعنی تا کجا این کار ادامه پیدا کنه؟! این مقدار رو از کاربر درخواست میکنیم و اون رو توی متغیر n قرار میدیم.
۷. ما نیاز به یه حلقه داریم. برای اینکه مجبور نباشیم تمام جملات دنباله رو خودمون وارد کنیم! و این کار توسط کامپیوتر انجام بشه. بنابراین یه حلقه با شرط تعریف میکنیم و شرط توقف حلقه رو اینطور تعریف میکنیم: مادامی اعداد فیبوناچی و اسرار آن که تعداد جملات نوشته شده به عدد انتخابی کاربر نرسیده حلقه را تکرار کن.
۸. حالا باید مشخص کنیم که اگر هنوز تعداد جملاتی که نوشته شده به تعداد جملاتی که کاربر انتخاب کرده نرسیده، چه اتفاقی باید بیفته! پس یه شرط میذاریم و مقدار شرط رو مطابق کدی که نوشتیم انتخاب میکنیم.
۹. توی خط اول، اولین جملهی دنبالهی خودمون رو چاپ میکنیم.
۱۰. مقدار جملهی سوم رو از مقدار دو جملهی قبلی محاسبه میکنیم.
۱۱. از اینجا به بعد یک مقدار کمی پیچیده میشه ماجرا. چرا؟! چون باید یک سری تغییراتی توی جملاتمون بدیم. به توضیحات زیر دقت کنید:
شما در تکرار اول این اعداد فیبوناچی و اسرار آن حلقه، مقدار f3 رو محاسبه میکنید. یعنی تا الان اعداد زیر رو بدست آوردید:
و جملهی اول رو چاپ کردید. یعنی تا الان خروجیتون به این صورته:
توی خط ۱۱ اعداد فیبوناچی و اسرار آن کاری که ما انجام میدیم اینه که، اعداد رو یه دونه به عقب هل میدیم. یعنی چی؟ دنباله فیبوناچی رو اینجا رو ببینید:
و کاری که ما در این مرحله و مرحلهی بعدی یعنی خط ۱۲ انجام میدیم این دنباله رو به شکل زیر تغییر میده:
فهمیدید چی شد؟ ما با این کار عدد اول دنباله رو نوشتیم و از گردونهی اعداد خارجش کردیم.
حالا باید دوباره اولین عددی که داریم رو بنویسیم.
۱۲. توضیحات مرحلهی (خط) ۱۱ رو با دقت بخونید.
۱۳. شمارندهی ما برای اینکه بتونیم تشخیص بدیم تو چه مرحلهای هستیم باید یک واحد افزایش پیدا کنه.
۱۴. اما اگر از ابتدا، جملهای که مشخص کردیم یا عدد n برابر صفر بود چی؟!
۱۵. فقط مقدار جملهی اول یا همون ۱ در خروجی نوشته میشه و دستور توقف برنامه صادر میشه.
حالا خودتون هم این کار رو انجام بدید.
ممنون میشم اگر سوالی داشتید از طریق کامنتها مطرح کنید تا با هم دیگه بهش پاسخ بدیم.
این پست رو به دوستانتون هم معرفی کنید.
جملهی ,رو ,جمع ,فیبوناچی ,سوم ,حاصل ,دنبالهی فیبوناچی ,فیبوناچی با ,از حاصل ,حاصل جمع ,جمع جملهی