PDA

View Full Version : نرم افزاری برای محاسبه دقیق فاکتوریل های بزرگ با سرعت بالا



golbafan
یک شنبه 08 آذر 1394, 17:28 عصر
سلام امروز نرم افزاری رو براتون ارائه میدم که بتونه تا 10 میلیون رو براحتی و در کسری از ثانیه و البته با دقت بالا فاکتویل بگیره

برای علاقه مندان به ریاضی...

137129

golbafan
دوشنبه 09 آذر 1394, 08:51 صبح
یک نظری حرفی چیزی؟

Desaghi
دوشنبه 09 آذر 1394, 09:35 صبح
خودتون بیشتر توضیح بدید. در مورد روش محاسبه و کاربرد فاکتوریل های بزرگ

golbafan
سه شنبه 10 آذر 1394, 21:48 عصر
سلام
از روش زیر استفاده میشه:
https://upload.wikimedia.org/math/7/6/c/76c649653627b7f144e10a9a7872e9cd.png

فاکتوریل برای محاسبات آماری بیشترین کاربرد رو داره
و برای محاسبه جوامع اماری بزرگ نیاز به محاسبه فاکتوریل های بزرگ هست
برای مثال وقتی میخوایم یک واکنش شیمیایی رو از لحاظ آماری محاسبه کنیم و حالات مختلف ترکیب میلیون ها مولکول رو محاسبه کنیم

Ananas
چهارشنبه 11 آذر 1394, 17:58 عصر
سلام.
متشکر از شروع این بحث.
چجور میشه از درستیه جواب مطمئن بود؟
ظاهرا تو رقم های بالا دقت اعشارش ضعیفه! یعنی ارقام اولش فقط درسته. میتونید با ماشین حساب ویندوز هم مقایسه کنید!
برای مثال فاکتوریل 1000 رو وقتی حساب میکنیم با این برنامه میرسیم به مقدار:

4.023872600773955809927429072558879852295e+2567

در حالی که ماشین حساب ویندوز مقدار:

4.02387260077093773543702433923e+2567

رو نشون میده!
یعنی تا اینجا رو درست حساب کرده:

4.02387260077e+2567

golbafan
چهارشنبه 11 آذر 1394, 20:15 عصر
سلام
از اونجایی که محاسبه انتگرال فوق به روش عددی انجام میشه (روش گاوس) این خطا مشاهده میشه
چون امکان محاسبه این انتگرال به روش سمبولیک مقدور نیست
اما مزیتش اینه که میشه فاکتوریل مثلا 100.000.000 رو حالا با یک دقت قابل قبول محاسبه کرد که این با روش عادی که اعداد رو در هم ضرب کنیم ممکن نیست
مثلا ویندوز حد اکثر میتونه فاکتوریل 3248 رو حساب کنه

Ananas
چهارشنبه 11 آذر 1394, 23:15 عصر
جالبه. فاکتوریل های بزرگ بدون تابع گاما ندیده بودم! یعنی برای اعداد صحیح.
برای محاسبه ی اون انتگرالی که نوشتید، از جمع مساحت ها استفاده کردید؟

golbafan
پنج شنبه 12 آذر 1394, 09:43 صبح
سلام
بله
و به خاطر استفاده از جمع بجای ضرب سرعت کار نرم افزار بالا رفته

Ananas
پنج شنبه 12 آذر 1394, 10:20 صبح
سلام.
منو وسوسه کردید یک ماشین حساب خفن شروع کنم به نوشتن.:چشمک:
اعداد خیلی خیلی بزرگ رو بتونه حساب کنه. مثلا 1e100000000000000000000000000

golbafan
جمعه 13 آذر 1394, 19:33 عصر
سلام.
منو وسوسه کردید یک ماشین حساب خفن شروع کنم به نوشتن.:چشمک:
اعداد خیلی خیلی بزرگ رو بتونه حساب کنه. مثلا 1e100000000000000000000000000

سلام
بسیار عالی
پیشنهاد میکنم تاپیک زیر رو ببینید
http://barnamenevis.org/showthread.php?163277-%D9%82%D9%88%DB%8C%D8%AA%D8%B1%DB%8C%D9%86-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%28%D9%86%D9%85%D9%88%D8%AF%D8%A7%D8%B1%29

