Esempio n. 1
0
def LU(a):  #LU decomposition
    n = len(a)
    l = mh.MatrixMake(n, n)  #MatrixMake(a,b) creates empty Matrix axb
    u = mh.MatrixMake(n, n)
    for i in range(n):  #Doolittle's way of computing
        l[i][i] = 1
        for j in range(i, n):
            u[i][j] = a[i][j] - Sigma(lambda k: l[i][k] * u[k][j], 0, i - 1)
        for j in range(i + 1, n):
            l[j][i] = (a[j][i] -
                       Sigma(lambda k: l[j][k] * u[k][i], 0, i - 1)) / u[i][i]
    return l, u
Esempio n. 2
0
 def __mul__(self, w):
     if len(w) - 1:
         n = len(w)
         matrix = handler.MatrixMake(n - 1, n)
         vector = handler.MatrixMake(n, 1)
         for i in range(1, n):
             matrix[i - 1][i] = i
             vector[i][0] = w[i]
         # handler.MatrixPrint(matrix)
         self.size = (n - 1, n)
         handler.MatrixPrint(vector, "pętla")
         handler.MatrixPrint(w.getVector(), "metoda")
         return handler.MatrixMulti(matrix, vector)
     else:
         return [[0]]
Esempio n. 3
0
def LLt(a):  #Cholesky
    n = len(a)
    l = mh.MatrixMake(n, n)
    for i in range(n):
        l[i][i] = mh.math.sqrt(a[i][i] - Sigma(lambda k: l[i][k]**2, 0, i - 1))
        for j in range(i, n):
            l[j][i] = (a[j][i] -
                       Sigma(lambda k: l[j][k] * l[i][k], 0, i - 1)) / l[i][i]
    return l
Esempio n. 4
0
def fill(c, hp
         ):  #fill fills hp matrix with identity matrix and two zeroed matrices
    h = mh.MatrixMake(c, c)
    for i in range(c - len(hp)):
        h[i][i] = 1
    for i in range(len(hp)):
        for j in range(len(hp)):
            h[i + c - len(hp)][j + c - len(hp)] = hp[i][j]
    return h
Esempio n. 5
0
 def __init__(self, vals=0, size=('auto', 'auto')):
     if hasattr(vals, '__iter__'):
         if hasattr(vals[0], '__iter__'):
             self.__size = (len(vals), len(vals[0]))
         else:
             self.size = (1, len(vals))
         self.__vals = vals.copy()
     else:
         self.__size = size
         if size != ('auto', 'auto'):
             self.__vals = handler.MatrixMake(size[0], size[1])
Esempio n. 6
0
def SVD(a):
    aat = mh.MatrixMulti(a, mh.MatrixTrans(a))
    ata = mh.MatrixMulti(mh.MatrixTrans(a), a)
    mh.MatrixPrint(aat, "aat")
    mh.MatrixPrint(ata, "ata")
    eigenvalues_aat = list(map(lambda x: round(x, ndigits=6), Francis(aat)))
    singularvalues_aat = list(map(sqrt, eigenvalues_aat))
    mh.MatrixPrint([eigenvalues_aat], "eigen aat")
    mh.MatrixPrint([singularvalues_aat], "singular aat")
    eigenvalues_ata = list(map(lambda x: round(x, ndigits=6), Francis(ata)))
    singularvalues_ata = list(map(sqrt, eigenvalues_ata))
    mh.MatrixPrint([eigenvalues_ata], "eigen ata")
    mh.MatrixPrint([singularvalues_ata], "singular ata")
    S = mh.MatrixMake(len(a), len(a[0]))
    for i in range(min(len(a), len(a[0]))):
        S[i][i] = singularvalues_aat[i]
    mh.MatrixPrint(S, msg="Σ")