|
- import numpy as np
-
-
- def vec2sym_mat(v):
- """
- Convert a vector encoding a symmetric matrix into a matrix
- See Golub and Van Loan, Matrix Computations, 3rd edition, p21
- """
- n = int((-1+np.sqrt(1+8*len(v)))/2) # second order resolution
- M = np.zeros((n, n))
- for i in range(n):
- for j in range(i, n):
- # Golub van Loan, Matrix Computations, Eq. 1.2.2, p21
- M[i, j] = M[j, i] = v[i*n - (i+1)*(i)//2 + j]
- return M
|