def fractorization(self): try: super(GramSchmidtQR, self).fractorization() self.Q = [[0.0 for i in range(self.n)] for i in range(self.m)] self.R = [[0.0 for i in range(self.n)] for i in range(self.n)] for i in range(self.m): self.R[0][0] += self.A[i][0] * self.A[i][0] self.R[0][0] = math.sqrt(self.R[0][0]) for i in range(self.m): self.Q[i][0] = self.A[i][0]/self.R[0][0] for i in range(1, self.n): temp = [self.A[j][i] for j in range(self.m)] for j in range(i): self.R[j][i] = Tools.dotMultiplication(self.Q, j, self.A, i) for k in range(self.m): temp[k] += -self.R[j][i] * self.Q[k][j] self.R[i][i] = 0.0 for k in range(self.m): self.Q[k][i] = temp[k] self.R[i][i] += temp[k] * temp[k] self.R[i][i] = math.sqrt(self.R[i][i]) for k in range(self.m): self.Q[k][i] = self.Q[k][i] / self.R[i][i] except Exception, e: self.errorMessage += str(e) self.state = False