Importance sampling implementation



(1). $\int_0^1 \sigma (r) dr \approx \sum_{i=1}^N \sigma(u_i)/N , u_i \sim U[0,1]$

(2). $\int_0^1 2 \sqrt{1-r} \sigma (r) d(-\sqrt{1-r}) $
* Let $F(r) = 1-\sqrt{1-r}$, then the integral in $(2).$ becomes $E_F [ 2 \sqrt{1-r} \sigma(r)]$, since $F^{-1} (U) =2 U – U^2 $, the integral in $(2).$ can be approximated by $\sum_{i=1}^N 2\sqrt{1-F^{-1}(u_i)}\sigma(F^{-1}(u_i))/N$.

import numpy as np

N_list = [100, 1000, 10000, 100000,1000000,10000000]

for N in N_list:
    print(f"N={N}")
    random_numbers = np.random.uniform(size=N)
    firstintegral = np.sum(1/N *(1/np.sqrt(1-random_numbers)))
    secondintegral =np.sum(1/N * 2* np.sqrt(1-2*random_numbers+random_numbers**2)/np.sqrt(1-2*random_numbers+random_numbers**2))
    print(f"First integral (1) : {firstintegral}, Second integral (2) : {secondintegral}")

Leave a Comment