コード例 #1
0
	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