def masinfo(datos, determinante_original, matrices, determinantes):
    clean()
    print('La determinante de la matriz: ')
    imprimir_matriz(datos)
    if determinante_original[1] < 0:
        print(
            f'Es: {determinante_original[0]} - {-1 * determinante_original[1]}i'
        )
    elif determinante_original[1] > 0:
        print(f'Es: {determinante_original[0]} + {determinante_original[1]}i')
    else:
        print(f'Es: {determinante_original[0]}')
    print()
    for i in range(len(datos)):
        print('La determinante de la matriz: ')
        imprimir_matriz(matrices[i])
        if determinantes[i][1] < 0:
            print(f'Es: {determinantes[i][0]} - {-1 * determinantes[i][1]}i')
        elif determinantes[i][1] > 0:
            print(f'Es: {determinantes[i][0]} + {determinantes[i][1]}i')
        else:
            print(f'Es: {determinantes[i][0]}')
        print()

    mostrar = True
    while mostrar:
        opc = str(input('\n1.- Regresar\n2.- Menu\nElige una opcion: '))
        if opc == '1':
            return True
        elif opc == '2':
            return False
        else:
            print('Opcion no valida intenta nuevamente')
            input('Presiona Enter para continuar')
def numero():
    inc = True
    while inc:
        clean()
        n = input('Ingresa un numero: ')
        n = convert_int(n)
        if n > 0:
            return n
        else:
            print(
                'Numero no valido, debe ser un numero entero positivo, intenta nuevamente.'
            )
            pause()
def size():
    option = None
    incorrecto = True
    while incorrecto:
        clean()
        option = input("""1.- Sistema de ecuaciones de 3 incognitas
2.- Sistema de ecuaciones de 4 incognitas
3.- Sistema de ecuaciones de n incognitas
4.- Cancelar
Elige una opcion: """)
        option = convert_int(option)
        if (option > 0 and option < 5) or option == 369 or option == 365:
            incorrecto = False
        else:
            print('Opcion no valida. Intenta nuevamente')
            pause()
    return option
def main():
    option = None
    incorrecto = True
    while incorrecto:
        clean()
        option = input("""1.- Reales
2.- Imaginarios
3.- Salir
Elige una opcion: """)
        option = convert_int(option)
        if option > 0 and option < 4:
            incorrecto = False
        else:
            print('Opcion no valida. Intenta nuevamente')
            pause()

    return option
def ingresar_matriz(filas, columnas, text=''):
    ma = []
    for i in range(filas):
        ma.append([])
        for j in range(columnas):
            clean()
            print(f'{text}')
            imprimir_matriz(ma)
            numero = input(f'\nIngresa el numero de la posicion {i+1},{j+1}: ')
            numero = convert_float(numero)
            if numero:
                ma[i].append(numero)
            else:
                ma[i].append(0)
    clean()
    print('Matriz: ')
    imprimir_matriz(ma)
    pause()
    return ma
def masinfo(datos, determinante_original, matrices, determinantes):
    clean()
    print('La determinante de la matriz: ')
    imprimir_matriz(datos)
    print(f'Es: {determinante_original}')
    print()
    for i in range(len(datos)):
        print('La determinante de la matriz: ')
        imprimir_matriz(matrices[i])
        print(f'Es: {determinantes[i]}')
        print()

    mostrar = True
    while mostrar:
        opc = str(input('\n1.- Regresar\n2.- Menu\nElige una opcion: '))
        if opc == '1':
            return True
        elif opc == '2':
            return False
        else:
            print('Opcion no valida intenta nuevamente')
            pause()
