def main(): # Матрица из задания matrix = Matrix([[19, 5, 8], [5, -1, -6], [8, -6, -3]]) # Количество итераций number_of_iterations = 21 # ============================================================ # ВНИМАНИЕ! Пугливым ниже не смотреть! Дальше программный код! # ATTENTION! Not for timid people! Below is the program code! # ============================================================ print("Введенная матрица:\n") matrix.console_display() print("Нахождение спектрального радиуса степенным методом:\n") decision = power_method(matrix, level_of_detail=2, iterations=number_of_iterations) for step in decision: step_info = '' for info in step: if info not in ['Матрица']: if isinstance(step[info], (tuple, list)): step_info += f'{info}: {list(map(lambda x: round(x, 8), step[info]))}\n' elif isinstance(step[info], float): step_info += f'{info}: {round(step[info], 8)}\n' else: step_info += f'{info}: {step[info]}\n' print(step_info)
def main(): # Матрица из задания matrix = Matrix([[7, -1, 0, 0, 0], [5, -11, -4, 0, 0], [0, 2, -8, 4, 0], [0, 0, -4, 7, -4], [0, 0, 0, 4, -8]]) # Столбец свободных членов free_column = [10, 54, 42, 28, -16] # ============================================================ # ВНИМАНИЕ! Пугливым ниже не смотреть! Дальше программный код! # ATTENTION! Not for timid people! Below is the program code! # ============================================================ print(f"Столбец свободных членов: {free_column}\n") print("Введенная матрица:\n") matrix.console_display() print("Решение методом прогонки:\n") solution = triple(matrix, free_column, level_of_detail=2) for step in solution: step_info = '' for info in step: if info not in ['Матрица']: if isinstance(step[info], (tuple, list)): step_info += f'{info}: {list(map(lambda x: round(x, 8), step[info]))}\n' elif isinstance(step[info], float): step_info += f'{info}: {round(step[info], 8)}\n' else: step_info += f'{info}: {step[info]}\n' print(step_info)
def main(): # Матрица из задания matrix = Matrix([[-11, 7, -1, 6], [-11, -9, 2, -7], [9, -3, 1, -2], [-5, 4, -1, -11]]) # Столбец свободных членов free_column = [74, 60, -54, -66] # ============================================================ # ВНИМАНИЕ! Пугливым ниже не смотреть! Дальше программный код! # ATTENTION! Not for timid people! Below is the program code! # ============================================================ print("Введенная матрица:") matrix.console_display() print(f'Определитель данной матрицы равен {matrix.det}\n') print("Матрица, обратная данной:") (matrix**(-1)).console_display() print('\n' + " Решение методом Гаусса для данной СЛАУ: ".center(75, '=')) decision = gauss(matrix.copy(), free_column, level_of_details=2) for step in decision: for info in step: if 'Матрица' in info: step[info].console_display() else: print(f"{info}: {step[info]}")
def main(): # Матрица из задания matrix = Matrix([ [38, -10, -1], [2, -36, 9], [6, -1, -37], ]) # Столбец свободных членов free_column = [-293, -23, -303] print("Введенная матрица:") matrix.console_display() # ============================================================ # ВНИМАНИЕ! Пугливым ниже не смотреть! Дальше программный код! # ATTENTION! Not for timid people! Below is the program code! # ============================================================ print(f"Столбец свободных членов: {free_column}\n") if not matrix.is_dominant: print("Матрица не сходится") input('Нажмите "Enter" чтобы выйти...') exit() else: print(f"\n{' Решение методом простых итераций '.center(50, '=')}\n") solution = simple(matrix, free_column, iterations=10, level_of_detail=2) for step in solution: step_info = '' for info in step: if info not in ['Матрица']: if info in ['Нормы матрицы', 'Нормы вектора', 'Решение']: step_info += f'{info}: {list(map(lambda x: round(x, 8), step[info]))}\n' else: step_info += f'{info}: ' \ f'{step[info] if not isinstance(step[info], float) else round(step[info], 8)}\n' print(step_info) print(f"\n{' Решение методом Зейделя '.center(50, '=')}\n") solution = zeidel(matrix, free_column, iterations=5, level_of_detail=2) for step in solution: step_info = '' for info in step: if info not in ['Матрица']: if info in ['Нормы матрицы', 'Нормы вектора', 'Решение']: step_info += f'{info}: {list(map(lambda x: round(x, 8), step[info]))}\n' else: step_info += f'{info}: ' \ f'{step[info] if not isinstance(step[info], float) else round(step[info], 8)}\n' print(step_info)
def main(): # Матрица из задания matrix = Matrix([ [-4, 4, -4], [4, 2, -8], [-4, -8, 15] ]) # Количество итераций number_of_iterations = 8 # ============================================================ # ВНИМАНИЕ! Пугливым ниже не смотреть! Дальше программный код! # ATTENTION! Not for timid people! Below is the program code! # ============================================================ print("Введенная матрица:\n") matrix.console_display() print("Нахождение собственных чисел и векторов методом вращения Якоби:\n") decision = yakobi_rotation(matrix, level_of_detail=2, iterations=number_of_iterations) for step in decision: for info in step: if 'матрица' in info.lower(): print(info, end=':\n\n') step[info].console_display() elif info == 'Решение': print('\n', ' Решение '.center(75, '='), '\n') solution = step['Решение'] for own_num_no in range(len(solution['Собственные числа'])): print(f'{own_num_no + 1} собственное число: {round(solution["Собственные числа"][own_num_no], 8)}') print(f'{own_num_no + 1} собственный вектор: ' f'{[round(_, 8) for _ in solution["Собственные векторы"][own_num_no]]}\n') elif info == 'Угол поворота фи': print(f'\n{info}: {step[info]}\n') else: print(f' {info}: {step[info]} '.center(75, '='))