Ananas
شنبه 14 آذر 1394, 03:21 صبح
سلام
بسیار عالی
پیشنهاد میکنم تاپیک زیر رو ببینید
http://barnamenevis.org/showthread.php?163277-%D9%82%D9%88%DB%8C%D8%AA%D8%B1%DB%8C%D9%86-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%28%D9%86%D9%85%D9%88%D8%AF%D8%A7%D8%B1%29
احسنت:تشویق:.
اینم ببینید:
Factorial.zip - 1.1 MB (http://uploadboy.me/vddq1qqjij9i/Factorial.zip)

golbafan
یک شنبه 15 آذر 1394, 11:19 صبح
:متعجب: کفم برید

استفاده از تبدیلات تیلور فکر جالبی بود...

Ananas
یک شنبه 15 آذر 1394, 16:38 عصر
این یک قسمت از یکی ازماشین حسابهایی بود که در سال 88 نوشته بودم. در دلفی. اما قانع نیستم! به روش آرایه ای از ارقام عمل کردم. و یک عدد 64 بیتی از توان ده این سییستم پشتیبانی میکنه. من میخام اون رو اولا باینری بنویسم نه دهدهی و بعد اینکه توان رو یک عدد حجیمتر مثلا 512 بیتی بگذارم! اونوقت میشه نوشت :
1.0e10000000000000000000000000000000000000000000
محاسبه فاکتوریل در این سیستم با فرمول استرلینگ هست. با استفاده از اعدادبرنولی.
برای اعداد اعشاری هم عمل میکنه. مقادیر منفی (غیر از اعداد صحیح منفی) هم میپذیره. در واقع فرمول برای تابع Gamma هست.
من به فرمول های انتگرالیش و اثباتشون خیلی تسلط ندارم ولی سعی کردم اونارو به کد تبدیل کنم.
این فرمول برای مقادیر بزرگ خیلی به جواب متمایل میشه ولی تو اعداد کوچیک جواب خیلی خطا داره. و این خطا برای اعداد بین -50 و 50 برای دقت ارقام صد تا خودش رو نشون میده. یعنی اگر فاکتوریل عددی بین -50 تا 50 رو بخایم بگیریم، بسته به اینکه عدد چقدر نزدیک به صفر هست خطا بیشتر دیده میشه و ارقام درست کمتری برمیگردونه. یک راه حل اینه که بیایم عدد رو ببریم در بازه ی بیرون از -50 تا 50 و بعد فاکتوریل رو حساب کنیم و بعد با ضرب ها یا تقسیمات متوالی در یک حلقه (نهایتا 50 بار) جواب رو بدست بیاریم.

Ananas
یک شنبه 15 آذر 1394, 16:52 عصر
لینهای زیر هم مربوط به کتابخانه IntX هست که اول در دلفی نوشته بودم بعد آوردم تو C++ .
http://barnamenevis.org/showthread.php?428924-%D8%B6%D8%B1%D8%A8-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%DB%8C%D9%84%DB%8C-%D8%A8%D8%B2%D8%B1%DA%AF&highlight=IntX
http://barnamenevis.org/showthread.php?504541-%D9%85%D9%88%D8%B6%D9%88%D8%B9-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%DB%8C%DA%A9-%D8%B9%D8%AF%D8%AF-128-%D8%A8%DB%8C%D8%AA%DB%8C-%D8%A8%D9%87-4-%D8%B9%D8%AF%D8%AF-32-%D8%A8%DB%8C%D8%AA%DB%8C&highlight=IntX
البته نسخه ی کامل تر اون رو هنوز نذاشتم رو سایت. یک مقدار خورده کاری داره. در نسخه ی جدید یک کلاس کمکی با استفاده از تمپلیت نوشتم که در عملیات درونیش از همین IntX استفاده میکنه و خیلی راحت میتونید تعداد بایت ها و یا تعداد بیتهای مورد نیاز رو در هنگام typedef کلاس مشخص کنید. و تعریف مجدد عملگرها هم انجام شده. کار با اون خیلی راحت تره برای کسایی که با اشاره گر میونه ی خوبی ندارند.

golbafan
یک شنبه 15 آذر 1394, 20:43 عصر
خیلی عالی هستند
میخوای تو نرم افزار نمودار کمک کنی؟

Desaghi
دوشنبه 16 آذر 1394, 17:11 عصر
نرم افزار نمودار در مورد روشهای محاسباتیش راهنما pdf هم داره؟

golbafan
سه شنبه 17 آذر 1394, 19:11 عصر
نرم افزار نمودار در مورد روشهای محاسباتیش راهنما pdf هم داره؟

سلام
نه هنوز هیچ راهنمایی نداره :اشتباه: