PDA

View Full Version : پیاده سازی تابع گامای ناقص(نا کامل) در ++C



ehsan_faal
یک شنبه 08 شهریور 1394, 19:36 عصر
سلام دوستان.
توی کتابخانه استاندارد ++C تابع گاما وجود داره که یه ورودی از انواع عددی معمولی(منظورم غیر مختلط) میگیره ومقدار تابع گاما رو برای اون میده.
متاسفانه نمیتونم انتگرالش رو اینجا بذارم(مجبورم عکس بذارم)
حالا مشکل این تابع اینه که فقط خود گاما رو حساب میکنه ولی من نیاز دارم که incomplete gamma رو تو برنامم داشته باشم.
و یه مورد دیگه هم اینکه بنده هر چی سرچ کردم الگوریتم محاسبه incomplete gamma رو برای کرانهای مختلط پیدا نکردم.
کسی آدرسی داره که ساده توضیح داده باشه واسه پیاده سازی تابع incomplete gamma با ورودی (قسمت کران انتگرال) از نوع مختلط در ++C باید چه مراحلی رو طی کنم؟
ممنون میشم اگه کسی تجربه ای در این زمینه داره به اشتراک بذاره.

134767

این رو هم پیدا کردم،منتها چون مطمئننا از نظر کارایی چیزی که توی boost هست سطحش بالاتر از کدی خواهد بود که بخوام خودم بنویسم،به همین دلیل میخواستم بینم پیاده سازیه آماده ای برای این کار هست؟

134768

با تشکر

rahnema1
یک شنبه 08 شهریور 1394, 22:23 عصر
سلام
اینجا (https://raw.githubusercontent.com/wch/r-source/d9fbe3143682baf2c3adfea5210c3b1e108dcf69/src/nmath/pgamma.c) سورس تابع pgamma از نرم افزار R هست

rahnema1
دوشنبه 09 شهریور 1394, 00:08 صبح
اینها را هم ببینید:
برای کامپایل cprob احتیاج به eval هست
http://www.netlib.org/cephes/cprob.tgz
http://www.netlib.org/cephes/eval.tgz

ehsan_faal
دوشنبه 09 شهریور 1394, 00:19 صبح
اینها را هم ببینید:
برای کامپایل cprob احتیاج به eval هست
http://www.netlib.org/cephes/cprob.tgz
http://www.netlib.org/cephes/eval.tgz

ممنون از لطفتون.کل کاری که باید انجام بدم توی تصویر زیر مشخص شده:
134776

فکر کنم سبک ترین کار این باشه که از همون S و C که توی پست اول مشخص شده استفاده کنم.
آخه طبق تصویر بالا من مقدار gamma_incomplete رو برای a=0 نیاز دارم و با این فرض انتگرالهای C و S به انتگرالهای Si , Ci ساده میشن.

rahnema1
دوشنبه 09 شهریور 1394, 08:08 صبح
به جای 20 می تونید بسته به دقت مورد نظر عدد بیشتر یا کمتر بذارید تا فرمول به دست بیاد
integrate(taylor(2 * sin(x / 2) ^ 2 / x, x, 0, 20), x);