def ingresar_matriz(filas, columnas, text=''):
    ma = []
    for i in range(filas):
        ma.append([])
        for j in range(columnas):
            clean()
            print(f'{text}')
            ma[i].append([])
            imprimir_matriz(ma)
            numero = input(
                f'\nIngresa la parte REAL de la posicion {i+1},{j+1}: ')
            numero = convert_float(numero)
            if numero:
                ma[i][j].append(numero)
            else:
                ma[i][j].append(0)
            clean()
            print(f'{text}')
            imprimir_matriz(ma)
            numero = input(
                f'\nIngresa la parte IMAGINARIA de la posicion {i+1},{j+1}: ')
            numero = convert_float(numero)
            if numero:
                ma[i][j].append(numero)
            else:
                ma[i][j].append(0)
    clean()
    print('Matriz: ')
    imprimir_matriz(ma)
    pause()
    return ma
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 determinante(mat):
    filas = len(mat)
    columnas = len(mat[0])
    if filas == columnas:
        if filas == 3:
            return det3x3(mat)
        elif filas == 4:
            return det4x4(mat)
        else:
            print('Tranajando matrices mas grandes')
            return False
    else:
        print('Las filas y las columnas son de tamaños diferentes')
        print(f'Filas: {filas}')
        print(f'Columnas: {columnas}')
    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 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()
예제 #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 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')