অসম্পূর্ণ গামা ফাংশনটির দ্রুত এবং নির্ভুল ডাবল যথার্থ প্রয়োগকরণ


10

ডাবল নির্ভুলতা বিশেষ কার্যাবলী বাস্তবায়নের শিল্প পদ্ধতিটির অবস্থা কী? আমার নিম্নলিখিত অবিচ্ছেদ্য দরকার: এবং জন্য , যা নীচের অসম্পূর্ণ গামা ফাংশনের ক্ষেত্রে লিখিত হতে পারে। এখানে আমার ফোর্টরান এবং সি বাস্তবায়ন:

Fm(t)=01u2metu2du=γ(m+12,t)2tm+12
m=0,1,2,...t>0

https://gist.github.com/3764427

যা সিরিজ সম্প্রসারণ ব্যবহার করে, প্রদত্ত নির্ভুলতা অবধি শর্তাদি যোগ করে এবং তারপরে নিম্ন জন্য মানগুলি দক্ষতার সাথে অর্জনের জন্য পুনরাবৃত্তি সম্পর্ক ব্যবহার করে । আমি এটি ভালভাবে পরীক্ষা করেছি এবং আমার প্রয়োজনীয় প্যারামিটারগুলির সমস্ত মানের জন্য আমি 1e-15 নির্ভুলতা পেয়েছি, বিশদর জন্য ফোর্টরান সংস্করণের মন্তব্য দেখুন।m

এটি বাস্তবায়নের আরও ভাল উপায় আছে কি? এখানে গফর্ট্রানে গামা ফাংশন বাস্তবায়ন:

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 এর সমান হয় এবং উচ্চতর "মি" এর জন্য এটি কেবল ভুল উত্তর দেওয়া শুরু করে। আমার এই সমস্যা নেই, কারণ আমি সরাসরি জন্য একটি সিরিজ সম্প্রসারণ / পুনরাবৃত্তি সম্পর্ক ব্যবহার । এখানে একটি সঠিক মানের একটি উদাহরণ:tm+12Fm

F100(1e-6)=4.97511945200351715E-003 ,

তবে আমি এসএএলএটিইসি ব্যবহার করে এটি পেতে পারি না কারণ ডিনোমিনেটর আপ আপ হয়। আপনি দেখতে পাচ্ছেন, এর আসল মানটি সুন্দর এবং ছোট।Fm

আপডেট 2 :

উপরের সমস্যাটি এড়াতে, কেউ ফাংশনটি dgamit(ট্রিকোমির অসম্পূর্ণ গামা ফাংশন) ব্যবহার করতে পারে , তারপরে আর আর F(m, t) = dgamit(m+0.5_dp, t) * gamma(m+0.5_dp) / 2সমস্যা নেই, তবে দুর্ভাগ্যক্রমে জন্য আঘাত । এটি আমার প্রয়োজনের জন্য যথেষ্ট উচ্চ হতে পারে ।tgamma(m+0.5_dp)m172m


2
কেন আপনার নিজস্ব ফাংশন কোড? জিএসএল, কেফস এবং এসএলএটিইসি সকলেই এটিকে বাস্তবায়ন করে।
জেফ অক্সবেরি

আমি কেন SLATEC ব্যবহার করি না সে প্রশ্নটি আপডেট করেছি।
ওন্ডিজ এজ্তেক

@ OndřejČertík আপনি তাত্ক্ষণিকভাবে একটি বাগ আবিষ্কার করেছেন! আপনার প্রশ্ন উত্সাহ!
আলী

আলী --- এটি SLATEC মধ্যে একটি বাগ নয়, কিন্তু আসলে, আমি আসলে বিভক্ত করতে প্রয়োজন দ্বারা টন মি + + 1γ(z,x) এফএম(টি) এরজন্য একটি মান পাওয়ার জন্য। সংখ্যাসূচক পদ্ধতি যে জন্য কাজ করে, তাইγ(z- র,এক্স)জন্য ভাল কাজ নাও করতে পারেএফএম(টি)tm+12এফমি(টি)γ(z- র,এক্স)এফমি(টি)
ওন্ডেজ এজাতক

