دنباله فیبوناچی چیست؟ هر آنچه باید درباره دنباله فیبوناچی بدانید! (جلسه چهل)

دنباله فیبوناچی
دنباله فیبوناچی

در این دوره آنلاین آموزش متلب به صورت رایگان با سری آموزش‌های نرم افزار متلب در خدمت شما هستیم. در واقع آنچه که شما به طور کاملا عملی برای استفاده در انجام پروژه متلب نیاز دارید در این جلسات ارائه خواهد شد.

جلسه‌ی پیش حلقه های تکرار (For و While) در متلب را به صورت تئوری بررسی کردیم. در این جلسه قصد داریم راجع به دنباله فیبوناچی صحبت کنیم.

تمرین دنباله فیبوناچی

در این جلسه می‌خواهیم یک تمرین را جلو ببریم که درباره‌ی دنباله‌ فیبوناچی است. قبل از این‌که بخواهیم تمرین را حل کنیم و با هم به جلو برویم، بهتر است که بدانیم اصلاً دنباله فیبوناچی چیست و قوانینی بر آن حاکم است به چه صورت می‌باشد.

فیبوناچی نام دنباله است و نام یک ریاضی‌دان ایتالیایی بوده است که در بسیاری از کارهای خودش هم از ریاضیات اسلامی الهام گرفته بود. اما چرا ایتالیا و اسلام؟ زیرا پدر او یک بازرگان بود و به کشورهای بسیاری مانند سوریه و مصر سفر می‌کردند و به بسیاری از کشورهایی که می‌رفت، از کارهای آنها الهام می‌گرفت.

تمرین ۱: دنباله‌ی Fibonacci

این دنباله به صورت زیر است:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …

چرا دنباله به این صورت است؟ این دنباله به این صورت به وجود آمده است: از جمع شدن دو عدد قبلی به وجود می‌آید. مشاهده می‌کنید که ۱ به‌اضافه‌ی صفر، ۱ می‌شود و ۱ به اضافه‌ی ۱ می‌شود ۲، ۲ به اضافه‌ی ۱ می‌شود ۳، ۳ به اضافه‌ی ۲ می‌شود ۵، ۳ به اضافه‌ی ۵ برابر با ۸ و ۸ به اضافه‌ی ۵ برابر ۱۳ می‌شود و الی آخر.

بنابراین این دنباله به این صورت به وجود می‌آید که قوانین جالبی در این دنباله وجود دارد که برای مثال یکی از آنها مستطیل طلایی است. این مستطیل به چه صورت است؟

مستطیل طلایی

مستطیل طلایی در دنباله فیبوناچی
مستطیل طلایی

طول و عرض این مستطیل به صورت اعداد  هستند که  که این یک عدد طولانی است و عرض آن ۱ است.

به این مستطیل طلایی می‌گویند. به  عدد طلایی می‌گویند که اگر در این مستطیل طول تقسیم بر عرض آن برابر عدد  باشد، این مستطیل بین تمام مستطیل‌های دیگر زیباتر به نظر می‌رسد که در طبیعت هم این نسبت بسیار وجود دارد. برای مثال نسبت بند انگشت به طول انگشت به همین صورت است و به این عدد  نزدیک است و در آثار هنری خود فیبوناچی هم این عدد رعایت می‌شده که آثارش را بسیار زیباتر به وجود بیاورد.

اما می‌خواهیم ببینیم  چیست و چگونه به دست می‌آید.

یعنی برای مثال ۳ تقسیم بر ۲ باید برابر با این عدد شود که همان  یا عدد طلایی است.

 بنابراین به این نکته توجه داشته باشید که در تمرین‌هایمان هم می‌خواهیم از آن استفاده کنیم. همچنین باید توجه داشته باشید که ۳ تقسیم بر ۲ می‌شود ۵/۱ و ۵ تقسیم بر ۳ می‌شود …۶۶۶/۱. در اینجا ۵/۱ به این عدد طلایی نزدیک‌تر است یا ۶۶۶/۱؟ مشخص است که ۶۶۶/۱. یعنی‌ این‌که هرچه ما در دنباله‌ی فیبوناچی به جلوتر برویم و عددی را به دست آوریم که از تقسیم دو عدد متوالی به دست می‌آید، آن دو عدد به عدد طلایی ما نزدیک‌تر هستند. این هم نکته‌ای است که در این دنباله صدق می‌کند.

