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