@ ওন্দেসেজারটিক ঠিক আছে, দুঃখিত, আমার ভুল, আমি আমার মন্তব্য করার আগে আপনার কোডটি যাচাই করিনি।
আলী

উত্তর:


9

১৯50০ এর দশকের গোড়ার দিকে ব্রিটিশ রসায়নবিদ স্যামুয়েল ফ্রান্সিস বয়েজ যিনি এর ব্যবহার প্রবর্তন করেছিলেন, তার পরে প্রশ্নে অবিচ্ছেদ্য ছেলেদের ফাংশন নামেও পরিচিত। কয়েক বছর আগে, আমার এই ফাংশনটি দ্বিগুণ নির্ভুলতার মধ্যে, যত দ্রুত সম্ভব তবে নির্ভুলভাবে গণনা করা দরকার। পুরো ইনপুট ডোমেন জুড়ে ক্রমটিতে আমি একটি আপেক্ষিক ত্রুটি অর্জন করতে সক্ষম হয়েছি ।1015

ছোট এবং বড় আর্গুমেন্টগুলির জন্য বিভিন্ন অনুমান ব্যবহার করা সাধারণত সুবিধাজনক, যেখানে "বৃহত" এবং "ছোট" এর মধ্যে অনুকূল স্যুইচ-ওভার পরীক্ষামূলকভাবে সবচেয়ে ভালভাবে নির্ধারিত হয়, এবং সাধারণভাবে কার্যকারিতা হয় । আমার কোড জন্য, আমি সেই পরিতৃপ্ত শর্ত হিসাবে সংজ্ঞায়িত "ছোট" আর্গুমেন্ট একটি মি + + 1 1mam+112

বড় যুক্তিগুলির জন্য, আমি গণনা করি

Fm(a)=12γ(m+12,a)×p×p,  p=a12(m+12)

অপারেশনের এই ক্রম অকাল পাতাল প্রবাহকে এড়িয়ে চলে। যেহেতু আমাদের এখানে সম্পূর্ণ সাধারণ নিম্ন অপূর্ণ গামা ফাংশনটির চেয়ে আধ-পূর্ণসংখ্যার অর্ডারগুলির কেবল নিম্ন অপূর্ণ গামা ফাংশন প্রয়োজন, এটি গণনা করার জন্য পারফরম্যান্সের দৃষ্টিভঙ্গি থেকে সুবিধাজনক

γ(m+12,a)=Γ(m+12)Γ(m+12,a)