Esempio n. 7
0
def main():
    show_menu = True
    while show_menu:
        #opc = menus.main()
        opc = 1
        if opc == 1:
            reales = 369
            reales = menus.size()
            if reales == 1:
                datos = matrices.ingresar_matriz(
                    3, 3, 'Ingresa los datos de la matriz de datos: ')
                resultados = matrices.ingresar_matriz(
                    3, 1, 'Ingresa los resultados: ')
                matrices.solucion(datos, resultados)
            elif reales == 2:
                datos = matrices.ingresar_matriz(
                    4, 4, 'Ingresa los datos de la matriz de datos: ')
                resultados = matrices.ingresar_matriz(
                    4, 1, 'Ingresa los resultados: ')
                matrices.solucion(datos, resultados)
            elif reales == 3:
                n = menus.numero()
                datos = matrices.ingresar_matriz(
                    n, n, 'Ingresa los datos de la matriz de datos: ')
                resultados = matrices.ingresar_matriz(
                    n, 1, 'Ingresa los resultados: ')
                matrices.solucion(datos, resultados)
            elif reales == 369:
                matrices.main()
                #show_menu = False
            elif reales == 365:
                clean()
                matrices.aleatoria()
            else:
                opc = 3
                show_menu = False

        elif opc == 2:
            clean()
            print(
                'Arreglando errores, no disponible de momento. Lamentamos las molestias'
            )
            pause()
            """ imaginarios = menus.size()
            if imaginarios == 1:
                datos = complejas.ingresar_matriz(3,3,'Ingresa los datos de la matriz de datos: ')
                resultados = complejas.ingresar_matriz(3,1,'Ingresa los resultados: ')
            elif reales == 2:
                datos = complejas.ingresar_matriz(4,4,'Ingresa los datos de la matriz de datos: ')
                resultados = complejas.ingresar_matriz(4,1,'Ingresa los resultados: ') """
#            try:
#complejas.solucion(datos, resultados)
#pause()
#            except:
#                pass

        elif opc == 3:
            print('Adios.')
            sleep(.5)
            clean()
            show_menu = False
def main():
    global encontradas
    global no_encontradas
    global determinantes_no_encontradas
    clean()
    n = int(input('Ingresa el tamaño de la matriz: '))
    #n = 3
    veces = int(input('Ingresa el numero de veces a realizar: '))
    #veces = 50000
    comparaciones = int(input('Numero de comparaciones: '))
    #comparaciones = 100
    #clean()
    datos_promedio = []
    for bucle in range(comparaciones):
        encontradas = 0
        no_encontradas = 0
        inicio = time.time()
        for vez in range(veces):
            datos = []
            #resultados = []
            for i in range(n):
                datos.append([])
                donde.append(0)
                for _ in range(n):
                    datos[i].append(random.randrange(-2, 3))
                    #datos[i].append(random.randrange(0, 2))
            """ for i in range(n):
                resultados.append([])
                resultados[i].append(random.randrange(5 * n, 100 * n))
            solucion(datos, resultados) """
            det = determinante_base(datos)
        fin = time.time()
        total = fin - inicio
        #imprimir_matriz(datos)
        print(
            f'{bucle + 1}.- Tiempo total en tomar {veces} determinantes de {n}x{n}: {total}'
        )
        print(
            f'Encontradas: {encontradas} --- No encontradas: {no_encontradas}')
        print(
            f'Total: {encontradas + no_encontradas}\t\t{bucle + 1} de {comparaciones}'
        )
        print('--------------------------\n')

        datos_promedio.append(total)
    promedio = sum(datos_promedio) / len(datos_promedio)
    print(
        f'El promedio de tiempo fue {promedio} --- Tiempo total: {sum(datos_promedio)}'
    )
    print(
        f'Salvadas de repetir en diccionario: {iguales} --- Encontradas en db: {encontradas_en_db}'
    )
    print()
    print('Actualizando datos...')

    nombre = '['
    for _ in range(n - 1):
        nombre += '['
    for i in range(len(donde)):
        if donde[i] > 0:
            print(f'Agregando a la matriz {i + 2}x{i + 2}: {donde[i]}')
    determinantes_no_encontradas[f'{nombre}'] = 0
    agregar(determinantes_no_encontradas)
    determinantes_no_encontradas = {}
