سلام رفقا
توی این پست میخوام روش سادهای برای بدست آوردن دنبالهی فیبوناچی با استفاده از دستورات متلب رو براتون توضیح بدم.
برای این کار پیشنیاز زبان برنامهنویسی متلب (پایهی زبان C) و اندکی هم فلوچارت نویسی هست که البته اصلا نگران نباشید اگر این ها رو بلد نیستید. چون زبانی بسیار سادهست و به راحتی میتونید تحلیلش کنید
همونطور که میدونید دنبالهی فیبوناچی این شکلیه:
1, 1, 2, 3, 5, 8, 13, 21 و.
اگر کمی بهش دقت کنید متوجه میشید که در مرحله اول عدد ۱ رو با ۱ جمع میکنیم. مرحله دوم یا به عبارتی جملهی سوم دنبالهی فیبوناچی با جمع کردن دو جملهی قبلی حاصل میشه یعنی اگر جملات رو با fn مشخص کنیم، جمله سوم دنباله از طریق رابطهی f3=f2+f1 بدست میاد. و همینطور جمله چهارم هم از حاصل جمع جملهی دوم و سوم، جملهی پنجم از حاصل جمع جملهی چهارم و سوم و الی آخر.
دقیقا کاری که ما میخوایم توی محیط متلب انجام بدیم:
این کدها رو ببینید:
clc; clear all; i=0; f1=1; f2=1; n=input('set n value:'); while(i<n) if i<=n disp(f1); f3 = f2+f1; f1 = f2; f2 = f3; i=i+1; elseif i>n disp(f1); break; end end
برای توضیحش از خط اول شروع میکنیم و خط به خط میریم جلو
۱. این دستور به منظور تمیز کردن command prompt متلب استفاده میشه و یه جورایی کدهای اضافی رو از صفحه پاک میکنه.
۲. هر متغیری که توی workspace شما ذخیره شده باشه با این دستور پاک میشه.
۳. برای حلقههایی که داریم باید از یه شمارنده استفاده کنیم. متغیر i رو برای شمارش تعداد تکرارهای حلقهمون استفاده میکنیم.
۴. جملهی اول دنبالهی فیبوناچی رو با مشخص کردن مقدار اولیه برای متغیر f1 مشخص میکنیم.
۵. مشابه خط قبلی، جملهی دوم دنباله رو با مشخص کردن مقدار اولیه برای متغیر f2 مشخص میکنیم.
۶. حالا وقتشه از کاربر بپرسیم که میخواد این دنباله تا چند جمله نمایش داده بشه. یعنی تا کجا این کار ادامه پیدا کنه؟! این مقدار رو از کاربر درخواست میکنیم و اون رو توی متغیر n قرار میدیم.
۷. ما نیاز به یه حلقه داریم. برای اینکه مجبور نباشیم تمام جملات دنباله رو خودمون وارد کنیم! و این کار توسط کامپیوتر انجام بشه. بنابراین یه حلقه با شرط تعریف میکنیم و شرط توقف حلقه رو اینطور تعریف میکنیم: مادامی که تعداد جملات نوشته شده به عدد انتخابی کاربر نرسیده حلقه را تکرار کن.
۸. حالا باید مشخص کنیم که اگر هنوز تعداد جملاتی که نوشته شده به تعداد جملاتی که کاربر انتخاب کرده نرسیده، چه اتفاقی باید بیفته! پس یه شرط میذاریم و مقدار شرط رو مطابق کدی که نوشتیم انتخاب میکنیم.
۹. توی خط اول، اولین جملهی دنبالهی خودمون رو چاپ میکنیم.
۱۰. مقدار جملهی سوم رو از مقدار دو جملهی قبلی محاسبه میکنیم.
۱۱. از اینجا به بعد یک مقدار کمی پیچیده میشه ماجرا. چرا؟! چون باید یک سری تغییراتی توی جملاتمون بدیم. به توضیحات زیر دقت کنید:
شما در تکرار اول این حلقه، مقدار f3 رو محاسبه میکنید. یعنی تا الان اعداد زیر رو بدست آوردید:
f1, f2, f3
1, 2, 3
و جملهی اول رو چاپ کردید. یعنی تا الان خروجیتون به این صورته:
1
توی خط ۱۱ کاری که ما انجام میدیم اینه که، اعداد رو یه دونه به عقب هل میدیم. یعنی چی؟ دنباله فیبوناچی رو اینجا رو ببینید:
f1, f2, f3, f4, f5, f6, .
1, 1, 2, 3, 5, 8, .
و کاری که ما در این مرحله و مرحلهی بعدی یعنی خط ۱۲ انجام میدیم این دنباله رو به شکل زیر تغییر میده:
f1, f2, f3, f4, f5, f6, .
1, 2, 3, 5, 8, 13, .
فهمیدید چی شد؟ ما با این کار عدد اول دنباله رو نوشتیم و از گردونهی اعداد خارجش کردیم.
حالا باید دوباره اولین عددی که داریم رو بنویسیم.
۱۲. توضیحات مرحلهی (خط) ۱۱ رو با دقت بخونید.
۱۳. شمارندهی ما برای اینکه بتونیم تشخیص بدیم تو چه مرحلهای هستیم باید یک واحد افزایش پیدا کنه.
۱۴. اما اگر از ابتدا، جملهای که مشخص کردیم یا عدد n برابر صفر بود چی؟!
۱۵. فقط مقدار جملهی اول یا همون ۱ در خروجی نوشته میشه و دستور توقف برنامه صادر میشه.
حالا خودتون هم این کار رو انجام بدید.
ممنون میشم اگر سوالی داشتید از طریق کامنتها مطرح کنید تا با هم دیگه بهش پاسخ بدیم.
این پست رو به دوستانتون هم معرفی کنید.
سلام
وقت بخیر
دکتر زهرا مروج با مرتبهی استاد تمام در دانشگاه سمنان ترمهای زیادی هست که به تدریس درس حفاظت و رله میپردازن.
بنده دانشجوی ایشون بودم در مقطع کارشناسی. دو فایل PDF از تمرینهای مرتبط با این درس در مورد طراحی حفاظت دیفرانسیل ترانس و باسبار، و همچنین طراحی رلههای دیستانس از ترم ۹۷-۹۸ ایشون رو براتون به اشتراک میذارم؛ تمرینهای ارزشمندی هستن و فکر نمیکنم جایی بتونید مشابه اینها رو به راحتی تهیه کنید. چون خودم هم خیلی دنبالش گشتم ولی متاسفانه منابع بسیار محدود هستند بخصوص منابع سوال همراه با پاسخ.
برای دانلود فایلها ادامهی مطلب رو باز کنید.
ادامه مطلب
درباره این سایت