عجایب دنباله فیبوناچی

چند موضوع راجع به این دنباله می‌گوییم که شاید برای شما هم جالب باشد. اگر علاقه‌مند نبودید می‌توانید از این بحث عبور کنید. زیرا تا همین‌جا کافی بود که در مورد دنباله فیبوناچی بدانید.

اگر با استفاده از اعداد دنباله فیبوناچی مربع‌هایی را بسازیم و به شکلی در کنار هم قرار دهیم، یک مارپیچ از وصل کردن ضلع‌های مربع‌ها به دست می‌آید که این یک منحنی است که در اینجا نمایش می‌دهیم.

با استفاده از اعداد دنباله فیبوناچی مربع بسازید
ساخت مربع با استفاده از اعداد دنباله فیبوناچی

اگر به اعداد داخل شکل توجه کنید، دقیقا همان اعداد فیبوناچی هستند. که تا ۳۴ بیشتر ادامه ندادیم. اگر این مارپیچ را در اینترنت سرچ کنید، در طبیعت بسیار مثال‌های زیادی از این مارپیچ وجود دارد.

یکی از نکات دیگری که در دنباله‌ فیبوناچی وجود دارد، این است که اگر عدد یک را تقسیم بر ۸۹ کنیم، دقیقاً همان دنباله‌ فیبوناچی را به ما می‌دهد. اما چگونه؟

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

به دست آوردن عضو با نسبت طلایی

نکته‌ی دیگری که ممکن است برایتان جالب باشد، این است که به دست آوردن یک عضوی مانند عضو اول، دوم، سوم و … که در دنباله‌ فیبوناچی وجود دارد، برای مثال عضو ششم دنباله‌ فیبوناچی را می‌خواهیم به دست آوریم. چگونه می‌توانیم آن را به دست آوریم؟ با استفاده از فرمول زیر به سادگی به دست می‌آید.

نحوه محاسبه عضوی از دنباله‌ فیبوناچی
نحوه محاسبه عضوی از دنباله‌ فیبوناچی

مثلاً  یعنی عضو nام دنباله، برابر است با فرمولی که در بالا مشاهده می‌کنید.

برای این که بهتر متوجه شوید، مثالی را می‌نویسیم که در آن می‌خواهیم عضو ششم را به دست آوریم. بسیار ساده است.

در این مثال ما عدد طلایی را تا ۶ رقم اعشار نوشتیم که بیشتر از آن هم ادامه دارد.

اگر این‌ها را در ماشین حساب بنویسید، ۸ با چند رقم اعشار می‌شود ولی هرچقدر اعشار عدد طلایی را بیشتر کنیم، به عدد ۸ نزدیک‌تر می‌شود و این یعنی این‌که عضو ششم ما عدد ۸ است. در آن دنباله اگر نگاه کنید، عضو ششم عدد ۸ است.

حال وارد خود برنامه‌ی متلب می‌شویم. تا الان هر کدی را که اجرا می‌کردیم، در command window بود. ولی کار درست و زیبایی نیست.

شما باید هر پروژه‌ای که دارید یک new script بزنید. یعنی اینجا می‌زنید New و یک script باز می‌کنید که یک ادیتوری باز می‌شود و کدهای خود را در آنجا می‌نویسید و اجرا می‌کنید که الان ما می‌خواهیم تمرین خود را در همین جا ادامه دهیم.

