Exemplo n.º 1
1
 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)))
Exemplo n.º 2
0
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