Basit Bir Fonksiyonun İntegralini Almak
Bu egzersiz, Monte Carlo İntegrasyonu kavramına basit bir giriş sunar.
Burada basit bir integrali hesaplayacağız: \( \int_0^1 x e^{x} dx\). Tam cevabın \(1\) olduğunu biliyoruz, ancak simülasyon bize yaklaşık bir çözüm vereceği için sonucun $1$’e yakın olmasını bekleyebiliriz. Videoda gördüğün gibi süreç oldukça basit. Tek değişkenli bir fonksiyon için \(f(x)\):
- x ekseninin sınırlarını \((x_{min}, x_{max})\) ve y ekseninin sınırlarını \((\max(f(x)), \min(\min(f(x)), 0))\) al.
- Bu kutu içinde düzgün (uniform) dağılmış bir dizi nokta üret.
- Kutunun alanını (\((\max(f(x) - \min(f(x))\times(x_{max}-x_{min})\)) $f(x)$’in altında kalan noktaların oranı ile çarp.
Tamamladığında, Monte Carlo İntegrasyonu kullanarak belirli integralleri ele almak için bir çerçeveye sahip olacaksın.
Bu egzersiz
Python'da İstatistiksel Benzetim
kursunun bir parçasıdırEgzersiz talimatları
sim_integrate()fonksiyonunda,xminilexmaxarasında uniform rastgele sayılar üret vexdeğişkenine ata.- \(\min(\min(f(x)), 0)\) ile \(\max(f(x))\) arasında uniform rastgele sayılar üret ve
ydeğişkenine ata. - $f(x)\(’ten küçük noktaların oranını, alanla (\)(\max(f(x) - \min(f(x))\times(x_{max}-x_{min})$) çarparak geri döndür.
- Son olarak,
funcfonksiyonunu lambda ile \(x e^{x}\) olarak tanımla.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# Define the sim_integrate function
def sim_integrate(func, xmin, xmax, sims):
x = np.random.uniform(____, ____, sims)
y = np.random.uniform(____, ____, sims)
area = (max(y) - min(y))*(xmax-xmin)
result = area * sum(____(____) < abs(func(x)))/sims
return result
# Call the sim_integrate function and print results
result = sim_integrate(func = lambda x: ____, xmin = 0, xmax = 1, sims = 50)
print("Simulated answer = {}, Actual Answer = 1".format(result))