Có thư viện GPL'd C, ANANT - Thuật toán trong Lý thuyết số phân tích của Linas Vepstas, bao gồm triển khai đa bội hóa của polylogarithm, xây dựng trên GMP .
Từ tệp README của nó:
Dự án này chứa các triển khai đặc biệt của các chức năng phân tích quan tâm trong lý thuyết số, bao gồm chức năng gamma, chức năng Riemann zeta, polylogarithm và chức năng đánh dấu câu hỏi Minkowski. Việc triển khai sử dụng thư viện Đa chính xác Gnu (GMP) để thực hiện tất cả các hoạt động cấp thấp. Mã ở đây được cấp phép theo các điều khoản của giấy phép Gnu GPLv3.
GSL (Thư viện khoa học GNU) dường như chỉ có chức năng Dilogarithm . Tuy nhiên, theo gợi ý từ @JM, người ta sẽ tìm thấy hàm Debye cung cấp tích phân thầm kín (tối đa bội vô hướng) được triển khai với độ chính xác kép (xem các lệnh Debye Hàm GSL 7.10 từ 1 đến 6):
Dn( x ) = nxn∫x0tndtet- 1
Phần mềm tích hợp tượng trưng như Mathicala hoặc Maxima cung cấp:
∫x0t3dtet- 1= 6 Li4( ex) - 6 x Li3( ex) + 3 x2Li2( ex) + x3đăng nhập( 1 - ex) - x44- π415
x > 0ex> 1
∫x0t3dtet- 1= - 6 Li4( e- x) - 6 x Li3( e- x) - 3 x2Li2( e- x) - x3Li1( e- x) + Π415
[ 0 , 1 ]x = 0x
π4/ 15
∫∞0t3dtet- 1= Γ ( 4 ) ζ( 4 ) = 6 ⋅ π490
Bây giờ chúng ta có thể xem lại câu hỏi tiêu đề, Làm thế nào để sử dụng chức năng polylogarithm trong c ++? Điểm đáng nói là không có triển khai chuẩn của các hàm polylogarithm cho C hoặc thậm chí C ++ . Nếu mục tiêu là để tránh bất kỳ thư viện bổ sung nào cho việc triển khai của bạn, thì điều đó khá tốt cho bạn thực hiện các thói quen của riêng mình, có lẽ dọc theo dòng được đề xuất bởi bài báo của David C. Wood mà Câu trả lời của GertVdE liên kết.
Bên cạnh các thói quen đa hướng được đề xuất trong phần đầu của Câu trả lời của tôi, còn có một thư viện toán chính xác kép (miễn phí) trưởng thành trong Cephes của Stephen L. Moshier, thực hiện cả hai phiên bản thực ( polylog
) và phức tạp ( cpolylog
) của các hàm đặc biệt polylogarithm. Mặc dù độ chính xác của chúng phụ thuộc một phần vào các hàm toán học tiêu chuẩn cơ bản của C, tài liệu nguồn Cephes báo cáo các thử nghiệm và sai số cực đại lý thuyết cho các đơn hàng 1 đến 4 về các giới hạn của độ chính xác kép.
Ngoài ra, bạn có thể muốn sử dụng phần mềm khác để kiểm tra trực tiếp (không tham chiếu các đa giác) các thói quen bậc hai mà bạn đã viết cho tích phân của mình. Như tôi đã phác thảo trong Câu hỏi Math.SE này, chuỗi lũy thừa tập trung ở gốc cho tích phân có độ hội tụ hạn chế, nhưng điều này có thể được giảm thiểu bằng cách sử dụng mở rộng phân đoạn tiếp tục.
Để hài lòng ngay lập tức, tôi khuyên bạn nên sử dụng các thói quen QUADPACK bậc hai (miễn phí) trong Maxima , cụ thể quad_qag
. Ví dụ: tìm tích phân trên [0,5] bằng lệnh Maxima này:
(%i1) quad_qag(x^3/(%e^x - 1), x, 0, 5, 2);
(%o1) [4.899892158330582,5.4399730923588665*10^-14,21,0]
Trong số các đối số đầu vào chỉ có cuối cùng có một lời giải thích. Đối số thứ năm để quad_qag
chỉ định quy tắc nào sẽ được áp dụng trong phương trình bậc hai thích ứng. Các giá trị có thể là 1 đến 6 và tăng độ tinh vi / chính xác. Dòng đầu ra đưa ra phương trình số đầu tiên, theo sau là ước tính sai số tuyệt đối của nó, số lượng các khoảng / bước được sử dụng và mã trả về (ở đây không có nghĩa là không tìm thấy lỗi hoặc điều kiện đặc biệt).