อัลกอริธึมที่มีประสิทธิภาพและแม่นยำสำหรับการประเมินฟังก์ชั่น hypergeometric คืออะไร?


16

ฉันอยากรู้ว่าอัลกอริธึมเชิงตัวเลขที่ดีใดที่มีอยู่สำหรับการประเมินฟังก์ชัน hypergeometric ทั่วไป (หรืออนุกรม) ที่กำหนดเป็น

pFq(a1,,ap;b1,,bq;z)=k=0(a1)k(ap)k(b1)k(bq)kzkk!

โดยทั่วไปชุดนี้ไม่จำเป็นต้องมาบรรจบกันอย่างรวดเร็ว (หรือเลย) ดังนั้นการสรุปคำศัพท์ทีละคำดูเหมือนน้อยกว่าอุดมคติ มีวิธีอื่นที่ใช้งานได้ดีกว่านี้หรือไม่ โดยเฉพาะฉันกำลังมองหาบางอย่างที่จะให้ความแม่นยำ 4 หรือ 5 หลักพร้อมการคำนวณที่สมเหตุสมผล

ส่วนใหญ่กรณีทั่วไปที่ผมมักจะเห็นใช้มีและP = 2 , Q = 1แต่ในโครงการโดยเฉพาะอย่างยิ่งผมทำงานเกี่ยวกับฉันมีความจำเป็นในการP = 1 , Q = 2 เห็นได้ชัดว่าอัลกอริธึมทั่วไปสำหรับpและqนั้นเป็นอุดมคติ แต่ฉันจะทำตามที่ฉันจะได้รับp=1,q=1p=2,q=1p=1,q=2pq


หากกรณีของคุณไม่ครอบคลุมอยู่ในคู่มือของ Abramowitz และ Stegun ( people.math.sfu.ca/~cbm/aands/subj.htm ) ซึ่งไม่ใช่คุณคิดว่าคุณควรคิดด้วยตัวเอง กลัว ...
Jaime

คำตอบ:


15

ในแอพพลิเคชั่นเดียวมันค่อนข้างจะเป็นไปได้ที่คุณจะต้องใช้เซตย่อยเล็ก ๆ มันเป็นฟังก์ชั่นทั่วไปมากหลังจากทั้งหมด มีความคิดเกี่ยวกับช่วงของและพารามิเตอร์ฉัน , ฉันจะช่วยให้คำแนะนำเฉพาะเจาะจงมากขึ้นZaผม,ผม

โดยทั่วไปแล้ววิธีการมาตรฐานซึ่งสมมติว่านั้นแน่นอนว่าจะใช้ชุดพลังงานที่กำหนดเมื่อ| z | เล็ก. ถ้าp < q + 1เป็นการดีที่สุดที่จะเปลี่ยนเป็นการขยายแบบเชิงสัญลักษณ์เมื่อ| z | มีขนาดใหญ่ทั้งชุดเทย์เลอร์มาบรรจบกันช้าเกินไปและ / หรือเพราะมันกลายเป็นไม่ถูกต้องมากเกินไปเนื่องจากการยกเลิกหายนะ การตัดยอดที่ดีที่สุดระหว่างอัลกอริธึมเหล่านี้ขึ้นอยู่กับพารามิเตอร์และข้อกำหนดด้านความแม่นยำพีQ+1|Z|พี<Q+1|Z|

สำหรับ ชุด asymptotic จะได้รับโดยhttp://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/มันดูค่อนข้างน่ากลัว แต่ถ้าคุณ 1 , 1 , 2ได้รับการแก้ไขคุณสามารถ คำนวณค่าตัวเลขสำหรับสัมประสิทธิ์ล่วงหน้า พบสูตรทั่วไปใน DLMF:http://dlmf.nist.gov/16.11(โปรดทราบว่าจำเป็นต้องมีการดูแลบางอย่างเพื่อเลือกการตัดกิ่งที่ถูกต้อง)1F2a1,1,2

Z

พี=Q+11/Zพี>Q+1

สำหรับการนำไปใช้อย่างสมบูรณ์มีปัญหาอื่น ๆ ที่ต้องพิจารณาเช่นกัน (ตัวอย่างเช่นการจัดการกับพารามิเตอร์ที่มีขนาดใหญ่มากหรือใกล้เคียงกับจำนวนเต็มลบ) สำหรับพารามิเตอร์ที่ไม่ดีพอมันจะยากมากที่จะได้รับค่าที่แม่นยำด้วยความแม่นยำสองเท่าไม่ว่าคุณจะทำอะไรดังนั้นอาจจำเป็นต้องใช้เลขคณิตความแม่นยำโดยพลการ

ฉันควรทราบว่าฉันได้เขียนการดำเนินการเชิงตัวเลขที่เกือบสมบูรณ์ของฟังก์ชั่น hypergeometric ทั่วไปสำหรับห้องสมุด mpmath (ขณะนี้มันขาดซีรีย์ซีมโทติคสำหรับฟังก์ชั่นที่สูงกว่า 2F3


ยอดเยี่ยม น่าเสียดายที่ฉันไม่สามารถระบุค่าพารามิเตอร์ได้มากขึ้นเพราะฟังก์ชั่นจะปรากฏขึ้นในหลาย ๆ ที่ที่มีค่าต่าง ๆ ฉันจะสนใจใช้งานและ / หรือดูการใช้งานของคุณอย่างแน่นอนในบางครั้ง
David Z

1
คำตอบของ Fredrik ถูกต้อง ฉันจะชี้ให้เห็นว่าฉันลงเอยด้วยการใช้เหตุผลอย่างประมาณ (จาก Mathematica) สำหรับค่าพิเศษของสัมประสิทธิ์ "a" และ "b" เพราะมันถูกต้องสำหรับจริงทั้งหมด "z" (ฉันแบ่งแกนจริงเป็นช่วง ๆ และใช้การประมาณด้วยเหตุผลที่แตกต่างกันในแต่ละ) และรวดเร็วมาก ฉันใช้ mpmath เพื่อตรวจสอบความถูกต้องของการใช้ความแม่นยำสองเท่าใน Fortran
OndřejČertík

2

การอ้างอิงแบบบัญญัติสำหรับฟังก์ชั่นพิเศษทั้งหมดคือ Abramowicz และ Stegun นี่คือหนังสือที่มีมานานประมาณครึ่งศตวรรษในไม่ช้าและหากมีบางสิ่งที่คุณไม่สามารถหาได้ให้ดูที่ "รุ่นที่สองที่ได้รับการปรับปรุง" ซึ่งอันที่จริงแล้วเป็นเว็บไซต์ที่จัดทำโดยสถาบันมาตรฐานแห่งชาติ (NIST) ) ฉันไม่มี URL ที่แน่นอน แต่ก็ไม่ยากที่จะหา


2
ตอนนี้เรียกว่า "ห้องสมุดดิจิทัลของฟังก์ชันทางคณิตศาสตร์"; ฟังก์ชั่น hypergeometric มีเรื่องของบทที่ 15
Christian Clason

1
2F11F2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.