انتگرال گیری، با دستور int ، در متلب (MATLAB)
معمولا انتگرال گیری به دو شیوه صورت می گیرد. در شیوه اول، حدود بالا و پایین انتگرال، مشخص نیست و ما تنها به صورت سمبلیک، انتگرال را محاسبه می کنیم. در شیوه دوم، حدود بالا و پایین انتگرال، مشخص می باشد و با توجه به حد بالا و حد پایین، مقدار انتگرال محاسبه می شود و نتیجه به صورت عدد، در خروجی نمایش داده می شود. در متلب، دستور int ، به هر دو شیوه ذکر شده، می تواند انتگرال را محاسبه نماید. در ادامه هر دو شیوه را شرح خواهیم داد.
مشخص نبودن حد بالا و حد پایین انتگرال :
زمانی که حد بالا و حد پایین انتگرال مشخص نباشد، باید تنها، عبارت زیر انتگرال و همچنین متغیری که باید بر حسب آن انتگرال گرفته می شود را برای دستور int مشخص کنیم.
به مثال زیر توجه کنید :
فرض کنید بخواهیم انتگرال زیر را محاسبه نماییم . \begin{align} \int4x^3dx \end{align} می نویسیم :
int(4*x^3,x)
نتیجه :
x^4
دقت شود مثال بالا را به صورت int('4*x^3','x') نیز می توان نوشت، اما استفاده از دستور syms توصیه می شود، زیرا این شیوه اجرای دستور int (بدون دستور syms)، در آینده از نرم افزار متلب حذف خواهد شد.
مشخص بودن حد بالا و حد پایین انتگرال :
در صورتی که حد بالا و حد پایین انتگرال مشخص باشند، باید این دو حد را در دستور int بنویسیم.
به مثال زیر توجه کنید :
int(4*x^3,0,1)
نتیجه :
1
محاسبه انتگرال برای عبارت هایی که نمی توان به صورت سمبلیک انتگرال آنها را محاسبه نمود :
برای برخی عبارت ها، امکان اینکه انتگرال آنها به صورت سمبلیک محاسبه شود (symbolic integration)، وجود ندارد. در اینگونه موارد، باید از دستورات انتگرال گیری عددی (numerical integration) استفاده کنیم. از این دستورات می توان دستور quad و دستور quadl را ذکر نمود. ابتدا با مثال زیر نشان می دهیم که دستور int ، انتگرال هر عبارتی را نمی تواند، به صورت آنچه انتظار داریم، محاسبه کند :
int(exp(-x^4),0,1)
نتیجه :
مسلما آنچه انتظارش را داشتید، یک عدد می بود نه عبارت فوق. جالب است بدانید که دستور فوق، در شماره های قدیمی تر نرم افزار متلب، باعث نمایش یک پیام خطا در پنجره Command می شد. حال برای محاسبه انتگرال فوق، از دستور quadl ، در مثال زیر استفاده می کنیم :
دقت شود که عبارت مورد نظرمان را باید ابتدا درون پرانتز دستور vectorize قرار بدهیم :
quad(vectorize(exp(-x^4)),0,1)
نتیجه :
0.8448
همچنین چنانچه از دستور int به صورت double(int()) استفاده کنید، آنگاه متلب از عبارت زیر انتگرال، به صورت عددی (numerical integration) انتگرال گیری خواهد کرد.
دستور quad و دستور quadl ، مقدار inf و inf– را که به عنوان نماد بی نهایت در متلب تعریف شده اند، به عنوان حد انتگرال قبول نمی کند و در صورت پذیرش، جوابی که انتظارش را ندارید، مشاهده خواهید کرد. بنابراین راه حل این است که به جای بی نهایت، از یک عدد خیلی بزرگ، استفاده کنیم.
محاسبه انتگرال های چندگانه :
برای محاسبه انتگرال های چندگانه، باید از دستور int ، به صورت تو در تو، استفاده کنیم.
به مثال زیر توجه کنید :
فرض کنید بخواهیم انتگرال زیر را محاسبه کنیم . \[ \int_0^x \int_0^{sinx} (x^2+y^2)\,dydx \] می نویسیم :
int(int(x^2+y^2,y,0,sin(x)),0,pi)
نتیجه :
pi^2 - 32/9
سلام من میخوام مطلب رو یاد بگیرم اما در اول راه گیر افتادم میشه لطف کنید بگید چطور برم خط بعد با اینتر اجرا میشه
خب دوست عزیز شما باید اول یک اسکریپت باز کنید، کد رو تو اون بنویسید و بعد با f5 اون رو ران کنید.
سلام و خسته نباشید.
من میخوام توزیع نرمال رو واسه یک سری داده تو متلب اجرا کنم
متاسفان دستور help متلب رو هم وارد میکنم نمیشه
حالا اومدم خود فرمول توزیع نرمال رو نوشتم ولی باز مشکل دارم آخه نمیدونم چطور باید تو متلب این فرمولو بنویسم
اگه میتونید کمکم کنید خیلی لازمش دارم
با سلام و تشکر بابت اطلاعات خوبی که در اختیار می گذارید.سوالی داشتم اگر انتگرال نامعین و N گانه باشد دستور برنامه نویسی حل انتگرال به چه صورت میشود؟ با تشکر.
با عرض سلام
من انتگرال دوگانه ای به صورت زیر در متلب نوشته ام ولی جواب را به صورت انتگرال دوگانه می دهد
لطفا راهنمایی بفرمایید
متشکرم
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)
سلام وقت بخیر
من یه کد برای انتگرال دوگانه نوشتم و ران کردم . الان سه روز هست که برنامه در حال بیزی قرار داره و هنوز جواب رو بهم نداده . می خوام بدونم که این حالت طبیعی یا این که کد مشکل داره باید کنسلش کنم؟
ممنون میشم زود جواب بدین
با تشکر از زحماتتون
با سلام
من کد انتگرال گیری عددی برای متلب می خواستم از کجا می تونم بدست بیارم