-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBNT.py
35 lines (23 loc) · 848 Bytes
/
BNT.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np
class BNT():
def __init__(self, z, chi, n_i_list):
self.z = z
self.chi = chi
self.n_i_list = n_i_list
self.nbins = len(n_i_list)
def get_matrix(self):
A_list = []
B_list = []
for i in range(self.nbins):
nz = self.n_i_list[i]
A_list += [np.trapz(nz, self.z)]
B_list += [np.trapz(nz / self.chi, self.z)]
BNT_matrix = np.eye(self.nbins)
BNT_matrix[1,0] = -1.
for i in range(2,self.nbins):
mat = np.array([ [A_list[i-1], A_list[i-2]], [B_list[i-1], B_list[i-2]] ])
A = -1. * np.array( [A_list[i], B_list[i]] )
soln = np.dot(np.linalg.inv(mat), A)
BNT_matrix[i,i-1] = soln[0]
BNT_matrix[i,i-2] = soln[1]
return BNT_matrix