ডাবল নির্ভুলতা বিশেষ কার্যাবলী বাস্তবায়নের শিল্প পদ্ধতিটির অবস্থা কী? আমার নিম্নলিখিত অবিচ্ছেদ্য দরকার: এবং জন্য , যা নীচের অসম্পূর্ণ গামা ফাংশনের ক্ষেত্রে লিখিত হতে পারে। এখানে আমার ফোর্টরান এবং সি বাস্তবায়ন:
https://gist.github.com/3764427
যা সিরিজ সম্প্রসারণ ব্যবহার করে, প্রদত্ত নির্ভুলতা অবধি শর্তাদি যোগ করে এবং তারপরে নিম্ন জন্য মানগুলি দক্ষতার সাথে অর্জনের জন্য পুনরাবৃত্তি সম্পর্ক ব্যবহার করে । আমি এটি ভালভাবে পরীক্ষা করেছি এবং আমার প্রয়োজনীয় প্যারামিটারগুলির সমস্ত মানের জন্য আমি 1e-15 নির্ভুলতা পেয়েছি, বিশদর জন্য ফোর্টরান সংস্করণের মন্তব্য দেখুন।
এটি বাস্তবায়নের আরও ভাল উপায় আছে কি? এখানে গফর্ট্রানে গামা ফাংশন বাস্তবায়ন:
https://github.com/mirrors/gcc/blob/master/libgfortran/intrinsics/c99_functions.c#L1781
এটি আমি করছি এমন কিছু অসীম সিরিজগুলি সংক্ষেপ না করে যুক্তিযুক্ত ফাংশন আনুমানিকতা ব্যবহার করছি। আমি মনে করি এটি একটি আরও ভাল পদ্ধতির, কারণ একত্রে যথাযথ নির্ভুলতা পাওয়া উচিত। এই জিনিসগুলির কাছে যাওয়ার জন্য কি কিছু আধ্যাত্মিক উপায় রয়েছে, বা প্রতিটি বিশেষ ক্রিয়াকলাপের জন্য একটি বিশেষ অ্যালগরিদম খুঁজে বের করতে হবে?
আপডেট 1 :
মন্তব্যের উপর ভিত্তি করে, এখানে স্ল্যাটেক ব্যবহার করে বাস্তবায়ন করা হচ্ছে:
https://gist.github.com/3767621
এটি আমার নিজের ফাংশন থেকে মূল্যগুলি প্রায় 1e-15 নির্ভুলতার স্তরে পুনরুত্পাদন করে। তবে, আমি একটি সমস্যা লক্ষ্য করেছি যে টি = 1e-6 এবং মি = 50 এর জন্য the শব্দটি 1e-303 এর সমান হয় এবং উচ্চতর "মি" এর জন্য এটি কেবল ভুল উত্তর দেওয়া শুরু করে। আমার এই সমস্যা নেই, কারণ আমি সরাসরি জন্য একটি সিরিজ সম্প্রসারণ / পুনরাবৃত্তি সম্পর্ক ব্যবহার । এখানে একটি সঠিক মানের একটি উদাহরণ:
(1e-6)=4.97511945200351715E-003
,
তবে আমি এসএএলএটিইসি ব্যবহার করে এটি পেতে পারি না কারণ ডিনোমিনেটর আপ আপ হয়। আপনি দেখতে পাচ্ছেন, এর আসল মানটি সুন্দর এবং ছোট।
আপডেট 2 :
উপরের সমস্যাটি এড়াতে, কেউ ফাংশনটি dgamit
(ট্রিকোমির অসম্পূর্ণ গামা ফাংশন) ব্যবহার করতে পারে , তারপরে আর আর F(m, t) = dgamit(m+0.5_dp, t) * gamma(m+0.5_dp) / 2
সমস্যা নেই, তবে দুর্ভাগ্যক্রমে জন্য আঘাত । এটি আমার প্রয়োজনের জন্য যথেষ্ট উচ্চ হতে পারে ।gamma(m+0.5_dp)