def solucion(datos, resultados):
    clean()
    filas = len(datos)
    res_long = len(resultados)
    columnas = len(datos[0])
    if filas == columnas and res_long == filas:
        inicio_de_tiempo = time.time()
        matrices = []
        determinantes = []
        determinante_original = determinante_base(datos)
        fin_de_tiempo = time.time()
        tiempo_determinante_original = fin_de_tiempo - inicio_de_tiempo
        if determinante_original != 0:
            longitud = len(datos)
            for i in range(longitud):
                matriz_auxiliar = []

                for elemento in datos:
                    matriz_auxiliar.append(elemento[:])

                for j in range(longitud):
                    matriz_auxiliar[j][i] = resultados[j][0]

                matrices.append(matriz_auxiliar)
                determinantes.append(determinante_base(matriz_auxiliar))
            fin_de_tiempo_total = time.time()
            tiempo_total = fin_de_tiempo_total - inicio_de_tiempo
            mostrar = True
            while mostrar:
                clean()
                print('Datos')
                imprimir_matriz(datos)
                print('Resultados')
                imprimir_matriz(resultados)
                for i in range(len(determinantes)):
                    resultado = round(determinantes[i] / determinante_original,
                                      5)
                    print(f'El valor {i+1} es: {resultado}')
                print()
                print(
                    f'Tiempo de la primer matriz: {tiempo_determinante_original}'
                )
                print(f'Tiempo de proceso total: {tiempo_total}')
                print()
                opc = str(
                    input('\n1.- Mas info\n2.- Menu\nElige una opcion: '))
                if opc == '1':
                    mostrar = masinfo(datos, determinante_original, matrices,
                                      determinantes)
                elif opc == '2':
                    mostrar = False
                else:
                    print('Opcion no valida intenta nuevamente')
                    pause()
        else:
            print(f'La determinande de la matriz')
            imprimir_matriz(datos)
            print('Es 0, no se puede resolver por este metodo')
    else:
        print('Las filas y las columnas son de tamaños diferentes')
        print(f'Filas: {filas}')
        print(f'Columnas: {columnas}')
def solucion(datos, resultados):
    clean()
    matrices = []
    determinantes = []
    determinante_original = determinante(datos)
    longitud = len(datos)
    if determinante_original[0] != 0 and determinante_original[1] != 0:
        for i in range(longitud):
            matriz_auxiliar = []

            for elemento in datos:
                matriz_auxiliar.append(elemento[:])

            for j in range(longitud):
                matriz_auxiliar[j][i] = resultados[j][0]

            matrices.append(matriz_auxiliar)
            determinantes.append(determinante(matriz_auxiliar))
        mostrar = True
        while mostrar:
            clean()
            print('Datos')
            imprimir_matriz(datos)
            print('Resultados')
            imprimir_matriz(resultados)
            for i in range(len(determinantes)):
                resultado = operaciones.division(determinante_original,
                                                 determinantes[i])
                real = resultado[0] / resultado[2]
                real = round(real, 5)
                imaginaria = resultado[1] / resultado[2]
                imaginaria = round(imaginaria, 5)

                if resultado[1] > 0 and resultado[2] > 0:
                    print(
                        f'El valor {i+1} es: ({resultado[0]}+{resultado[1]}i)/{resultado[2]} = {real}+{imaginaria}i'
                    )
                elif resultado[1] < 0 and resultado[2] > 0:
                    print(
                        f'El valor {i+1} es: ({resultado[0]}{resultado[1]}i)/{resultado[2]} = {real}-{-1*imaginaria}i'
                    )
                elif resultado[1] < 0 and resultado[2] < 0:
                    print(
                        f'El valor {i+1} es: ({resultado[0]}+{resultado[1]}i)/{resultado[2]} = {real}+{imaginaria}i'
                    )
                elif resultado[1] > 0 and resultado[2] < 0:
                    print(
                        f'El valor {i+1} es: ({resultado[0]}{resultado[1]}i)/{resultado[2]} = {real}-{-1*imaginaria}i'
                    )
                else:
                    print(
                        f'El valor {i+1} es: ({resultado[0]}/{resultado[2]} = ({real})'
                    )
            opc = str(input('\n1.- Mas info\n2.- Menu\nElige una opcion: '))
            if opc == '1':
                mostrar = masinfo(datos, determinante_original, matrices,
                                  determinantes)
            elif opc == '2':
                mostrar = False
            else:
                print('Opcion no valida intenta nuevamente')
                pause()
    else:
        print('La determinande de la matriz: ')
        imprimir_matriz(datos)
        print('Es 0, no tiene solucion por este metodo')