انتگرال در متلب – راهنمای کامل


در این آموزش، با روش به دست آوردن انتگرال در متلب برای دو دسته کلی انتگرالهای معین و نامعین آشنا میشویم. همچنین، روش حل انتگرالهای عددی، خطی و دوگانه را نیز بیان میکنیم.
انتگرال در متلب
در حالت کلی، انتگرالگیری را میتوان به دو دسته تقسیم کرد. در نوع اول، مشتق یک تابع داده میشود و میخواهیم خود تابع را پیدا کنیم. بنابراین، ما اساساً روندی عکس مشتقگیری انجام میدهیم. این فرایند معکوس به عنوان پادمشتق یا یافتن تابع اولیه یا یافتن انتگرال نامعین شناخته میشود. نوع دوم شامل جمع کردن تعداد بسیار زیادی از مقادیر بسیار ناچیز و سپس گرفتن حد برای میل این مقادیر به صفر است، در حالی که تعداد جملات به بینهایت میل میکند. این فرایند منجر به تعریف انتگرال معین میشود. در ادامه، به معرفی روشهای حل انتگرال در متلب میپردازیم.
انتگرال نامعین در متلب
طبق تعریف، اگر مشتق تابع برابر با باشد، میگوییم یک انتگرال نامعین برابر با است. به عنوان مثال، از آنجا که مشتق (نسبت به ) تابع برابر با است، میتوان گفت یک انتگرال نامعین تابع برابر با است.
برای محاسبه انتگرال در متلب از دستور "int" استفاده میشود. برای محاسبه انتگرال نامعین تابع ، دستور زیر را مینویسیم:
برای مثال، فرض کنید میخواهیم انتگرال تابع را به دست آوریم. بدین منظور، برنامه زیر را مینویسیم (دستور "syms" در متلب، برای تعریف متغیرها به صورت نمادین به کار میرود):
که نتیجه حاصل از اجرای آن به صورت زیر خواهد بود:
ans = x^2
مثال اول انتگرال نامعین در متلب
در این مثال، میخواهیم برای نمونه انتگرال برخی از عبارات متداول را بیابیم. برای این کار، یک فایل اسکریپت ایجاد میکنیم و کد زیر را در آن مینویسیم:
اگر این برنامه را اجرا کنیم، نتیجه آن به صورت زیر خواهد بود:
ans = piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)]) f = sin(n*t) ans = -cos(n*t)/n ans = (a*sin(pi*t))/pi ans = a^x/log(a)
مثال دوم انتگرال نامعین در متلب
برنامه زیر را در متلب بنویسد:
با اجرای این برنامه، خروجی به صورت زیر خواهد بود (استفاده از دستور "pretty" نتایج را مرتبتر نشان میدهد):
ans = sin(x) ans = exp(x) ans = x*(log(x) - 1) ans = log(x) ans = (24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5 2 4 24 cos(5 x) 24 x sin(5 x) 12 x cos(5 x) x cos(5 x) ----------- + ------------- - -------------- + ------------ 3125 625 125 5 3 5 4 x sin(5 x) x sin(5 x) ------------- + ----------- 25 5 ans = -1/(4*x^4) ans = tan(x) 2 x (3 x - 5 x + 1) ans = - (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2 6 5 4 3 7 x 3 x 5 x x - ---- - ---- + ---- + -- 12 5 8 2
انتگرال معین در متلب
طبق تعریف، انتگرال معین اساساً حد یک مجموع است. ما از انتگرالهای معین استفاده میکنیم تا مساحتهایی مانند مساحت بین یک منحنی و محور و مساحت بین دو منحنی را پیدا کنیم. انتگرالهای معین در موارد دیگر نیز مورد استفاده قرار میگیرند که در آنها مقدار مورد نیاز را میتوان به عنوان حد یک مجموع بیان کرد. انتگرالهای معین برای یافتن مساحت، حجم، مرکز جرم، لختی دورانی، کاری که توسط یک نیرو انجام میشود و در بسیاری از کاربردهای دیگر استفاده میشوند.
مشابه انتگرال نامعین، برای محاسبه انتگرال معین نیز از تابع "int" در متلب استفاده میشود. برای محاسبه انتگرال دستور زیر را مینویسیم:
int(x, a, b)
برای مثال، برای محاسبه انتگرال ، دستور زیر را خواهیم داشت:
که جواب آن برابر است با:
ans = 65/2
مثال اول انتگرال معین در متلب
میخواهیم مساحت زیر منحنی نمودار را از تا یا انتگرال را محاسبه کنیم. بدین منظور، برنامه زیر را در متلب مینویسیم:
که جواب آن به صورت زیر خواهد بود:
a = 23/4 Area: 5.7500
مثال دوم انتگرال معین در متلب
میخواهیم سطح زیر نمودار تابع را در بازه به دست آوریم. برای محاسبه این انتگرال، کد زیر را در متلب مینویسیم:
که حاصل آن، شکل و مقدار عددی زیر است:
a = 8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9) Area: 0.3326
مثال سوم انتگرال معین در متلب
میخواهیم انتگرال زیر را در متلب حل کنیم:
بدین منظور، کد زیر را در متلب مینویسیم:
نتیجه حاصل از اجرای این برنامه به صورت زیر است:
intf = x^3/3 int_val_ind = 144 ans = 144
مثال چهارم انتگرال معین در متلب
در این مثال، میخواهیم محصور بین نمودار دو تابع و را در بازه به دست آوریم.
برنامه زیر، مربوط به محاسبه این مساحت در متلب است که در آن دو تابع از هم کم شدهاند، سپس از نتیجه انتگرال گرفته شده است:
جواب حاصل از اجرای این برنامه به صورت زیر است:
area_intersect = 9
انتگرال دوگانه در متلب
برای محاسبه انتگرال دوگانه و در کل، انتگرالهای چندگانه در متلب میتوانیم از دستور "int" استفاده کنیم.
فرض کنید میخواهیم انتگرال زیر را در متلب محاسبه کنیم:
میتوانیم از دستورهای زیر برای این کار استفاده کنیم:
یا
که جواب هر دو است.
همچنین، برای انتگرال دوگانه میتوانیم از دستور "integral2" نیز استفاده کنیم. این دستور به صورت "(integral2(fun,xmin,xmax,ymin,ymax" نوشته میشود که در آن، fun تابع و xmin و xmax و ymin و ymax محدودههای دو متغیر هستند. توجه کنید که عملگرهای مورد استفاده باید با "." باشند، مثلاً به جای "*" باید از "*." استفاده کرد. همچنین برای تعریف متغیرهای مستقل از "@" استفاده میشود. به مثال زیر توجه کنید.
برای مثال، تابع زیر را در نظر بگیرید:
میخواهیم انتگرال دوگانه را در بازه هم برای و هم برای محاسبه کنیم. بدین منظور، دستور ساده زیر را مینویسیم:
که جواب آن برابر با ۴ خواهد بود.
انتگرال عددی در متلب
برای محاسبه انتگرال عددی، دو روش اصلی سیمپسون و ذوزنقهای وجود دارد. برای استفاده از روش سیمپسون، میتوانید از تابع "(simpsons(f,a,b,n" که کد آن در ادامه آمده است، استفاده کنید. در این برنامه، f تابع مورد نظر است که مثلاً به صورت (f=@(x) sin(x تعریف میشود، همچنین a ابتدای بازه انتگرالگیری و b انتهای آن است. n نیز که یک عدد صحیح مثبت است، تعداد زیربازههای انتگرالگیری را مشخص میکند. برای آشنایی بیشتر با روش سیمپسون، میتوانید مطلب «قاعده سیمپسون — به زبان ساده (+ دانلود فیلم آموزش گام به گام)» را مطالعه کنید.
برای استفاده از روش ذوزنقهای نیز از تابع "trapz" در خود متلب استفاده میشود. برای مثال، اگر بخواهیم انتگرال را در بازه ، به دست آوریم، داریم:
که جواب آن، است.
برای آشنایی بیشتر با این روش، پیشنهاد میکنیم آموزش «قاعده ذوزنقه ای — به زبان ساده (+ دانلود فیلم آموزش گام به گام)» را مطالعه کنید.
انتگرال خطی در متلب
انتگرال خطی در متلب را با یک مثال توضیح میدهیم. فرض کنید میخواهیم انتگرال زیر را در در متلب محاسبه کنیم:
که در آن، یک کانتور بسته است که قطب ساده را در مبدأ دور میزند. ابتدا انتگرالده را به صورت زیر تعریف میکنیم:
اکنون، به دو روش میتوانیم انتگرال مورد نظر را حل کنیم.
در روش اول، میتوانیم انتگرالهای خطی توابع مختلط را با یک پارامتری سازی ارزیابی کنیم. در این صورت، یک کانتور مشخص شده است و سپس برای پارامتری کردن انتگرالده اصلی از آن مشتق گرفته میشود. برای این مثال، کانتور را به عنوان دایره واحد در نظر میگیریم، اما در همه موارد، نتیجه مستقل از کانتور انتخاب شده است. بنابراین، داریم:
که جواب آن به صورت زیر است:
q1 = -0.0000 + 6.2832i
این روش پارامتری سازی اگرچه قابل اعتماد است، اما دشوار و وقتگیر نیز هست، زیرا یک مشتق باید قبل از انجام انتگرالگیری محاسبه شود. حتی برای توابع ساده نیز باید چندین خط کد بنویسیم. از آنجا که نتیجه با هر کانتور بسته که قطب را محصور میکند یکسان است، میتوانیم از روش دوم که همان دستور "waypoints" استفاده کنیم که برای ساختن یک مسیر مربع یا مثلثی است که قطب را محصور میکند.
اگر حدود انتگرال یا عناصر بردار مختلط باشند، دستور "integral" انتگرالگیری را روی دنبالهای از مسیرهای خطی در صفحه مختلط انجام میدهد. جهت طبیعی یک کانتور خلاف جهت عقربههای ساعت است. مشخص کردن یک کانتور در جهت عقربههای ساعت متناظر با ضرب انتگرال در است. کانتور را به گونهای مشخص میکنیم که یک تکینگی را محصور کند. اگر کانتوری را مشخص کنیم که هیچ قطبی را محصور نکند، در این صورت قضیه انتگرال کوشی تضمین میکند که مقدار انتگرال مسیر بسته صفر است.
برای بررسی این موضوع، از تابع "fun" حول یک مسیر مربع به دور از مبدأ انتگرال میگیریم. برای ایجاد یک کانتور بسته، از حدود مشابه برای انتگرالگیری استفاده میکنیم.
که جواب آن است. این نتیجه، مشابه نتیجه حاصل از روش اول بوده و مقدار دقیق آن است.
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزش های برنامه نویسی
- مجموعه آموزش های برنامهنویسی متلب (MATLAB)
- مجموعه آموزشهای پروژه محور برنامهنویسی
- مجموعه آموزش های برنامهنویسی متلب برای علوم و مهندسی
- منابع آموزشی نرم افزار متلب و برنامه نویسی کاربردی با آن
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- تقلب نامه (Cheat Sheet) توابع و دستورات متلب (MATLAB)
^^
سلام عرض ادب ، اونجا که از تابع display و Area استفاده کردین توضیح ندادین برای چی هست هر چند که من تو برنامه میارم برای انتگرال معین ارور میده
;Xstr = mupadmex(‘symobj::’double’, S.s,0)
با سلام و احترام؛
صمیمانه از همراهی شما با مجله فرادرس و ارائه بازخورد سپاسگزاریم.
تابع disp برای نمایش آنچه مد نظر است در خروجی مورد استفاده قرار میگیرد. کلمه «Area» هم به معنی مساحت است. در اینجا Area رشتهای است که در خروجی چاپ میشود و در مقابل آن هم مقدار محاسبه شده نمایش داده خواهد شد.
برای شما آرزوی سلامتی و موفقیت داریم.
سلام و عرض ادب
با تشکر از آموزش ارزنده شما
لطفا مشکل برنامه زیر رو در صورت امکان بفرمایین:
syms x E L R g
f=@(E) sech((x-E)./L).*(1+10.*R.*(E-g)+126.*R.^2*(E-g).^2)./(1-exp(-2.*pi.*sqrt(Eb./(E-g))));
integral(f,[g,inf])
خطای اعلام شده:
Error using integral
Limits of integration must be double or single scalars.
Error in untitled2 (line 3)
integral(f,[g,inf])
با عرض سلام و خدا قوت
من پیام دادم تا بگم عالیییییی هستید
خیلی ازتون ممنونم🤞🏻
سلام احسان عزیز.
خوشحالیم که این آموزش برایتان مفید بوده است.
سالم و سربلند باشید.
لطفا؛ اگر در مورد محاسبه انتگرال های عددی مراتب بالاتر از ۳ در متلب توضیح دهید خیلی ممنون میشم.
خب میشه انتگرال کسینوس در بازه مورد نظر ضرب در تابع سینوس.البته اگر انتگرال یه گانه باشه.
سلام چه طور میشه انتگرال cos(pi*r/2*b)*sin(wt) رو تو متلب گرفت؟ که r متغیر انتگرال گیری است و b یه ثابته و w یه فرکانس هست و انتگرال از صفر تا b هست ، متغیر ها و ثابت ها رو چه جوری تعریف کنم؟؟
ممنون میشم پاسخ بدید
قبل از دستور انتگرال باید در دستور syms این متغیرها رو تعریف کنید البته ایم انتگرال که میگید چون نسبت به r هست ساده است.