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()
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')