Source code for teneva.matrices

"""Package teneva, module matrices: various useful QTT-matrices.

This module contains the collection of functions for explicit construction of
various useful QTT-matrices (delta function and others).

"""
import numpy as np
import teneva


[docs]def matrix_delta(q, i, j, v=1.): """Build QTT-matrix that is zero everywhere except for a given 2D index. Args: q (int): quantization level. The resulting matrix will have the shape 2^q x 2^q. i (int): the col index for nonzero element (< 2^q). Note that "negative index notation" is supported. j (int): the row index for nonzero element (< 2^q). Note that "negative index notation" is supported. v (float): the value of the matrix at index i, j. Returns: list: TT-tensor with 4D TT-cores representing the QTT-matrix. """ i = teneva._vector_index_prepare(q, i) j = teneva._vector_index_prepare(q, j) ind_col = teneva._vector_index_expand(q, i) ind_row = teneva._vector_index_expand(q, j) Y = [] for k in range(q): G = np.zeros((1, 2, 2, 1)) G[0, ind_col[k], ind_row[k], 0] = 1. Y.append(G) Y[-1][0, ind_col[-1], ind_row[-1], 0] = v return Y