سلام دوباره
هفتهی پیش بود اگر اشتباه نکنم که روش بدست آوردن جملهی nام دنبالهی فیبوناچی رو با استفاده از کدهای دستوری متلب یاد دادیم. فایلش هم موجوده که میتونید برید به رایگان دانلود کنید و استفاده کنید.
این دفعه قصد دارم بهتون یاد بدم چطوری با استفاده از بسط تیلور توابع سینوس یا کسینوس، مقدار سینوس زاویهی دلخواهتون رو فقط با نوشتن چند خط کد ساده بدست بیارید.
خب. برای شروع اول باید بدونیم که بسط تیلور تابع سینوس به چه صورت نوشته میشه. به رابطهی زیر دقت کنید:
خب. همونطور که مشاهده میکنید، طرف دوم این تساوی یک دنبالهای از اعداد رو شامل میشه که در واقع هرچقدر مقدار جملات بیشتر باشن، دقت خروجی شما (یعنی مقدار سینوس زاویهی بدست اومده) دقیقتر خواهد بود. به تفاوت دو مقدار بدست اومدهی زیر دقت کنید؛ بار اول تعداد تکرارها یا جملات بسط تیلور رو برابر یک قرار دادیم و خروجی سینوس زاویه Pi/6 برابر 0.5236 شده. در حالی که شما میدونید سینوس ۳۰ درجه دقیقا برابر 0.5 هست.
x is the angle & n is the number of iterrations set x value: pi/6 set n value: 1 0.5236
حالا اگر تعداد جملات رو بیشتر کنیم چی میشه؟ ببینید:
x is the angle & n is the number of iterrations set x value: pi/6 set n value: 5 0.5000
همونطور که میبینید به سادگی با افزایش تعداد جملات از ۱ به ۵ دقت خروجی به طرز چشمگیری تغییر میکنه. شاید بگید حالا که با ۵ تا جمله این اتفاق میافته چه کاریه n رو خیلی بزرگ انتخاب کنیم؟! خب پاسخ در این خلاصه میشه که ۱. همیشه اینطور نیست که با ۵ جمله به دقت مطلوب برسید و ۲. مختارید که چه تعداد از جملات رو استفاده کنید.
اما کد اصلی که منتج به این خروجی میشه چیه.
کدهای زیر رو نگاه کنید تا توضیحاتش رو باهم مرور کنیم:
clear all; clc; s=0; disp('x is the angle & n is the number of iterrations'); x=input('set x value: '); n=input('set n value: '); m=1; i=1; f=x; while(i<=n) h=factorial(i); z=(f/(h*m)); s=s+z; if i<n i=i+2; f=f*x*x; m=-m; else break; end end disp(s);
در بخش اول این کدها، همونطور که در ابتدا توضیح دادیم، مقادیر n (یعنی تعداد جملات بسط تیلور) و x (یعنی زاویهای که میخوایم سینوسش رو محاسبه کنیم) رو از کاربر دریافت میکنیم و اونها رو توی متغیرهایی به همون اسم ذخیره میکنیم. مقادیر m، i و f هم به ترتیب متغیرهایی هستن که داخل حلقهها و شرطهامون ازشون استفاده میکنیم.
برای اینکه هربار یک جمله از این بسط رو تولید کنیم و با مقادیر قبلی جمع کنیم تا در نهایت به خروجی مطلوبمون برسیم باید از یک حلقه استفاده کنیم. شرط توقف این حلقه رسیدن شمارندهی i به تعداد جملات انتخاب شده توسط کاربر یعنی n هست.
داخل این حلقه هربار مقدار فاکتوریل دیده شده در فرمول رو تولید میکنیم و اون روی توی h قرار میدیم.
z مقدار محاسبه شدهی خروجی بسط تیلور در جملهی iام هست و با کمی دقت به فرمول و کد نوشته شده متوجه ارتباطشون خواهید شد.
اما خروجی اصلی باید مجموع مقادیر z محاسبه شده تا اون جمله باید باشه و این کار رو با جملهی بعدی یعنی s=s+z انجام میدیم.
برای ادامهی روند باید یک سری شروط رو چک کنیم تا در صورتی که شرطها برقرار نبودن برنامه متوقف بشه و یا در صورتی که نیاز به ادامهی روند وجود داشت، یک سری تغییرات در مقادیر متغیرها ایجاد کنیم.
شرط اصلی این برنامه رسیدن شمارنده i به مقدار n انتخاب شده توسط کاربره. پس مادامی که i به n نرسیده، برنامه باید به کار خودش ادامه بده. اما برای اینکه به مرحلهی بعدی بریم اول باید مقدار شمارنده i و مقدار f یا در واقع همون x که در هر مرحله توانش تغییر میکنه و همچنین علامت جمله رو که با متغیر m تعیین میکنیم تغییر بدیم. برای درک این قسمت با دقت به فرمول بسط تیلور تابع سینوس نگاه کنید.
بعد از ایجاد تغییرات در متغیرهامون باید به ابتدای حلقه بریم و مجدد کارهایی که در خطوط قبلی توضیح دادیم رو تکرار کنیم.
ممنونم که همراهی میکنید.
اگر این متلب برای شما یا اشخاصی که میشناسید مفید بود، ممنون میشم نظرات خودتون رو با من به اشتراک بذارید. همچنین خوشحال میشم اگر این صفحه رو به کسانی که فکر میکنید علاقمند هستند یا بهش نیاز دارن معرفی کنید.
اگر سوالی دارید از طریق نظرها بپرسید تا جواب بدم.
فایل این برنامه رو بزودی از زیر همین پست به رایگان میتونید دریافت کنید.
درباره این سایت