Tôi có vấn đề sau đây:bằng số Tích hợp với C++ trên lưới được với discretisation liên tục cố định
My C++ mã có tính hai chức năng
f1 (i1, i2, i3, i4)
f2 (j1, j2)
cho mỗi bộ {i1, i2, i3, i4} tôi nhận được một giá trị là f1 và cho mỗi bộ {j1, j2} tôi nhận được một số giá trị của f2.
các bộ {i1, i2, i3, i4} và {j1, j2} được đưa ra trên một lưới FIXED với một số bước discretisation liên tục "h".
tôi cần phải tính toán, bằng ngôn ngữ toán học, một F3 Integral (x1, x3) = Integral [f1 (x1, x2, x3, x4) * f2 (x3, x4) DX3 dx4]
Càng tổng kết đơn giản là không đủ tốt, vì f2 có nhiều bước nhảy.
Có thư viện C++ nào có thể thực hiện loại tích hợp này không? Hoặc một số algorhithm đó là dễ dàng để thực hiện (Tôi không thực sự tốt trên C++)
cảm ơn nhiều
giả sử tôi biết các bước nhảy trên f2 và giả định rằng f1 đủ mịn. tôi có thể làm gì trong trường hợp đó? – Sankp
Ý tôi là, nếu ví dụ chức năng của bạn là phân tích ở các vùng, nếu chúng là các hàm bước, splines, đa thức, vv. Sau đó, bạn có thể thực hiện tích phân chính xác trong các vùng đó và tổng các vùng.Bạn có biết chính xác hình dạng của f2 với độ chính xác cao hơn so với binning? Vậy tại sao bạn không thể đánh giá các chức năng tại các vị trí tùy ý để tích hợp? Chúng có tốn rất nhiều thời gian hoặc bạn có nhận được các chức năng từ một nơi khác trong một dạng bảng được không? Ngoài ra hãy xem câu trả lời của @ElKamina. Bạn sẽ cần một phiên bản 2d, như http://math.fullerton.edu/mathews/n2003/simpsonsrule2dmod.html –
Đối với Monte Carlo, hãy xem các chương trình con fortran của VEGAS và MISER. Bạn có thể tìm thấy chúng tại www.netlib.org, hoặc như các phiên bản C trong cuốn sách Bí quyết số. Họ có thể giúp đối phó với thực tế là f2 không thường xuyên. –