def OkButtonClicked(self): """listwidgitem = QListWidgetItem() listwidgitem.setSizeHint(QtCore.QSize(self.listWidget.width(), 100)) listwidgitem.setText("ress") self.listWidget.addItem(listwidgitem) self.listWidget.setItemWidget(self.listWidget.item(1), QTextEdit("1)<html><head/><body><p>x<span style=\" vertical-align:sub;\">0</span></p></body></html>")) """ a = np.empty((self.Dim, self.Dim)) b = np.empty((self.Dim)) for i in range(self.Dim): for j in range(self.Dim): try: a[i, j] = np.float64(self.InputTableWidget.item(i, j).text()) self.InputTableWidget.item(i,j).setBackground(QtGui.QColor(255,255,255)) except: self.InputTableWidget.setItem(i, j, QTableWidgetItem()) self.InputTableWidget.item(i,j).setBackground(QtGui.QColor(255,128,128)) return -1; if self.methodBox.currentIndex() != 3: for i in range(self.Dim): try: b[i] = np.float64(self.InputTableWidget.item(i, self.Dim).text()) self.InputTableWidget.item(i,self.Dim).setBackground(QtGui.QColor(255,255,255)) except: self.InputTableWidget.setItem(i, self.Dim, QTableWidgetItem()) self.InputTableWidget.item(i, self.Dim).setBackground(QtGui.QColor(255,128,128)) return -1; if self.methodBox.currentIndex()==0: tabels = [] tabels.append(genTable(a, b, np.sum(a, 1)+b, np.sum(a, 1)+b)) gauss_d = gauss_det(a) a, b, Sum, S, tabels1 = gauss(a, b) tabels += tabels1 html = genHtml(tables=tabels) self.textBrowser.setText(html.replace('{%det%}','Det(A) = {0}'.format(gauss_d))) elif self.methodBox.currentIndex() == 1: for i in range(self.Dim): for j in range(self.Dim): if a[i, j] != a[j, i]: QtGui.QMessageBox.warning(None, 'Warning', 'Matrix is asymetric') return x, L, D = sqrt_method(a, b) Dtmp = np.zeros((len(D), len(D))) for i in range(len(D)): Dtmp[i, i] = D[i] tabels = [] tabels.append(genMatrix(L)) tabels.append(genMatrix(Dtmp)) tabels.append(genVector(x)) self.textBrowser.setText(genHtml(tabels, labels=['L', 'D', 'X']).replace('{%det%}','Det(A) = {0}'.format(np.prod(D)))) elif self.methodBox.currentIndex() == 2: C = np.zeros(self.Dim) B = np.zeros(self.Dim) A = np.zeros(self.Dim) for i in range(self.Dim): C[i] = a[i, i] if i!= self.Dim-1: B[i] = a[i, i+1] A[i+1] = a[i+1, i] x = TDMA(A, B, C, b) tabels = [] tabels.append(genVector(x)) self.textBrowser.setText(genHtml(tabels, ['X']).replace('{%det%}','Det(A) = {0}'.format(np.linalg.det(a)))) elif self.methodBox.currentIndex() == 3: inverse = inverse_matrix(a) self.textBrowser.setText(genHtml(np.array([genMatrix(inverse)]), ['Inverse Matrix']).replace('{%det%}', '')) elif self.methodBox.currentIndex() == 4: x0 = np.zeros(self.Dim) for i in range(self.Dim): try: x0[i] = np.float64(self.InputTableWidget.item(i, self.Dim+1).text()) except: continue try: N = np.int32(self.InputTableWidget.item(0, self.Dim+2).text()) except: pass x = jacobi(a, b, N, x0) self.textBrowser.setText(genHtml(np.array([genVector(x)]), ['X']).replace('{%det%}', '')) elif self.methodBox.currentIndex() == 5: try: eps = np.float64(self.InputTableWidget.item(0, self.Dim+1).text()) except: eps = 10**(-10) x, N = seidel(a, b, eps) self.textBrowser.setText(genHtml(np.array([genVector(x)]), ['X']).replace('{%det%}', str(N)))
def gauss(A,b): a = A.copy() S = np.empty(len(a)) Sum = np.empty(len(a)) Sum = np.sum(a,1)+b S = Sum tabels = [] for i in range(len(a)): S[i] = S[i] / a[i,i] b[i] = b[i] / a[i,i] a[i] = a[i] / a[i,i] for j in range(i+1, len(a)): S[j] -= S[i]*a[j,i] b[j] -= b[i]*a[j,i] a[j] -= a[i]*a[j,i] Sum = np.sum(a,1)+b tabels.append( genTable(a, b, Sum, S)) for i in range(len(b)-1, -1, -1): for j in range(i-1, -1, -1): S[j] -= S[i]*a[j,i] b[j] -= b[i]*a[j,i] a[j] -= a[i]*a[j,i] Sum = np.sum(a, 1)+b tabels.append(genTable(a, b, Sum, S)) return a, b, Sum, S, tabels