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