می‌خواهیم ببینیم که آیا دنباله فیبوناچی را می‌توانیم در متلب شبیه‌گذاری کنیم یا خیر. روش‌های مختلفی وجود دارد که ما می‌خواهیم از ساده‌ترین روش‌ها استفاده کنیم. بنابراین ابتدا یک New script می‌زنیم و یک script برای خودمان می‌سازیم که نام آن را هرچه که دوست داشته باشیم، می‌توانیم بگذاریم و ما نام آن را fib می‌گذاریم.

سپس وارد script خودمان می‌شویم. در اینجا یک ادیتوری برای ما باز شده است که در اینجا دیگر می‌توانیم کارهایمان را انجام دهیم و اگر این ادیتور را ذخیره کنید، همه این‌ فایل‌ها .m هستند یعنی پسوند این فایل‌ها می‌شود m file. پسوند همه فایل‌های متلب m file است.

حال اولین کدی که در اینجا اجرا می‌کنیم clc است. به چه دلیل؟ ما دوست داریم clc بنویسیم. زیرا با این کار صفحه command window پاک می‌شود. سپس یک clear می‌زنیم که اکثرا این کار را انجام می‌دهند و این clear حافظه را پاک می‌کند و چیزهایی که از قبل وجود داشت را پاک می‌کند و خیالمان را راحت می‌کند.

حال می‌خواهیم دنباله فیبوناچی را بسازیم. یک روش این است که بگوییم F(1) یعنی جمله‌ی اول دنباله ۱ است. F(2) یعنی جمله دوم دنباله هم ۱ می‌شود. ما گفته بودیم که جمله اول دنباله صفر است. ولی اینجا از ۱ شروع می‌کنیم. می‌گوییم F(3) یعنی جمله سوم دنباله می‌شود جمله قبلی یعنی جمله دوم به اضافه‌ی جمله‌ی اول ما. F(3)=F(2)+F(1)

برای جمله بعدی که جمله‌ی چهارم است، می‌نویسیم F(4)=F(3)+F(2)

همین‌طور باید تا جایی که لازم داریم، بنویسیم. یعنی اگر تا جمله‌ی بیستم را بخواهیم باید همین‌طور تا ۲۰ ادامه دهیم که این کار جالبی نیست.

این کار نشان می‌دهد که ما چیزی از برنامه‌نویسی بلد نیستیم وقتی که داریم این کار را انجام می‌دهیم. پس باید چه کاری انجام دهیم؟

تا جمله دوم دنباله که ۱ بود. طبق جلسه قبل و توضیحاتی که بیان کردیم، می‌نویسیم برای kهای ۳ تا ۲۰ که در اینجا ما تا ۲۰ را می‌خواستیم.

چرا زیر for خط قرمز کشیده شده است؟ این نکته هم باید بگوییم که ما یک indicator در این قسمت داریم.

وقتی قرمز باشد یعنی این‌که کد شما اشتباه است. یعنی اصلا اجرا نمی‌شود. صحیح نیست و رنگ آن قرمز می‌شود.

for  را در جلسه‌ی قبل توضیح دادیم که چگونه است. اگر ما end را قرار دهیم و کدها و دستورات را هم قرار دهیم، رنگ آن زرد یا سبز می‌شود. وقتی که رنگ سبز باشد، یعنی برنامه هیچ مشکلی ندارد و درست است ولی اگر نارنجی یا همان زرد مانند باشد، یعنی این‌که بهتر است هیچ‌جا نباشد و به نوعی مانند مستحب بودن خودمان می‌ماند.

در اینجا گفتیم که k از ۳ تا ۲۰ باشد. بعد از آن می‌خواهیم دستورات را بنویسیم. می‌گوییم که F(k) برابر است با F(k-1) یعنی یک جمله قبل از جمله‌ای که الان داریم، به اضافه‌ی یک جمله‌ قبل‌تر از جمله‌ی الان که با F(k-2) نشان می‌دهیم. مشاهده می‌کنید که دستور ساده است. جمله‌ای که الان داریم برابر است با یک جمله‌ی قبلی به اضافه دو جمله‌ قبل از آن.

