آموزش متلب (MATLAB)
۵۴۳ آموزش
نمایش دسته بندی ها (۵۴۳ آموزش)

انتگرال گیری، با دستور int ، در متلب (MATLAB)

معمولا انتگرال گیری به دو شیوه صورت می گیرد. در شیوه اول، حدود بالا و پایین انتگرال، مشخص نیست و ما تنها به صورت سمبلیک، انتگرال را محاسبه می کنیم. در شیوه دوم، حدود بالا و پایین انتگرال، مشخص می باشد و با توجه به حد بالا و حد پایین، مقدار انتگرال محاسبه می شود و نتیجه به صورت عدد، در خروجی نمایش داده می شود. در متلب، دستور int ، به هر دو شیوه ذکر شده، می تواند انتگرال را محاسبه نماید. در ادامه هر دو شیوه را شرح خواهیم داد.

مشخص نبودن حد بالا و حد پایین انتگرال :

زمانی که حد بالا و حد پایین انتگرال مشخص نباشد، باید تنها، عبارت زیر انتگرال و همچنین متغیری که باید بر حسب آن انتگرال گرفته می شود را برای دستور int مشخص کنیم.

به مثال زیر توجه کنید :

مثال

فرض کنید بخواهیم انتگرال زیر را محاسبه نماییم . \begin{align} \int4x^3dx \end{align} می نویسیم :


syms x
int(4*x^3,x)

نتیجه :


ans =
 
x^4
نکته

دقت شود مثال بالا را به صورت int('4*x^3','x') نیز می توان نوشت، اما استفاده از دستور syms توصیه می شود، زیرا این شیوه اجرای دستور int (بدون دستور syms)، در آینده از نرم افزار متلب حذف خواهد شد.

مشخص بودن حد بالا و حد پایین انتگرال :

در صورتی که حد بالا و حد پایین انتگرال مشخص باشند، باید این دو حد را در دستور int بنویسیم.

به مثال زیر توجه کنید :

مثال

syms x
int(4*x^3,0,1)

نتیجه :


ans =
 
1

محاسبه انتگرال برای عبارت هایی که نمی توان به صورت سمبلیک انتگرال آنها را محاسبه نمود :

برای برخی عبارت ها، امکان اینکه انتگرال آنها به صورت سمبلیک محاسبه شود (symbolic integration)، وجود ندارد. در اینگونه موارد، باید از دستورات انتگرال گیری عددی (numerical integration) استفاده کنیم. از این دستورات می توان دستور quad و دستور quadl را ذکر نمود. ابتدا با مثال زیر نشان می دهیم که دستور int ، انتگرال هر عبارتی را نمی تواند، به صورت آنچه انتظار داریم، محاسبه کند :

مثال

syms x
int(exp(-x^4),0,1)

نتیجه :


(pi*2^(1/2))/(4*gamma(3/4)) – igamma(1/4, 1)/4

مسلما آنچه انتظارش را داشتید، یک عدد می بود نه عبارت فوق. جالب است بدانید که دستور فوق، در شماره های قدیمی تر نرم افزار متلب، باعث نمایش یک پیام خطا در پنجره Command می شد. حال برای محاسبه انتگرال فوق، از دستور quadl ، در مثال زیر استفاده می کنیم :

مثال

دقت شود که عبارت مورد نظرمان را باید ابتدا درون پرانتز دستور vectorize قرار بدهیم :


syms x
quad(vectorize(exp(-x^4)),0,1)

نتیجه :


ans =
 
    0.8448

همچنین چنانچه از دستور int به صورت double(int()) استفاده کنید، آنگاه متلب از عبارت زیر انتگرال، به صورت عددی (numerical integration) انتگرال گیری خواهد کرد.

نکته

دستور quad و دستور quadl ، مقدار inf و inf– را که به عنوان نماد بی نهایت در متلب تعریف شده اند، به عنوان حد انتگرال قبول نمی کند و در صورت پذیرش، جوابی که انتظارش را ندارید، مشاهده خواهید کرد. بنابراین راه حل این است که به جای بی نهایت، از یک عدد خیلی بزرگ، استفاده کنیم.

