Các thuật toán hiệu quả, chính xác để đánh giá các hàm siêu bội là gì?


16

Tôi tò mò muốn biết những thuật toán số tốt nào tồn tại để đánh giá hàm siêu bội (hoặc chuỗi) tổng quát , được định nghĩa là

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

Nói chung, loạt bài này không nhất thiết phải hội tụ rất nhanh (hoặc hoàn toàn), do đó, tóm tắt các thuật ngữ từng cái một có vẻ ít hơn lý tưởng. Có một số phương pháp thay thế hoạt động tốt hơn? Cụ thể, tôi đang tìm kiếm thứ gì đó sẽ cho độ chính xác 4 hoặc 5 chữ số với số lượng tính toán hợp lý.

Các trường hợp phổ biến nhất mà tôi thường thấy được sử dụng là và , nhưng trong dự án cụ thể tôi đang làm việc, tôi có nhu cầu về . Rõ ràng một thuật toán chung cho bất kỳ và là lý tưởng, nhưng tôi sẽ lấy những gì tôi có thể nhận được.p = 2 , q = 1 p = 1 , q = 2 p qp= =1,q= =1p= =2,q= =1p= =1,q= =2pq


Nếu trường hợp của bạn không được nêu trong Cẩm nang của Abramowitz và Stegun ( people.math.sfu.ca/~cbm/aands/subj.htm ), thì không, bạn về cơ bản sẽ tự mình tìm ra nó. tôi sợ ...
Jaime

Câu trả lời:


15

Trong một ứng dụng duy nhất, có khả năng là bạn sẽ chỉ cần một tập hợp con nhỏ của tất cả các cực trị có thể có của hàm siêu bội tổng quát. Đó là một chức năng rất chung chung, sau tất cả. Có ý tưởng về phạm vi của và các tham số sẽ cho phép đưa ra lời khuyên cụ thể hơn.a i , b izmộtTôi,bTôi

Nói chung, phương pháp tiêu chuẩn, giả sử , tất nhiên là sử dụng chuỗi lũy thừa xác định khinhỏ. Nếu , tốt nhất là chuyển sang mở rộng tiệm cận khilà lớn, vì loạt Taylor hội tụ quá chậm và / hoặc vì nó trở nên quá không chính xác do hủy bỏ thảm khốc. Điểm cắt tốt nhất giữa các thuật toán này phụ thuộc vào các tham số và yêu cầu độ chính xác.| z | p < q + 1 | z |pq+1|z|p<q+1|z|

Đối với loạt tiệm cận được đưa ra bởi http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/ Nó trông khá khủng khiếp, nhưng nếu bạn được cố định, bạn có thể tính toán số các giá trị cho các hệ số trước. Các công thức chung được tìm thấy trong DLMF: http://dlmf.nist.gov/16.11 (Lưu ý rằng một số chăm sóc là cần thiết để chọn cắt giảm chi nhánh chính xác.)a 1 , b 1 , b 21F2một1,b1,b2

Nếu có một phạm vi mà cả chuỗi Taylor và chuỗi tiệm cận không hoạt động đủ tốt, "mở rộng được cải thiện theo cấp số nhân" có thể hữu ích. Một khả năng đáng nói khác là bạn có thể chỉ cần cắm phương trình vi phân siêu bội vào bộ giải ODE cho mục đích chung. Điều này sẽ hoạt động khá tốt đặc biệt là nếu bạn chỉ cần 4-5 chữ số. Điều này có thể được sử dụng để thực hiện tiếp tục phân tích từ một nhỏ (trong đó chuỗi công suất hoạt động tốt) đến một lớn hơn hoặc ngược lại với giá trị thu được thông qua một chuỗi tiệm cận (bạn có thể cần phải làm thêm một chút để có được tất cả các dẫn xuất cần thiết như các giá trị ban đầu).z

Nếu bạn cần các hàm có trên toàn bộ mặt phẳng phức thì có thể sử dụng các công thức biến đổi để ánh xạ bên ngoài của đĩa đơn vị vào bên trong. Một số thuật toán gia tốc hội tụ hoặc phương pháp khác, như tích hợp số của ODE, phải được sử dụng gần với vòng tròn đơn vị. Nếu bán kính hội tụ bằng 0, do đó, nếu hàm bạn muốn đánh giá được đưa ra bởi một chuỗi phân kỳ như vậy, bạn có thể cần phải áp dụng một biến đổi Borel (bằng số hoặc tượng trưng) để giảm nó thành một chuỗi hội tụ.1 / z p > q + 1p= =q+11/zp>q+1

Để thực hiện đầy đủ, cũng có các vấn đề khác cần xem xét (ví dụ: xử lý các tham số cực kỳ lớn hoặc rất gần với số nguyên âm). Đối với các tham số đủ xấu, sẽ rất khó để có được các giá trị chính xác với độ chính xác kép, bất kể bạn làm gì, do đó, số học có độ chính xác tùy ý có thể cần thiết.

Tôi nên lưu ý rằng tôi đã viết một triển khai số gần như hoàn chỉnh của hàm siêu bội tổng quát cho thư viện mpmath (hiện tại nó thiếu chuỗi tiệm cận cho các hàm cao hơn ), có thể hữu ích để nghiên cứu hoặc chạy thử nghiệm (giả sử nó không đủ nhanh cho mục đích của bạn).2F3


Thông minh! Thật không may, tôi thực sự không thể hiểu cụ thể hơn về các giá trị tham số vì hàm bật lên ở nhiều nơi với các giá trị khác nhau. Tôi chắc chắn sẽ quan tâm đến việc sử dụng và / hoặc xem xét việc thực hiện của bạn trong mpmath tại một số điểm.
David Z

1
Câu trả lời của Fredrik là chính xác. Tôi chỉ chỉ ra rằng, cuối cùng tôi đã sử dụng một xấp xỉ hợp lý (từ Mathicala) cho các giá trị đặc biệt của các hệ số "a" và "b", bởi vì nó chính xác cho tất cả "z" thực (tôi chia trục thực thành các khoảng thực và sử dụng một xấp xỉ hợp lý khác nhau trên mỗi) và rất nhanh. Tôi đã sử dụng mpmath để kiểm tra độ chính xác của việc triển khai độ chính xác kép của mình ở Fortran.
Ondřej Čertík

2

Tham chiếu chính tắc cho tất cả các chức năng đặc biệt là Abramowicz và Stegun. Đây là một cuốn sách đã xuất hiện khoảng nửa thế kỷ và nếu có thứ gì đó bạn không thể tìm thấy trong đó, hãy xem "phiên bản thứ hai cập nhật" trên thực tế là một trang web được tổ chức bởi Viện Tiêu chuẩn Quốc gia (NIST ). Tôi không có URL chính xác nhưng nó không quá khó tìm.


2
Giờ đây nó được gọi là "Thư viện số của các hàm toán học"; các hàm siêu bội là chủ đề của Chương 15 .
Christian Clason

1
2F11F2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.