In [21]:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


nb_x = 10
x_arr = np.linspace(1., nb_x, nb_x)

cov_mat = np.zeros( (nb_x, nb_x) )

noise_var = 3.

for ii in range(nb_x):
    for jj in range(nb_x):
        
        if (ii == jj) : 
            cov_mat[ii, jj] = noise_var    #### diagonal variance is noise_var
        else :
            cov_mat[ii, jj] = noise_var/(abs(ii -jj)*2)  ### off-diagonal cov
            
plt.pcolormesh(x_arr, x_arr, cov_mat.T)
plt.show()



In [47]:
y_arr = np.zeros( nb_x )

a = 2.7
b = -2.3

vec_noise = np.random.randn(nb_x) * np.sqrt( noise_var ) 

cov_mat = np.matrix(cov_mat)
vec_noise_mix =  (np.dot(cov_mat , vec_noise.T))[0]


for ii in range(nb_x):
    
    y_arr[ii] = a * x_arr[ii] + b + vec_noise_mix[0, ii]

In [48]:
plt.plot(x_arr, y_arr, marker='o', ls='none')
plt.show()



In [49]:
np.savetxt('Covariance_chi2_example_cov.txt', cov_mat.T)   ### Save the covariance matrix used
np.savetxt('Points_chi2_example_cov.txt', np.transpose((x_arr, y_arr)) )

In [2]:
#### Parto to generate the PDF I want they use for they use to generate a random

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x_arr = np.linspace(0., 20., 2001)   #### dx = 0.01
nb_x = len(x_arr)

sig = 1.
sig2 = 2.

x1 = 7.
x2 = 12.

y_arr = (1./2.) * (1./(np.sqrt(2*np.pi)*sig) * (np.exp( -(x_arr-x1)**2/(2*sig**2) )) + 1./(np.sqrt(2*np.pi)*sig2) * (np.exp( -(x_arr-x2)**2/(2*sig2**2) )) )


plt.plot(x_arr, y_arr)
plt.show()

print np.sum(y_arr)

np.savetxt('PDF_double_gauss.txt', np.transpose((x_arr, y_arr)) )


99.9984330623

In [ ]: