محاسبه انتگرال در متلب
به نام خدا و سلام.
به جلسه سی و یکم از سری جلسات آموزش متلب خوش آمدید. آموزش متلب از وبسایت متلبپلاس به صورت رایگان ارائه میشود. در این جلسه به آموزش محاسبه انتگرال در متلب میپردازیم. انتگرال یکی از مباحث پرکاربرد ریاضی است که یادگیری آن در متلب ضروری است. نحوه محاسبه انتگرال تحلیلی (معین و نامعین)، انتگرال عددی، انتگرال چندگانه و … از مباحث این جلسه هستند.
با متلب پلاس همراه باشید.
محاسبه انتگرال تحلیلی در متلب
انتگرال و مشتق از مباحث پایه و بسیار پرکاربرد در ریاضی است. یادگیری محاسبه انتگرال در متلب به ما کمک میکند تا در مسائل ریاضی نگران محاسبات پیچیده آنها نباشیم. علاوه بر آن، ممکن است در دروس مختلف به انتگرالی برخورد کنیم که حل آن دشوار باشد. در این مواقع، متلب به عنوان یک ماشین حساب قدرتمند به کمک ما میآید.
انتگرال تحلیلی در متلب با دستور int محاسبه میشود. این دستور در مجموعه تولباکس سیمبولیک متلب قرار دارد. به عبارت دیگر، برای استفاده از int باید متغیر سیمبولیک (نمادین) تعریف نمود. دستور int(expr,var,a,b) انتگرال تابع expr را برحسب متغیر var در بازه a تا b محاسبه میکند. اگر تابع وارد شده تابعی از یک متغیر باشد، نوشتن var الزامی نیست. دستور int هم انتگرال معین و هم انتگرال نامعین را محاسبه میکند. اگر بازهی انتگرال گیری وارد شود، انتگرال معین و اگر وارد نشود، انتگرال نامعین محاسبه میشود.
به سراغ اولین مثال از محاسبه انتگرال در آموزش مقدماتی متلب میرویم. در این مثال تابع سینوس را در نظر میگیریم.
syms x
f = sin(x);
int(f)
قبلا هم ذکر شد که پیش از تعریف تابع، بایستی متغیر سیمبولیک را تعریف کنیم. این کار با دستور syms و آوردن نامها پس از آن انجام میشود. پس از اجرا داریم:
ans =
-cos(x)
حال میخواهیم انتگرال سینوس را از صفر تا π محاسبه کنیم. برای این کار ابتدا و انتهای بازه انتگرال گیری را درون دستور int مینویسیم.
syms x
int(sin(x),0,pi)
ans =
2
مشاهده میشود که پاسخ در این حالت یک عدد است.
در مثال بعد یک تابع چند متغیره درنظر میگیریم. میخواهیم انتگرال تابع sin(2x+4y) را برحسب x محاسبه کنیم.
syms x y
f = sin(2*x + 4*y);
int(f,x)
ans =
sin(x + 2*y)^2
در کرانهای انتگرال میتوان متغیر یا عبارت ریاضی قرار داد. در مثال زیر، انتگرال تابع x را از 0 تا sin(t) محاسبه میکنیم.
syms x t
int(x,0,sin(t))
ans =
sin(t)^2/2
اما در ریاضی هم گاهی با انتگرالهایی مواجه میشویم که حل تحلیلی ندارند. در این موارد دستور int نمیتواند انتگرال را محاسبه کند. در مثال زیر، ناتوانی دستور int برای محاسبه انتگرال را مشاهده میکنیم.
syms x
int(x/sinh(x),0,1)
ans =
int(x/sinh(x), x, 0, 1)
در این موارد بایستی از حل عددی انتگرال استفاده کنیم. در ادامهی آموزش، نحوه محاسبه انتگرال عددی ارائه میشود.
محاسبه انتگرال عددی در متلب
همانطور که گفتیم، در موارد زیادی انتگرال پاسخ تحلیلی ندارد. در نتیجه دستور int پاسخگو نیست. در این شرایط، انتگرال را به صورت عددی حل میکنیم. بهترین دستور برای محاسبه انتگرال عددی در متلب، دستور integral است. دستور integral(fun,a,b) انتگرال تابع fun را در بازه a تا b به صورت عددی محاسبه میکند. تابع fun بایستی به صورت تابع یا فانکشن هندل تعریف شود. آموزش کامل تعریف تابع در متلب، در جلسه 19 ام ارائه شدهاست (برای مشاهده روی لینک قرمز کلیک کنید).
به سراغ اولین مثال از محاسبه انتگرال عددی در متلب میرویم. در بالا دیدیم که دستور int توانایی محاسبه انتگرال تابع x/sinh(x) را نداشت. این تابع را با دستور integral انتگرال میگیریم.
f = @(x) x./sinh(x);
integral(f,0,1)
ans =
0.9481
حال یک انتگرال پیچیده دیگر را با استفاده از integral حل میکنیم. به انتگرال زیر دقت کنید.
این انتگرال به هیچ وجه با روش تحلیلی قابل حل نیست. برای محاسبه عددی آن داریم:
f = @(x) sin(x./sqrt(x+1));
integral(f,0,pi)
ans =
2.2844
در مثالهایی که تاکنون دیدیم، یک تابع برای انتگرال گیری وجود داشت. حال فرض کنید که بجای تابع، دادههای عددی (نقاط تابع) را داریم. در این شرایط انتگرال گیری چگونه است؟ پاسخ این سوال را در ادامه میدهیم.
محاسبه انتگرال دادههای عددی در متلب
منظور از دادههای عددی، نقاط تابع است. فرض کنید میخواهیم انتگرال نقاط (داده عددی) را بگیریم. در این حالت از دستور trapz استفاده میکنیم. دستور trapz انتگرال را به روش ذوزنقهای محاسبه میکند. در این روش، کل ناحیه به چندین ذوزنقه تقسیم شده و انتگرال محاسبه میشود. در شکل زیر روش انتگرال ذوزنقه نشان داده شده.
trapz(y) انتگرال دادههای y را با گام واحد و دستور trapz(x,y) انتگرال y را با گامهای x محاسبه میکند. برای درک بهتر دادههای تابع سینوس را درنظر میگیریم. x برداری است از 0 تا π (با گامهای 0.05) و y مقدار این نقاط در تابع سینوس. اگر انتگرال تابع سینوس را در بازه 0 تا π با int محاسبه کنیم، مقدار آن برابر 2 است. حال این را با trapz چک میکنیم.
x = 0:0.05:pi;
y = sin(x);
trapz(x,y)
ans =
1.9987
مشاهده میکنیم که پاسخ بسیار نزدیک به مقدار واقعی است. اگر گامهای x را کمی کوچکتر کنیم، پاسخ دقیقتر میشود.
x = 0:0.01:pi;
y = sin(x);
trapz(x,y)
ans =
2.0000
پس برای محاسبه انتگرال نقاط (دادههای عددی) از دستور trapz استفاده میکنیم. این دستور برای انتگرال گیری دادههای آزمایشگاهی یا تجربی بسیار مفید است.
محاسبه انتگرال دوگانه در متلب
انتگرال دوگانه انتگرالی است که ابتدای روی یک متغیر و سپس روی متغیر دیگر، محاسبه میشود. اگر تابع تحت انتگرال ساده و انتگرال پذیر باشد، پاسخ تحلیلی برای انتگرال دوگانه داریم. به عبارت دیگر، میتوان از دستور int استفاده کرد. اما اگر تابع تحت انتگرال پیچیده باشد، حل تحلیلی نداشته و بایستی از حل عددی استفاده کنیم.
انتگرال دوگانه تحلیلی
محاسبه انتگرال دوگانه تحلیلی با دستور int انجام میشود. برای محاسبه انتگرال دوگانه باید دستور int را به صورت تودرتو بکار ببریم. منظور از تودرتو این است که خروجی int اول، ورودی int دوم باشد. مثلا انتگرال دوگانه تابع fun از a تا b برحسب x و از c تا d برحسب y به صورت int(int(fun,x,a,b),y,c,d) است. مثلا انتگرال دوگانه زیر را درنظر بگیرید.
برای حل این انتگرال دوگانه در متلب، به صورت زیر عمل میکنیم.
syms x y a b c d
f = sin(x+y);
int(int(f,x,a,b),y,c,d)
ans =
sin(a + d) - sin(a + c) + sin(b + c) - sin(b + d)
اما ممکن است انتگرال دوگانه پاسخ تحلیلی نداشته باشد. در این حالت باید آن را به صورت عددی حل کرد.
انتگرال دوگانه عددی
دستور integral2 در متلب برای محاسبه انتگرال دوگانه عددی بکار میرود. نوشتار و طرز استفاده از integral2 مشابه با integral است. یعنی تابع موردنظر برای انتگرال گیری باید به صورت فانکشن هندل نوشته شود. دستور integral2(fun,xmin,xmax,ymin,ymax) انتگرال دوگانه عددی تابع fun را از xmin تا xmax برحسب x و از ymin تا ymax برحسب y محاسبه میکند. انتگرال دوگانه زیر را درنظر بگیرید.
این انتگرال پاسخ تحلیلی ندارد. با استفاده از دستور integral2 آن را محاسبه میکنیم.
f = @(x,y) 1./( sqrt(x + y) .* (1 + x + y));
integral2(f,0,1,0,2)
ans =
0.8684
محاسبه انتگرال سه گانه در متلب
مشابه با انتگرال دوگانه، انتگرال سه گانه و چندگانه نیز در متلب قابل محاسبه است. اگر به دنبال پاسخ تحلیلی انتگرال سه گانه باشیم از دستور int استفاده میکنیم. اگر محاسبه عددی انتگرال سه گانه مدنظر باشد نیز از دستور integral3 استفاده میشود.
انتگرال سه گانه تحلیلی
انتگرال سه گانه تحلیلی با دستور int و به صورت تودرتو نوشته میشود. مثلا انتگرال سه گانه تابع sin(x+y+z) را درنظر بگیرید. میتوان همهی این انتگرالها را پشت سرهم و تودرتو نوشت و یا جدا جدا. به کدهای زیر دقت کنید. هر دو فرم زیر معادل اند.
syms x y z
f = sin(x + y + z);
int(int(int(f,x),y),z)
ans =
cos(x + y + z)
syms x y z
f = sin(x + y + z);
int1 = int(f,x);
int2 = int(int1,y);
int3 = int(int2,z)
int3 =
cos(x + y + z)
انتگرال سه گانه عددی
برای محاسبه انتگرال سه گانه عددی در متلب از دستور integral3 استفاده میشود. دستور integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax) انتگرال سه گانه تابع fun را برای بازههای مشخص شده محاسبه میکند. انتگرال سه گانه پیچیده زیر را درنظر بگیرید.
برای حل این انتگرال سه گانه در متلب به صورت زیر عمل میکنیم.
f = @(x,y,z) z./( (1 + y) .* sin(x + y));
integral3(f,0,1,1,2,0,5)
ans =
6.4201
محاسبه انتگرال مختلط در متلب
برای محاسبه انتگرال مختلط در متلب از دستور integral استفاده میکنیم. با توجه به اینکه انتگرال مختلط روی مسیر محاسبه میشود، نقاط مسیر را بعد از دستور Waypoints وارد میکنیم. در واقع integral(fun,a,b,’Waypoints’,C) انتگرال مختلط fun را با نقطه ابتدا و انتهای a و b و نقاط مسیر C حل میکند. مثلا انتگرال مختلط زیر را درنظر بگیرد.
برای محاسبه انتگرال مختلط فوق در مسیر مربعی که قطب هم درون آن باشد، داریم:
fun = @(z) exp(z)./z;
C = [1+i -1+i -1-i 1-i];
integral(fun,1,1,'Waypoints',C)
ans =
-0.0000 + 6.2832i
پاسخ دقیق این انتگرال مختلط (از ریاضی مهندسی) برابر با 2πi است. مقدار محاسبه شده توسط متلب نیز همین مقدار است.
محاسبه انتگرال چند جملهای در متلب (polyint)
چند جملهایها در متلب دارای دستورات خاص و پرکاربردی اند. در جلسه سی و سوم به طور کامل مباحث چند جملهای پوشش داده شده. اما در اینجا به انتگرال چند جملهای با polyint اشاره میکنیم. برای انتگرال گیری با این دستور بایستی چند جملهای را با ضرایب آن تعریف کرد. مثلا چند جملهای 5x4+16x3-3x2+2x-6 را درنظر بگیرد. انتگرال این چند جملهای در متلب به صورت زیر محاسبه میشود.
polyint([5 16 -3 2 -6])
ans =
1 4 -1 1 -6 0
حال انتگرال این چند جملهای را با دستور int به صورت تحلیلی نیز محاسبه میکنیم.
syms x
f = 5*x^4 + 16*x^3 - 3*x^2 + 2*x - 6;
int(f)
ans =
x^5 + 4*x^4 - x^3 + x^2 - 6*x
مشاهده میشود که پاسخ polyint نیز دقیقا همین پاسخ است. با این تفاوت که فقط ضرایب هر جمله را نمایش داده.
تمرینات این جلسه
در انتهای این جلسه 3 تمرین متلب مربوط به مباحث این جلسه ارائه شده است. لطفا این تمرینها را حل کرده و با پاسخ آن مقایسه کنید. پاسخ تمرینات متلب این جلسه در کانال تلگرام متلب پلاس منتشر میشود. از آیکونهای سمت راست صفحه میتوانید در این کانال عضو شوید.
تمرین اول) انتگرال sin(x)/x را به صورت عددی از 0 تا 2π محاسبه کنید.
تمرین دوم)انتگرال cos(x)/(1+x) را از صفر تا π محاسبه کنید.
تمرین سوم) انتگرال سه گانه زیر را در متلب به صورت عددی حل کنید.
Fun: (x – y + z2) * sinh(z + sin(x) ), x = 0:3, y = 1:2, z = 0:1
جمعبندی
خب جلسه سی و یکم از سری جلسات آموزش متلب به پایان رسید. این جلسه به طور کامل درباره محاسبه انتگرال در متلب صحبت کردیم. محاسبه انتگرال تحلیلی و عددی اهمیت زیادی در محاسبات مهندسی دارد. روشهای مختلف و متنوعی برای محاسبه انتگرال معین، نامعین و انتگرالهای چندگانه در متلب ارائه شد. تسلط به محاسبه انتگرال در متلب کمک زیادی در محاسبات ریاضی نیز به شما میکند. چرا که با قدرت متلب میتوان هر انتگرالی را به صورت تحلیلی یا عددی حل نمود. در انتها چند تمرین برای یادگیری بیشتر به شما واگذار کردیم که پاسخ آنها در کانال تلگرامی متلب پلاس وجود دارد. بی صبرانه منتظر نظرات، سوال و ابهامات شما عزیزان هستیم. سعی میکنیم تا هرگونه سوال یا ابهامی که در این باره دارید را پاسخ دهیم.
توصیه میشود که حتما تمرینات این جلسه را انجام بدید و اگر سوال و ابهامی دارید در بخش نظرات (پایین همین صفحه) به ما بگید. از فهرست سمت راست هم میتونید به بقیه جلسات دسترسی داشته باشید.
6 Comments
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام و عرض ادب
با تشکر از سایت آموزنده شما
انتگرال زیر را از هر روشی رفتم به مشکل برخوردم اگه امکان داره راهنمایی بفرمایین
sech((e-x)/L)*(1+10*R*(x-g)+126*R^2*(x-g)^2)/(1-exp(-2*pi*sqrt(b/x-g)))
حدود انتگرال از g تا بی نهایت
سلام و عرض ادب
در محاسبات پارامتری مثل انتگرال، دو تا موضوع در متلب هست. خطای سینکتس (ساختاری) و یا خطای محتوایی. منظور از مورد اول خطاهای کدنویسی هست و مورد دوم زمانی پیش میاد که متلب نمیتونه محاسبه رو انجام بده. از سوال شما من متوجه نشدم که کدوم مورد پیش اومده.
اگر کدنویسی تون درسته و پاسخ درستی از انتگرال دریافت نمیکنید، میتونه بخاطر حلگر تحلیلی متلب باشه که معمولا برای همه انتگرالها پاسخ نداره.
اگر خطایی برای کدنویسی دریافت میکنید باید سینتکس نوشتن انتگرال رو بررسی کنید که در ویدیوی این جلسه بطور کامل شرح داده شده.
امیدوارم پاسخ سوالتون رو داده باشم.
سلام و عرض ادب
آیا زحمت نوشتن یه برنامه که هدف اصلی آن برازش منحنی تئوری با دادههای تجربی است را قبول می کنید؟ تابع تئوری شما یکه قسمت انتگرال گیری است
اگر جواب مثبت است است هزینه را بفرمایین
ممنون
سلام و عرض ادب
مجموعه متلبپلاس در زمینه انجام پروژه فعالیت نداره دوست عزیز.
موفق باشید.
سلام وقت بخیر
برای محاسبه انتگرال با حدود بینهایت از چه دستوری باید استفاده کرد؟
سلام و عرض ادب
عدد بینهایت رو در متلب با inf ایجاد میکنیم. برای نوشتن انتگرال با کرانهای بینهایت کافیه در دستور int یا هر دستوری که استفاده میکنید، عبارت inf رو بنویسید.
موفق باشید.