Example #1
0
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)
Example #2
0
 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
Example #3
0
 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]
Example #4
0
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)
Example #5
0
#           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))
Example #6
0
 def setItem(self, key, val):
     (row, col) = self.domain
     if key not in gutil.cartesianProduct(row, col):
         return None
     self.func[key] = val