کار با چند جمله ای ها در متلب
به نام خدا و سلام.
به جلسه سی و سوم از سری جلسات آموزش متلب خوش آمدید. آموزش متلب از وبسایت متلبپلاس به صورت تخصصی ارائه میشود. در این جلسه به آموزش کار با چند جمله ای ها در متلب میپردازیم. چند جمله ای ها در متلب بخش بزرگی را به خود اختصاص دادهاند. برای این دسته خاص از عبارتهای ریاضی، دستورات زیادی در متلب ارائه شده. ایجاد چند جمله ای، ریشههای چند جمله ای، مشتق و انتگرال، ضرب و تقسیم چند جمله ای و… ازین موارد اند. در این جلسه به همهی مباحث مربوط به چند جمله ای در متلب و دستورات آن میپردازیم.
با متلب پلاس همراه باشید.
مقدمهای بر چند جمله ای ها در متلب
چند جمله ای ها عبارتهای جبری هستند که از متغیرها و ضرایب تشکیل شدهاند. برای چند جمله ای، ضرب و تقسیم، مشتق و انتگرال و… قابل تعریف است. با چند جمله ای ها در ریاضیات دبیرستان آشنا شدهایم. هر چند جمله ای مرتبه n دارای n+1 ترم (جمله) است. مثلا چند جمله ای 6x2+7x-4 را در نظر بگیرید. این چند جمله ای از مرتبه دو است. چرا که بزرگترین توان آن دو است. همچنین این چند جمله ای دارای 3 ترم است. برای تعریف چند جمله ای در متلب، باید ضرایب آن را به ترتیب از بزرگ به کوچک در یک بردار کنار هم نوشت. دقت کنید که اگر ضریب یک جمله (ترم) صفر باشد، بازهم باید آن را بنویسیم. به تصویر زیر دقت کنید.
بنابراین اولین مرحله برای کار با چند جمله ای ها در متلب، یادگیری نحوه تعریف آنها است. پس از آن به عملیات ریاضی روی چند جمله ای ها در متلب میپردازیم.
دستور poly در متلب؛ ایجاد چند جمله ای با ریشه مشخص
دستور poly به ما این امکان را میدهد که چند جمله ای با ریشههای دلخواه ایجاد کنیم. در واقع دستور poly چند جمله ای میسازد که ریشههای آن را ما تعریف میکنیم.
در ادامه آموزش متلب صفر تا صد اولین مثال از یجاد چند جمله ای را ارائه میکنیم. میخواهیم چند جمله ای داشته باشیم که ریشههای آن 1 و منفی 2 باشد. برای این کار دستور زیر را در متلب مینویسیم.
poly([1 -2])
پس از اجرا داریم:
ans =
1 1 -2
دقت کنید که هر تعداد ریشه مدنظر دارید را درون براکت [ ] تعریف کنید.
اگر بجای بردار، ماتریس درون دستور poly قرار دهیم، چند جمله ای با ریشههای مقدار ویژه ماتریس میدهد. به عبارت دیگر، ابتدا مقادیر ویژه ماتریس را محاسبه کرده و سپس آنها را بعنوان ریشهی چند جمله ای قرار میدهد. با این کار میتوانیم براحتی معادله مقادیر ویژه ماتریس را بدست آوریم.
محاسبه ریشههای چند جمله ای با دستور roots در متلب
با دستور roots میتوان ریشههای چند جمله ای را محاسبه کرد. ورودی به دستور roots حتما باید بردار باشد. مثلا معادله زیر را درنظر بگیرید.
برا محاسبه ریشههای آن به صورت زیر عمل میکنیم.
roots([1 4 -77 216 -144])
ans =
-12.0000
4.0000
3.0000
1.0000
پس اگر معادلهای داشته باشیم که در قالب چند جمله ای باشد، با دستور roots براحتی حل میشود.
مقداردهی به چند جمله ای با دستور polyval در متلب
اگر بخواهیم به یک چند جمله ای مقداردهی کنیم، از دستور polyval استفاده میکنیم. طرز استفاده از این دستور به صورت polyval(p,a) است. که مقدار a را درون چند جمله ای p قرار میدهد. برای درک بهتر به شکل زیر دقت کنید.
مثلا معادله مثال قبل را درنظر بگیرید. با توجه به اینکه ریشههای آن را محاسبه کردیم. میخواهیم مقدار چند جمله ای به ازای یکی از ریشهها را بدانیم. واضح است که پاسخ باید صفر باشد؛
p = [1 4 -77 216 -144];
a = 4;
polyval(p,a)
ans =
0
ضرب چند جمله ایها با دستور conv در متلب
برای ضرب دو چند جمله ای در متلب از دستور conv استفاده میکنیم. اگر چند جمله ای های u و v را داشته باشیم. ضرب این دو چند جمله ای با دستور conv(u,v) انجام میشود. برای درک بهتر به شکل زیر دقت کنید.
ضرب چند جمله ای های شکل بالا را در متلب به صورت زیر انجام میدهیم.
u = [1 1];
v = [1 2 -3];
conv(u,v)
ans =
1 3 -1 -3
تقسیم چند جمله ای با دستور deconv در متلب
امکان تقسیم چند جمله ای ها در متلب با دستور deconv فراهم است. مشابه با دستور conv بایستی دو عبارتی u و v را در deconv(u,v) وارد کنیم. در این نوشتار، چند جمله ای u تقسیم بر چند جمله ای v میشود. مثلا تقسیم شکل زیر را درنظر بگیرد.
این تقسیم چند جمله ایها در متلب به صورت زیر نوشته میشود.
u = [1 0 -1];
v = [1 1];
deconv(u,v)
ans =
1 -1
مشتق چند جمله ای با دستور polyder در متلب
در آموزش مشتق در متلب گفتیم که یکی از راههای مشتق گیری در متلب، استفاده از polyder است. دستور polyder(p) برای مشتق گرفتن از چند جمله ای p بکار میرود. مثلا چند جمله ای زیر را درنظر بگیرید.
مشتق این چند جمله ای در متلب به صورت زیر محاسبه میشود.
polyder([1 0 0 0 -6 0 0 1])
ans =
7 0 0 0 -18 0 0
به این ترتیب برای مشتق گیری از هر چند جمله ای کافیست ضرایب آن را درون دستور polyder قرار دهید.
انتگرال چند جمله ای ها با دستور polyint در متلب
در آموزش محاسبه انتگرال در متلب گفتیم که یکی از راههای انتگرال گیری در متلب، استفاده از دستور polyint است. دستور polyint(p) برای انتگرال گرفتن از چند جمله ای p بکار میرود. مثلا چند جمله ای زیر را درنظر بگیرید.
انتگرال نامعین این چند جمله ای در متلب به صورت زیر محاسبه میشود.
polyint([4 6 10 5])
ans =
1 2 5 5 0
اگر بخواهیم انتگرال معین از چند جمله ای بگیریم، از دستور polyval کمک میگیریم. به این صورت که ابتدا با polyint انتگرال گرفته و سپس با polyval به آن مقدار دهی میکنیم. مثلا انتگرال معین زیر را درنظر بگیرید.
محاسبه این انتگرال در متلب به صورت زیر است:
h = polyint([1 1])
h =
0.5000 1.0000 0
حال مقدارهای کران بالا و پایین انتگرال را جایگذاری میکنیم.
polyval(h,2) - polyval(h,0)
ans =
4
برازش منحنی چند جمله ای با دستور polyfit در متلب
فیت کردن منحنی به دادهها به صورت چند جمله ای با دستور polyfit(x,y,n) در متلب انجام میشود. در این دستور x و y دادههای ما و n مرتبه چند جمله ای میباشد. منظور از مرتبه، بیشترین توان در جملات چند جمله ای است. با استفاده از polyfit در واقع به دادههای ما نموداری فیت میشود که از نوع چند جمله ای است. معمولا با افزایش مرتبه چند جمله ای میتوان نمودار بهتری فیت کرد. برای درک بهتر، تابع sin(x)-cos(x) را درنظر میگیریم. به این تابع یک منحنی درجه 3 فیت میکنیم.
x = 0:0.05:2*pi;
y = sin(x) - cos(x);
p = polyfit(x,y,3);
yfit = polyval(p,x);
plot(x,y,'linewidth',1.5)
hold on
plot(x,yfit,'-.','linewidth',1.5)
title('Fit data by Polynomial curve fitting, n = 3')
legend('main plot','polyfit')
پس از اینکه منحنی با دستور polyfit فیت شد، با polyval آن را مقداردهی کردهایم. در نهایت نیز دو نمودار را روی هم رسم کردهایم. برای رسم نیز از دستور plot استفاده شدهاست. لازم به ذکر است که در جلسه جلسه 21 ام آموزش رسم نمودار در متلب به طور کامل ارائه شده. برای مشاهده روی عبارت قرمز رنگ کلیک نمائید.
پس از اجرای کد بالا داریم:
مشاهده میکنیم که نمودار با تقریب نسبتا خوبی به نمودار اصلی فیت شده. برای اینکه نمودار بهتری داشته باشیم میتوان چند جمله ای با مرتبه بالاتر ایجاد کرد. مثلا اگر منحنی درجه 5 به نمودار فیت کنیم، داریم:
x = 0:0.05:2*pi;
y = sin(x) - cos(x);
p = polyfit(x,y,5);
yfit = polyval(p,x);
plot(x,y,'linewidth',1.5)
hold on
plot(x,yfit,'-.','linewidth',1.5)
title('Fit data by Polynomial curve fitting, n = 5')
legend('main plot','polyfit')
اگر بخواهیم فرمول چند جمله ای فیت شده را ببینم باید p را مشاهده کنیم. چون در خط 4 مقدار p را با چند جمله ای فیت شده برابر قرار دادیم.
p
p =
-0.0055 0.1131 -0.7199 1.3549 0.4903 -0.9323
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) ریشههای چند جمله ای x5+x4-37x3-x2+216x-180 را در متلب محاسبه کنید.
تمرین دوم) مشتق چند جمله ای 3x5+x4+8x3+7x2+x+2 را در متلب محاسبه کنید.
تمرین سوم) انتگرال چند جمله ای 4x3-2x+1 را از 1 تا 2 در متلب محاسبه کنید.
جمعبندی
خب جلسه سی و سوم از سری جلسات آموزش متلب به پایان رسید. این جلسه به طور کامل درباره چند جمله ای ها در متلب صحبت کردیم. چند جمله ای ها بدلیل کاربرد فراوان در ریاضیات، در متلب نیز بخش ویژهای به خود اختصاص دادهاند. دستورات مختلفی برای چند جمله ای ها در متلب وجود دارد که در این جلسه به آنها پرداختیم. محاسبه ریشههای چند جمله ای در متلب، مشتق و انتگرال چند جمله ای ها، ضرب و تقسیم چند جمله ای ها و… ازین موارد اند. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
8 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام و خسته نباشید، عالی هستید و امیدوارم همیشه عالی بمونید. در تمرین آخر چرا وقتی دستور polyval(h,2)-polyval(h,1) رو میزنم با جواب h(2)-h(1) متفاوت میشن؟
h = polyint([4 0 -2 1])
polyval(h,2)-polyval(h,1)
h(2) – h(1)
h =
1 0 -1 1 0
ans =
13
ans =
-1
با سلام و عرض ادب
بسیار خوشحالیم که از کیفیت آموزشها راضی بودید.
ممنون از تیزبینی و دقت نظرتون. پاسخ درست انتگرال polyval(h,2)-polyval(h,1) است.
باتوجه به اینکه h خود نیز یک چند جملهای (و در دید متلب یک بردار) محسوب میشود، بنابراین عبارت h(2) معادل به عضو دوم بردار h و عبارت h(1) معادل با عضو اول بردار h میباشد.
ممنون بابت پاسخگویی و راهنمایی شما
خواهش میکنم مهدی جان.
موفق باشید.
با سلام و خسته نباشید.
آموزشهاتون بسیار خوب و عالیه خواستم تشکر کنم.
یه سوال هم دارم آیا از جلسه 33 به بعد دیگه ویدئو نداره یا هنوز منتشر نشده؟
ممنون میشم اگه جواب بدین.
با تشکر فراوان.
با سلام و عرض ادب
بسیار خوشحالیم که از دوره آموزش متلب راضی بودید.
بله از جلسه 33 به بعد چون مطالب تخصصی تر شدن ویدیویی براشون درنظر گرفته نشده. در حقیقت مطالب این جلسات رو بصورت یک دوره مجزا میتونید از فروشگاه متلبپلاس تهیه کنید.
موفق باشید.
با سلام و عرض ادب
از اینکه به سوال بنده جواب دادین ممنون و سپاسگزارم.
یه سوال دیگه اینکه توی آموزش سیمولینک هم از جلسه 13 تا 15 ویدئو نداره.
آیا اون 3 جلسه هم قرار نیست ویدئو داشته باشه یا خیر؟
ممنون از محبتتون.
ممنون از سایت خوبتون.
ممنون از آموزشهای خیلی خوبتون.
سلام مجدد نادر عزیز
بله اون جلسات هم دقیقا همینطورن و از محتوای اونها دوره تخصصی ارائه خواهد شد و بنابراین ویدیو نخواهند داشت.
خیلی خیلی ممنونیم از نظر لطف شما.
در پناه حق باشید.