def solve_eigen_problem(self, A, B, solver):
N = A.testfunction[0].N
s = A.testfunction[0].slice()
self.V = np.zeros((N, N))
self.lmbda = np.ones(N)
if solver == 0:
self.lmbda[s], self.V[s, s] = scipy_la.eigh(A.diags().toarray(),
B.diags().toarray())
elif solver == 1:
#self.lmbda[s], self.V[s, s] = scipy_la.eigh(B.diags().toarray())
a = np.zeros((3, N-2))
a[0, :] = B[0]
a[2, :-2] = B[2]
self.lmbda[s], self.V[s, s] = scipy_la.eig_banded(a, lower=True)
评论列表
文章目录