def testDividir(self): numero1 = NumeroComplejo("3","4") numero2 = NumeroComplejo("2","1") app = QtWidgets.QApplication(sys.argv) main = NCom() resultado = main.operacionDividir(numero1,numero2) self.assertEqual(resultado.getFormaOrdenada(),"(2.00,1.00)")
def testMultiplicar(self): numero1 = NumeroComplejo("4","5") numero2 = NumeroComplejo("3","-5") app = QtWidgets.QApplication(sys.argv) main = NCom() resultado = main.operacionMultiplicar(numero1,numero2) self.assertEqual(resultado.getFormaOrdenada(),"(37.00,-5.00)")
def operacionRaiz(self, numero, raiz): nuevoModulo = math.pow(Decimal(numero.getModulo()), (1 / Decimal(raiz))) nuevoAngulo = Decimal(numero.getAngulo()) / Decimal(raiz) numeroResultado = NumeroComplejo('0', '0') numeroResultado.setEnPolar(str(round(nuevoModulo, 2)), str(round(nuevoAngulo, 2))) return numeroResultado
def testRaiz(self): numero = NumeroComplejo("0","0") numero.setEnPolar("9","10") exponente = "2" app = QtWidgets.QApplication(sys.argv) main = NCom() resultado = main.operacionRaiz(numero,exponente) self.assertEqual(resultado.getFormaPolar(),"[3.00;5.00]")
def testPotencia(self): numero = NumeroComplejo("0","0") numero.setEnPolar("4","5") exponente = "4" app = QtWidgets.QApplication(sys.argv) main = NCom() resultado = main.operacionPotencia(numero,exponente) self.assertEqual(resultado.getFormaPolar(),"[256.00;20.00]")
def nesimas(self): numero = NumeroComplejo('0', '0') numeroComplejo, okPressed = QInputDialog.getText( self, "Raiz", "Complejo:", QLineEdit.Normal, "") if okPressed and numeroComplejo != '': numero = self.setNumeroComplejo(numeroComplejo) raiz, okPressed = QInputDialog.getText(self, "Raiz", "Raiz:", QLineEdit.Normal, "") if okPressed and raiz != '': try: nuevoModulo = math.pow(Decimal(numero.getModulo()), (1 / Decimal(raiz))) raices = [] for k in range(0, int(raiz)): nuevoAngulo = (Decimal(numero.getAngulo()) + 2 * k * Decimal(math.pi)) / Decimal(raiz) nuevaRaiz = "[" + str( round(nuevoModulo, 2)) + ";" + str( round(nuevoAngulo, 2)) + "]" #if k != (int(raiz)-1): # nuevaRaiz += " - " raices.append(nuevaRaiz) raicesEnTexto = "" for i in range(len(raices)): raicesEnTexto += "W" + str(i) + " = " + raices[i] if (self.esPrimitiva(i, Decimal(raiz)) == 1): raicesEnTexto += "(Prim)" raicesEnTexto += "\n" msgBox = QMessageBox() msgBox.setWindowTitle("MessageBox demo") msgBox.setText(raicesEnTexto) msgBox.exec() except: msgBox = QMessageBox.critical(self, "Datos incorrectos", "Vuelva a intentarlo")
def operacionMultiplicar(self, numero1, numero2): real = Decimal(numero1.getReal()) * Decimal( numero2.getReal()) + (-1) * Decimal( numero1.getImaginario()) * Decimal(numero2.getImaginario()) imaginario = Decimal(numero1.getReal()) * Decimal( numero2.getImaginario()) + Decimal( numero1.getImaginario()) * Decimal(numero2.getReal()) numeroResultado = NumeroComplejo(str(real), str(imaginario)) return numeroResultado
def operacionDividir(self, numero1, numero2): conjugadoDivisor = self.getConjugado(numero2) divisorResultado = math.pow(Decimal(numero2.getReal()), 2) + math.pow( Decimal(numero2.getImaginario()), 2) dividendo = self.operacionMultiplicar(numero1, conjugadoDivisor) parteReal = Decimal(dividendo.getReal()) / Decimal(divisorResultado) parteImaginaria = Decimal( dividendo.getImaginario()) / Decimal(divisorResultado) numeroResultado = NumeroComplejo(str(round(parteReal, 2)), str(round(parteImaginaria, 2))) return numeroResultado
def setNumeroComplejo(self, numero): true = 1 false = 0 numeroComplejo = NumeroComplejo('0', '0') if re.match('-?([0-9]+|[0-9]+\.[0-9]+)\+-?([0-9]+|[0-9]+\.[0-9]+)j', numero): real = numero[0:numero.find('+')] imaginario = numero[numero.find('+') + 1:len(numero) - 1] numeroComplejo = NumeroComplejo(real, imaginario) else: if re.match( '\[([0-9]+|[0-9]+\.[0-9]+);-?([0-9]+|[0-9]+\.[0-9]+)\]', numero): P = numero[1:numero.find(';')] Q = numero[numero.find(';') + 1:len(numero) - 1] numeroComplejo.setEnPolar(P, Q) else: if re.match( '\(-?([0-9]+|[0-9]+\.[0-9]+),-?([0-9]+|[0-9]+\.[0-9]+)\)', numero): real = numero[1:numero.find(',')] imaginario = numero[numero.find(',') + 1:len(numero) - 1] numeroComplejo = NumeroComplejo(real, imaginario) else: if re.match( '([0-9]+|[0-9]+\.[0-9]+)?cos\(([0-9]+|[0-9]+\.[0-9]+)t((\+|-)([0-9]+|[0-9]+\.[0-9]+))?\)', numero): P = numero[0:numero.find('cos')] if P == '': P = '1' W = numero[numero.find('(') + 1:numero.find('t')] Q = numero[numero.find('t') + 1:numero.find(')')] if Q == '': Q = '0' numeroComplejo.setEnTrigonometrica(P, Q, W, 1) else: if re.match( '([0-9]+|[0-9]+\.[0-9]+)?sen\(([0-9]+|[0-9]+\.[0-9]+)t((\+|-)([0-9]+|[0-9]+\.[0-9]+))?\)', numero): P = numero[0:numero.find('sen')] if P == '': P = '1' W = numero[numero.find('(') + 1:numero.find('t')] Q = numero[numero.find('t') + 1:numero.find(')')] if Q == '': Q = '0' numeroComplejo.setEnTrigonometrica(P, Q, W, 0) else: numeroComplejo = '' return numeroComplejo
def sumaFasores(self): numero1 = NumeroComplejo('0', '0') numero2 = NumeroComplejo('0', '0') numeroComplejo1, okPressed = QInputDialog.getText( self, "Suma de fasores", "Numero 1:", QLineEdit.Normal, "") if okPressed and numeroComplejo1 != '': numero1 = self.setNumeroComplejo(numeroComplejo1) numeroComplejo2, okPressed = QInputDialog.getText( self, "Suma de fasores", "Numero 2:", QLineEdit.Normal, "") if okPressed and numeroComplejo2 != '': numero2 = self.setNumeroComplejo(numeroComplejo2) try: if numero1.getFrecuencia() == numero2.getFrecuencia(): real = numero1.getReal() + numero2.getReal() imaginario = numero1.getImaginario( ) + numero2.getImaginario() numeroFinal = NumeroComplejo(str(real), str(imaginario)) numeroFinal.setFrecuencia(numero1.getFrecuencia()) msgBox = QMessageBox(self) msgBox.setWindowTitle("Suma") msgBox.setText(numeroFinal.getFormaTrigonometrica()) msgBox.exec() else: msgBox = QMessageBox.critical( self, "Datos incorrectos", "Frecuencias distintas, no se puede realizar la suma" ) except: msgBox = QMessageBox.critical(self, "Datos incorrectos", "Vuelva a intentarlo")
def operacionPotencia(self, numero, exponente): nuevoModulo = math.pow(Decimal(numero.getModulo()), Decimal(exponente)) nuevoAngulo = Decimal(numero.getAngulo()) * Decimal(exponente) numeroResultado = NumeroComplejo('0', '0') numeroResultado.setEnPolar(str(nuevoModulo), str(nuevoAngulo)) return numeroResultado
def getConjugado(self, numero): real = numero.getReal() imaginario = Decimal(numero.getImaginario()) * (-1) conjugado = NumeroComplejo(str(real), str(imaginario)) return conjugado
def testBinomicaAPolarPositivoPositivo(self): numero = NumeroComplejo("3","5") self.assertEqual(numero.getFormaPolar(),"[5.83;1.03]")
def testBinomicaAPolarNegativoNegativo(self): numero = NumeroComplejo("-3","-5") self.assertEqual(numero.getFormaPolar(),"[5.83;4.17]")
def testBinomicaAPolarNegativoPositivo(self): numero = NumeroComplejo("-3","5") self.assertEqual(numero.getFormaPolar(),"[5.83;2.11]")
def testBinomicaAPolarPositivoNegativo(self): numero = NumeroComplejo("3","-5") self.assertEqual(numero.getFormaPolar(),"[5.83;5.25]")