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)) )
In [ ]: