Saya memiliki program Mathematica yang melakukan beberapa integral dalam 3 atau 4 dimensi menggunakan QuasiMonteCarlo
metode ini. Masalahnya adalah, butuh waktu lama yang mengganggu untuk dijalankan, ke titik di mana beberapa perhitungan ini tidak dapat diselesaikan dalam waktu kerja maksimum yang tersedia di kluster HPC kami. Jadi saya sedang mempertimbangkan untuk menulis ulang program dalam C ++, yang saya duga akan mempercepatnya dengan faktor besar.
Saya melihat dokumen GSL dan sementara ada bagian tentang urutan quasirandom dan integrasi MC biasa , saya tidak melihat apa pun yang menyatukan mereka. Juga satu atau dua pencarian Google tidak menemukan apa pun yang tampak seperti implementasi yang dipercaya luas. Apa opsi saya untuk implementasi integrasi QMC yang teruji dengan baik di C ++?
Demi kepentingan konsistensi, saya lebih suka menggunakan sesuatu yang dekat dengan metode Halton-Hammersley-Wozniakowski yang diterapkan Mathematica , jika itu merupakan pilihan.
sumber
Compile
memasukkan integral (ke kode C) sebelum meneruskannyaNIntegrate
, yaitu apakah ituNIntegrate
yang lambat atau menghitung fungsi? Menggunakan fungsi-fungsi yang dikompilasi C mungkin membutuhkan sedikit kerja ekstra pada sebuah cluster.Jawaban:
Mengingat kelangkaan kuasi integrator Monte Carlo untuk C ++ (atau C), saya menulis implementasi saya sendiri untuk digunakan dengan GSL. Ini tidak teruji dengan baik, juga tidak mengimplementasikan algoritma Mathematica, tetapi seharusnya lebih baik daripada tidak sama sekali.
sumber