بعد end را می‌زنیم و مشاهده می‌کنید که رنگ = به رنگ نارنجی درآمد که به ما یک warning داد.

می‌گوید که بهتر است که این‌گونه بنویسید و اگر آن را هم درست کنیم، به رنگ سبز درمی‌آید.

حال ما این کدها را می‌نویسیم و می‌خواهیم آن را run کنیم.

برای run کردن این هم می‌توانید در بالا فلش سبز رنگ run را بزنید و هم می‌توان کلید F5 را بزنید و هم می‌توانیم در این قسمت کلیک راست کنید و Run را انتخاب کنید.

روش‌های زیادی وجود دارد.

مشاهده می‌کنید که خطا (error) دریافت کردیم. می‌گوید undefined function ….

در اینجا می‌گوید F را نمی‌شناسد. اول این‌که ما ابتدا باید جمله ۱ و ۲ هم تعریف کنیم و باید F را هم بشناسد. در مورد این بیشتر توضیح خواهم داد.

یک بار دیگر اینجا را clear و پاک می‌کنیم.

یک بار دیگر این را می‌سازیم. جمله اول و دوم را می‌نویسیم که F را بشناسد. جفت جمله‌های اول و دوم ما یک بود. حال می‌گوییم که برای kهای مثل ۳ تا ۱۰ بنویسید F(k)=F(k-1)+F(k-2) یعنی جمع دو جمله‌ی قبل از جمله‌ی فعلی و بعد end را می‌نویسیم.

الان باید run کنیم.

در اینجا F را که همان دنباله‌ فیبوناچی ما است، دارد نشان می‌دهد. اگر تصویر فوق را مشاهده کنید، متوجه خواهید شد که همان دنباله فیبوناچی است. جمله اول و دوم را خودمان تعریف کردیم که F را بشناسد. جمله‌های بعدی ۲، ۳ الی ۵۵ هستند که جمله‌ی دهم این دنباله است.

هرچقدر بخواهید می‌توانید این دنباله را افزایش دهید.

مثلاً به جای ۱۰، ۹۰ وارد می‌کنیم و می‌خواهیم تا جمله ۹۰ را به ما نشان دهد. در اینجا مشاهده می‌کنید که تا جمله‌ی ۹۰ را به ما داده است. این‌جا جمله‌ها بزرگ شدند و به این صورت نوشته شده است.

e+09 یعنی ضربدر شده است.

هرچقدر جلوتر برویم، مشاهده می‌کنیم که اعداد بزرگتر شدند و e+17 را داریم که یعنی ضربدر   شده است.

در اینجا در این دستور و برنامه‌ای که نوشتیم، متغیری را تعریف نکردیم و همین‌طور به سادگی آن را نوشتیم. در برنامه‌هایی مانند برنامه‌های CC، Javascript و … اگر می‌خواستیم این کدها را بنویسیم، باید متغیر تعریف می‌کردیم. اما در متلب ایرادی نمی‌گیرد و همین ایراد نگرفتن برای ما مشکل‌ساز می‌شود و باید بسیار دقت کنیم که بعداً راجع به آن با هم صحبت خواهیم کرد. فقط می‌خواستم بدانید که چنین تفاوتی وجود دارد.

در جلسه آینده در رابطه با عدد طلایی در متلب صحبت خواهیم کرد.

در صورتی که شما پس از خواندن محتوای جلسات قبلی و این بخش که به ساده‌ترین زبان ممکن درباره‌ی برنامه‌ی متلب و محیط کاربری آن توضیح داده باز هم سردرگم هستید. می‌توانید با برون سپاری انجام پروژه متلب خود به کارشناسان حرفه‌ای کارت پروژه می‌باشد. میتوانید از طریق شماره‌ی 09104503300 با پشتیبانان کارت از طریق پیام یا تماس در ارتباط باشید.

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

برای ثبت سفارش لطفا در تلگرام یا واتساپ یا ایتا به شماره 09104503300 پیام دهید.