tab ( এম + 1) এর ট্যাবুলেটেড মানগুলি ব্যবহার করেএবং কম্পিউটিংΓ(এম+1)Γ(m+12)এই উত্তরঅনুসারে সাবধানে কোনও ফিউজড মাল্টিপল-অ্যাড অপারেশন ব্যবহারের মাধ্যমে সাবট্র্যাকটিভ বাতিলকরণের বিষয়টি এড়ানো হবে। একটি সম্ভাব্য আরও অপ্টিমাইজেশান পালন করা যে যথেষ্ট বৃহৎ জন্যএকটি,γ(মি+ +1Γ(m+12,a)aপ্রদত্ত ভাসমান-পয়েন্ট যথার্থতার মধ্যে।γ(m+12,a)=Γ(m+12)

ছোট যুক্তিগুলির জন্য, আমি নীচের অসম্পূর্ণ গামা ফাংশনটির জন্য একটি সিরিজ সম্প্রসারণ দিয়ে শুরু করেছি

এ। আর্দেলি, ডব্লিউ। ম্যাগনাস, এফ ওবারহেটিনগার, এবং এফজি ট্রিকমি, "উচ্চতর ট্রান্সেন্ডেন্ডেন্টাল ফাংশনস, খণ্ড ২"। নিউ ইয়র্ক, এনওয়াই: ম্যাকগ্রা-হিল 1953

এবং এটি পরিবর্তিত বয়েজ ফাংশন গনা নিম্নরূপ (সিরিজ ছিন্ন যখন মেয়াদ একটি প্রদত্ত স্পষ্টতা জন্য পর্যাপ্ত ছোট):Fm(a)

Fm(a)=121m+12exp(a)(1+n=1an(1+m+12)× ... ×(n+m+12))

ছেলেদের ফাংশনটির কম আদেশের জন্য আকর্ষণীয় এবং সম্ভাব্য গুরুত্বপূর্ণ বিশেষ কেসগুলি রয়েছে, বিশেষত । প্রথমত, আমাদের কাছে F 0 ( a ) = √ রয়েছে √m=0,1,2,3F0(a)=π4aerf(a)erfERFerferff

m=1,2,3a<212Fm(a)=12a((2m1)Fm1(a)exp(a))

ammFm1=12m1(2a Fm(a)+exp(a))


দুর্দান্ত উত্তরের জন্য @ এনজুফাকে ধন্যবাদ। আপনি যদি এই ওপেন সোর্সটির জন্য আপনার কোড তৈরি করেন তবে আমি মনে করি এটি প্রচুর লোকের পক্ষে খুব কার্যকর হবে।
ওয়ান্ডেজ এর্তটক

1
বর্তমানে বর্ণিত অ্যালগরিদমের একটি CUDA বাস্তবায়ন এনভিআইডিআইএর বিকাশকারী ওয়েবসাইট থেকে বিনামূল্যে ডাউনলোডের জন্য উপলব্ধ (সাধারণত একটি ব্যবসায়িক দিনের মধ্যে সিউডিএ বিকাশকারী হিসাবে নিবন্ধন নিবন্ধের প্রয়োজন)। কোডটি একটি বিএসডি লাইসেন্সের অধীনে রয়েছে, যা কোনও ধরণের প্রকল্পের সাথে সামঞ্জস্যপূর্ণ হওয়া উচিত।
njuffa

5

আপনি আম্পারো গিল, জাভিয়ের সেগুরা এবং নিকো এম টেম্মের বিশেষ ক্রিয়াকলাপের সংখ্যার পদ্ধতিগুলি একবার দেখে নিতে পারেন ।


এটি একটি দুর্দান্ত বই, টিপটির জন্য ধন্যবাদ!
ওন্ডিজ এজ্তেক

4

আমি আব্রামোভিজ ও স্টেগুনের বইটি, বা এনআইএসটি কয়েক বছর আগে প্রকাশিত নতুন রিভিশনটি একবার দেখে নিই এবং এটি অনলাইনে পাওয়া যায় বলে আমি বিশ্বাস করি। তারা স্থিতিশীল উপায়ে জিনিসগুলি প্রয়োগ করার উপায়গুলি নিয়েও আলোচনা করে।


আমি এটি ব্যবহার করছিলাম : dlmf.nist.gov/8 , এটি প্রয়োগ করার সময়, তবে এটি সম্ভবত অন্য একটি উত্স। সংখ্যাযুক্ত রেসিপিগুলির 5 অধ্যায়েও আকর্ষণীয় তথ্য রয়েছে তবে এটি কেবল একটি ভেরিয়েবলের ফাংশনে প্রযোজ্য।
Ondřej Čertík

আমি মনে করি না আপনি 2001 এর রেফারেন্সের চেয়ে সাম্প্রতিক কিছু খুঁজে পাবেন; এসএলএটিইসি এর চেয়ে বেশি বয়সী হবে।
জেফ অক্সবেরি

1

এটি অত্যাধুনিক বলে মনে হচ্ছে না তবে নেটলিবের এসএলএটিইসিসি "1400 সাধারণ উদ্দেশ্যে গাণিতিক এবং পরিসংখ্যানগত রুটিন" সরবরাহ করে। অসম্পূর্ণ গামা এখানে বিশেষ ফাংশনগুলির অধীনে উপলব্ধ ।

এই জাতীয় ফাংশন প্রয়োগ করা সময়সাপেক্ষ এবং ত্রুটির প্রবণতা তাই একেবারে প্রয়োজনীয় না হলে আমি নিজেই এটি করব না। স্ল্যাটেক প্রায় বেশিরভাগ সময় ধরে রয়েছে এবং সর্বনিম্ন ডাউনলোডের গণনার উপর ভিত্তি করে ব্যাপকভাবে ব্যবহৃত হয় , তাই আমি বাস্তবায়নটি পরিপক্ক হওয়ার আশা করব expect

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.