बनाना, इसलिए, मैंने यह कोड लिखा है जो प्रभावी रूप से एच (एक्स) के रूप में परिभाषित फ़ंक्शन के वक्र के तहत क्षेत्र का अनुमान लगाएगा। मेरी समस्या यह है कि मुझे क्षेत्र को 6 दशमलव स्थानों के भीतर अनुमान लगाने में सक्षम होना चाहिए, लेकिन अनुमान लगाया गया है कि एल्गोरिदम मैंने अपनी मशीन के लिए बहुत भारी उपयोग किया है। अनिवार्य रूप से सवाल यह है कि मैं निम्नलिखित कोड को और अधिक कुशल कैसे बना सकता हूं? क्या कोई रास्ता है कि मैं उस लूप से छुटकारा पा सकता हूं?एक अधिक कुशल मोंटे कार्लो सिमुलेशन
h = function(x) {
return(1+(x^9)+(x^3))
}
estimateN = function(n) {
count = 0
k = 1
xpoints = runif(n, 0, 1)
ypoints = runif(n, 0, 3)
while(k <= n){
if(ypoints[k]<=h(xpoints[k]))
count = count+1
k = k+1
}
#because of the range that im using for y
return(3*(count/n))
}
#uses the fact that err<=1/sqrt(n) to determine size of dataset
estimate_to = function(i) {
n = (10^i)^2
print(paste(n, " repetitions: ", estimateN(n)))
}
estimate_to(6)
'estimate_to (6)' एक छोटे से भी लालची हो सकता है: अपने वर्तमान एल्गोरिथ्म संभावना आर कर देगा स्मृति लंबाई 1e12 के संख्यात्मक वैक्टर आवंटित करने के लिए कोशिश कर रहा से बाहर चलाने के। – flodel
यदि आपको वास्तव में 1e12 सिमुलेशन की आवश्यकता है, तो आपको अपने एल्गोरिदम को फिर से लिखना होगा ताकि इसे गणना समय और स्मृति उपयोग के बीच एक समझौता मिल सके। – flodel
मोंटे कार्लो एकीकरण (अधिक) को और अधिक कुशल बनाने का सबसे अच्छा तरीका, यानी कम पुनरावृत्तियों के भीतर एक ही सटीकता प्राप्त करना, महत्वपूर्ण नमूनाकरण का उपयोग करना है, उदाहरण के लिए मेट्रोपोलिस मोंटे कार्लो। '1.0' के करीब 'x' के साथ आपके मामले बिंदुओं में' 0.0' के करीब की तुलना में अभिन्न के मूल्य में अधिक योगदान मिलता है। –