def mx_rank(self): print("\n Operace: hodnost matice:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx) print("~(rank(A))~") self.__current_operation = MatrixREF(mx) mx_res = self.__current_operation.calculate_ref() self.operation_result = self.__current_operation.rank print(self.operation_result)
def mx_determinant(self): print("\n Operace výpočet determinantu:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx) print("~(det(A))~") self.__current_operation = MatrixDeterminant(mx) self.operation_result = self.__current_operation.calculate_determinant( ) print(self.operation_result)
def mx_rref(self): print("\nOperace: RREF:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx) print("~(RREF)~") print(" - " * (mx.m * 2)) self.__current_operation = MatrixRREF(mx) self.operation_result = self.__current_operation.calculate_rref() MatrixConsolePrinter.print_default(self.operation_result)
def mx_transpose(self): print("\nOperace: Transpozice:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx) print("~(A^(T))~") print(" - " * (mx.m * 2)) self.__current_operation = MatrixTransposition(mx) self.operation_result = self.__current_operation.calculate_transpose() MatrixConsolePrinter.print_default(self.operation_result)
def read_matrix_user_input(self, mx): ctr = 0 while ctr < mx.m: continue_read_row = True # Čtení řádku while(continue_read_row): input_row = input() parsed_data_arr = self.__try_parse_matrix_row_input(input_row) if(parsed_data_arr and len(parsed_data_arr) == mx.n): mx.data[ctr] = parsed_data_arr continue_read_row = False else: print("Neplatně zadaný řádek matice, zkuste to znovu: ") if(ctr > 0): matrix_printer.print_simple(mx) ctr += 1
def mx_inverse(self): print("\nOperace: určení inverzní matice:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx) print("~(A^(-1))~") print(" - " * (mx.m * 2)) self.__current_operation = MatrixInversion(mx) self.operation_result = self.__current_operation.calculate_inversion_of_matrix( ) if self.__current_operation.inversion_state: MatrixConsolePrinter.print_default(self.operation_result)
def mx_scalar_multiply(self): print("\nOperace násobení skalárem:") print("\nZadání matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx = self.__read_mx_data(self) print("Zadejte skalár:") scalar = self.input_reader.read_scalar() MatrixConsolePrinter.print_default(mx) print("*(", scalar, ")", sep="") print(" - " * (mx.m * 2)) self.__current_operation = MatrixScalarMultiplication(mx, scalar) self.operation_result = self.__current_operation.calculate_scalar_multiplication( ) MatrixConsolePrinter.print_default(self.operation_result)
def __write_data_to_file(self, data_to_print, path_to_file): try: data_string = '' if type(data_to_print) is Matrix: data_string = MatrixConsolePrinter.print_simple(data_to_print, get = True) else: data_string = str(data_to_print) with open(path_to_file, 'w') as file: file.write(data_string) except: print('Při zápisu souboru došlo k chybě.')
def mx_add(self): #1) print("\nOperace sčítání:") #2) print("\nZadání 1. matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx1 = self.__read_mx_data(self) self.dims_check = lambda sec_mx_dims: Helpers.invalid_dims_addition( sec_mx_dims, mx1) print("\nZadání 2. matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx2 = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx1) print("(+)") MatrixConsolePrinter.print_default(mx2) print(" - " * (mx2.m * 2)) self.__current_operation = MatrixAddition(mx1, mx2) self.operation_result = self.__current_operation.calculate_sum() MatrixConsolePrinter.print_default(self.operation_result)
def mx_multiply(self): print("\nOperace: Maticové Násobení:") print("\nZadání 1. matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx1 = self.__read_mx_data(self) self.dims_check = lambda sec_mx_dims: Helpers.invalid_dims_multiplication( sec_mx_dims, mx1) print("\nZadání 2. matice:") print("¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯ ¯") mx2 = self.__read_mx_data(self) MatrixConsolePrinter.print_default(mx1) print("~(*)~") MatrixConsolePrinter.print_default(mx2) print(" - " * (mx2.m * 2)) self.__current_operation = MatrixMultiplication(mx1, mx2) self.operation_result = self.__current_operation.calculate_multiplication( ) MatrixConsolePrinter.print_default(self.operation_result)