کلیدستان

نسخه‌ی کامل: انتگرال گیری از چه صورت انجام می پذیرد؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
ممنون جناب admin
 راستش را بخواهید فرمول اصلی بصورت زیر است که جواب آنرا نمیتوانم بگیرم. ممنون میشم اگر بتونید این را جواب بدهید.

کد:
int((1/(sqrt(2*pi))*exp(-((z-50)^2)/4)*sin(2*pi*z/10)))
 
سلام.
من کد متلب زیر را که گفته بودید اجرا کردم :

کد:
clear all
close all
clc

syms z
int(exp(2*z-z^2))

نتیجه اجرا به صورت زیر می باشد :

کد:
ans =

(pi^(1/2)*erf(z - 1)*exp(1))/2

که در آن، تابع erf وجود دارد. اگر این تابع را در help متلب جستجو کنید، فرمول آن به صورت زیر ذکر شده است :


حالا فرض کنید که این بار، مقدار z=5 را در نظر بگیریم، بنابراین، کدهای متلب زیر را می نویسیم :

کد:
clear all
close all
clc

syms z
H = int(exp(2*z-z^2))
subs(H,z,5)

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

کد:
H =

(pi^(1/2)*erf(z - 1)*exp(1))/2


ans =

    2.4090

ممنون جناب admin
 راستشو بخواهید من فرمول را درست وارد نکردم و یک جا را هم جا انداختم.فرمول اصلی را وارد می کنم ببینید میتونید این مشکل را حل کنید؟ ممنون و متشکر



کد:
int((1/(sqrt(2*pi))*exp(-((z-50)^2)/4)*sin(2*pi*z/10)))

 
برای مواردی که انتگرال گیری با دستور int ، پاسخ را محاسبه نمی کند، باید از دستورات مربوط به انتگرال گیری عددی استفاده کنید (البته باید حد بالا و پایین انتگرال، به صورت عدد شخص باشد).
همچنین هنگام استفاده از اینگونه دستورها، توصیه می کنم که منطقی بودن پاسخ را هم چک کنید. مثلا کد متلب زیر را ببینید :

کد:
clear all
close all
clc

syms z
f=2*z
quad(vectorize(f),0,1)

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

کد:
f =

2*z


ans =

    1.0000

پاسخ برابر 1 شده است، در صورتی که ما انتظار مقدار 2 را داشتیم (جواب 1 غلط است). این مورد را بنده در نسخه R2011a از نرم افزار متلب مشاهده کردم (اگر کدنویسی من مشکل دارد، خوشحال می شوم دوستان تذکر بدهند).