محاسبه انتگرال های چندگانه :

برای محاسبه انتگرال های چندگانه، باید از دستور int ، به صورت تو در تو، استفاده کنیم.

به مثال زیر توجه کنید :

مثال

فرض کنید بخواهیم انتگرال زیر را محاسبه کنیم . \[ \int_0^x \int_0^{sinx} (x^2+y^2)\,dydx \] می نویسیم :


syms x y
int(int(x^2+y^2,y,0,sin(x)),0,pi)

نتیجه :


ans =
 
pi^2 - 32/9
نویسنده علیرضا گلمکانی
شماره کلید 42
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 8 7 1
فاطمه
۱۳۹۵/۰۹/۱۱
۱۷:۴۶

سلام من میخوام مطلب رو یاد بگیرم اما در اول راه گیر افتادم میشه لطف کنید بگید چطور برم خط بعد با اینتر اجرا میشه

حسین
۱۳۹۵/۰۹/۲۷
۲۱:۵۵

خب دوست عزیز شما باید اول یک اسکریپت باز کنید، کد رو تو اون بنویسید و بعد با f5 اون رو ران کنید.

eghbalnorozi
۱۳۹۵/۱۰/۰۹
۱۷:۰۱

سلام و خسته نباشید.
من میخوام توزیع نرمال رو واسه یک سری داده تو متلب اجرا کنم
متاسفان دستور help  متلب رو هم وارد میکنم نمیشه
حالا اومدم خود فرمول توزیع نرمال رو نوشتم ولی باز مشکل دارم آخه نمیدونم چطور باید تو متلب این فرمولو بنویسم
اگه میتونید کمکم کنید خیلی لازمش دارم

Mokhtari
۱۳۹۶/۰۹/۰۶
۲۳:۳۱

با سلام و تشکر بابت اطلاعات خوبی که در اختیار می گذارید.سوالی داشتم اگر انتگرال نامعین و N گانه باشد دستور برنامه نویسی حل انتگرال به چه صورت میشود؟ با تشکر.

niknafs
۱۳۹۷/۰۸/۱۸
۱۹:۱۶

با عرض سلام
من انتگرال دوگانه ای به صورت زیر در متلب نوشته ام ولی جواب را به صورت انتگرال دوگانه می دهد
لطفا راهنمایی بفرمایید
متشکرم
syms z y
int(int(z*(sqrt(2*2*(4.75^2-y^2)^(1/2)/(pi*z)*tan((pi*z)/(2*2*(4.75^2-y^2)^(1/2))))*((.752+2.02*(z/(2*(4.75^2-y^2)^(1/2)))+.37*(1-sin((pi*z)/(2*2*(4.75^2-y^2)^(1/2))))^3)/cos((pi*z)/(2*2*(4.75^2-y^2)^(1/2)))))^2,y,-4.75,4.75),z,0,4.75)


جواب انتگرال
int(int((4*tan((pi*z)/(4*(361/16 - y^2)^(1/2)))*(361/16 - y^2)^(1/2)*((101*z)/(100*(361/16 - y^2)^(1/2)) - (37*(sin((pi*z)/(4*(361/16 - y^2)^(1/2))) - 1)^3)/100 + 94/125)^2)/(pi*cos((z*pi)/(4*(361/16 - y^2)^(1/2)))^2), y, -19/4, 19/4), z, 0, 19/4)

danial
۱۳۹۷/۱۰/۰۳
۰۱:۰۶

سلام وقت بخیر
من یه کد برای انتگرال دوگانه نوشتم و ران کردم . الان سه روز هست که برنامه در حال بیزی قرار داره و هنوز جواب رو بهم نداده . می خوام بدونم که این حالت طبیعی یا این که کد مشکل داره باید کنسلش کنم؟
ممنون میشم زود جواب بدین
با تشکر از زحماتتون

ابوالفضل
۱۳۹۹/۱۰/۲۴
۱۵:۲۴

با سلام
من کد انتگرال گیری عددی برای متلب می خواستم از کجا می تونم بدست بیارم

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)