def eye(row): """ Return a identical matrix. """ R = set(row) if len(R) < 1: return None func = {(r, c): 1 for (r, c) in gutil.cartesianProduct(R, R) if r is c} return matrix((R, R), func)
def addColumn(self, c, vec): """ Parameter 'c' is the label element to add vector as column vector. """ (R, C) = self.domain if R == vec.domain and c in C: D = gutil.cartesianProduct(R, set(c)) for d, entry in zip(D, vec.entries()): self.func[d] = entry
def entries(self, d, mode='row'): """ Return entries of row vector or column set sorted by laxicogrhapical. Parameter 'd' is element of row or column set. mode : str{'row', 'col'} optional 'row' The output is a row vector. 'col' The output is a column vector. """ (row, col) = self.domain if mode is 'row' and d in row: domain = gutil.cartesianProduct(set(d), sorted(col)) elif mode is 'col' and d in col: domain = gutil.cartesianProduct(set(d), sorted(row)) else: return None return [self.getItem(d) for d in domain]
def listlist2matrix(R, C, listlist): """ Return a matrix that entries are elements of listlist. Parameter 'R' is label of row and 'P' is label of column. """ entries = [entry for row in listlist for entry in row] D = gutil.cartesianProduct(R, C) func = {(r, c): entry for (r, c), entry in zip(D, entries)} return matrix((set(R), set(C)), func)
# row field. Column field is a domain of this function and # row field is a codomain. import gula.vec as gvec import gula.mat as gmat import gula.util as gutil """ R is row label of matrix. C is column label of matrix. """ R = {'a', 'b'} C = {'#', '@', '?'} A = gmat.matrix((R, C), {d: i + 1 for i, d in enumerate(gutil.cartesianProduct(R, C))}) print('Matrix A=') print(A) x = gvec.vector(C, {c: 1 for c in C}) print('Vector x=') print(x) """ Set(Label) C is a domain of function. Set R is a co-domain of function. So, RxC matrix is model of (C->R) function. """ print('Dot product, A*x=b') print('Vector b=') print(gutil.dot(A, x))
def setItem(self, key, val): (row, col) = self.domain if key not in gutil.cartesianProduct(row, col): return None self.func[key] = val