Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
3.7 kB
3
Indexable
Never
print('------------------------------------------------------------------------------------------------------------------------------')
print('                                           Лабораторная работа №1                                                             ')
print('                                                Вариант 4                                                                     ')
print('                                                                                   Выполнил: Бикеев Вадим Владимрович         ')
print('                                                                                   Группа: М6О-308С-21                        ')
print('                                                                                   Преподаватель: Котельников Михаил Вадимович')
print('------------------------------------------------------------------------------------------------------------------------------')

# number_of_equations - количество уравнений в СЛАУ
# matrix_of_the_system - матрица СЛАУ
# matrix_X - матрица решений
# determ - определитель
# action - действие с матрицей

print('Введите количество уравнений')
number_of_equations = int(input())

print()
print('Введите матрицу из', number_of_equations, 'строк' , number_of_equations + 1, 'столбцов')

#Вводим исходную матрицу
matrix_of_the_system = []
for _ in range(number_of_equations):
    matrix_of_the_system.append([float(elem) for elem in input().split()])

print()
print('Выберите действие: 1 - Решить СЛАУ. 2 - Посчитать определитель.')
# Выбираем действие 
action = int(input())

#Приведение матрицы к треугольному виду
for i in range(number_of_equations - 1):
    k = i
       
    while k < number_of_equations - 1:
        # множиетель, позволяющий занулить первый ненулевой элемент строки
        multiplier = matrix_of_the_system[k+1][i] / matrix_of_the_system[i][i]
        
        #Вычитаем строки
        for j in range(i, number_of_equations + 1):
            matrix_of_the_system[k+1][j] = matrix_of_the_system[k+1][j] - matrix_of_the_system[i][j]*multiplier   
        k += 1

    
matrix_X = [0 for _ in range(number_of_equations)]      

#Обратный ход и последний элемент
if matrix_of_the_system[number_of_equations-1][number_of_equations-1] != 0:
    matrix_X[number_of_equations-1] = round(matrix_of_the_system[number_of_equations-1][number_of_equations]/matrix_of_the_system[number_of_equations-1][number_of_equations-1], 4)

for i in range(number_of_equations-2, -1, - 1):
    x = matrix_of_the_system[i][number_of_equations]
    for j in range(i+1,number_of_equations):
        x = x - matrix_of_the_system[i][j]*matrix_X[j] 
    matrix_X[i] = round(x / matrix_of_the_system[i][i], 4)

print('')   
#Выводим решение СЛАУ
if action == 1:
    print('Решение СЛАУ:')
    print('')
    for i in range(number_of_equations):
        print('x', i + 1, sep = '', end = '')
        print(' =', matrix_X[i])

#Считаем определитель
elif action == 2:
    determ = 1
    print('')
    for i in range(number_of_equations):
        determ *= matrix_of_the_system[i][i]
    print(round(determ, 4))