Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def swapel(yrav, a, b): # Поменять местами два элемента в уравнении
- global sistema
- t = sistema[yrav][a]
- sistema[yrav][a] = sistema[yrav][b]
- sistema[yrav][b] = t
- return
- def swapyr(yrav1, yrav2): # Поменять местами два уравнения
- global sistema
- t = [0, 0, 0, 0, 0]
- for elem in range(5):
- t[elem] = sistema[yrav1][elem]
- for elem in range(5):
- sistema[yrav1][elem] = sistema[yrav2][elem]
- for elem in range(5):
- sistema[yrav2][elem] = t[elem]
- def output(): # Вывести систему в консоль
- global sistema
- for yrav in range(4):
- for elem in range(5):
- if elem != 4:
- print(sistema[yrav][elem], '*x', elem + 1, sep='', end='')
- else:
- print(sistema[yrav][elem], sep='', end='')
- if elem == 3:
- print(' = ', sep='', end='')
- elif elem == 4:
- print('')
- else:
- print(' + ', sep='', end='')
- def nullglav(): # Меняет уравнения местами, чтобы не было нулей на главной диагонали
- global sistema
- if sistema[0][0] != 0 and sistema[1][1] != 0 and sistema[2][2] != 0 and sistema[3][3] != 0:
- return 0
- while sistema[0][0] == 0 or sistema[1][1] == 0 or sistema[2][2] == 0 or sistema[3][3] == 0:
- for i in range(3):
- for k in range(3):
- swapyr(i,k)
- if sistema[0][0] != 0 and sistema[1][1] != 0 and sistema[2][2] != 0 and sistema[3][3] != 0:
- return
- return 1
- sistema = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] # массив коэффициентов
- x = [0, 0, 0, 0] # корни
- # ввод данных:
- nenull = 1 # - флаг, отвечающий за то, чтобы хотя бы один коэффициент отличался от нуля
- for yrav in range(4):
- print(yrav + 1, 'уравнение в системе:')
- if nenull == False:
- print('!!!Все коэффициенты уравнения равны нулю.')
- exit()
- nenull = 0
- for elem in range(5):
- if elem != 4:
- print('x', elem + 1, ' * ', sep='', end='')
- else:
- print('Правая часть уравнения = ', sep='', end='')
- koef = float(input())
- if elem != 4 and koef != 0:
- nenull = 1
- sistema[yrav][elem] = koef
- # вывод получившейся системы:
- print('\nСистема уравнений:')
- output()
- for k in range(4):
- j = k+1
- while j < 4:
- d = sistema[j][k] / sistema[k][k]
- i = k
- while i < 4:
- sistema[j][i] = sistema[j][i] - d * sistema[k][i]
- if abs(sistema[k][k]) >= abs(sistema[i][k]): # уменьшение ошибки округления
- sistema[i][k] = round(sistema[i][k], 5)
- i += 1
- sistema[j][4] = sistema[j][4] - d * sistema[k][4]
- j += 1
- # обратный ход
- k = 4-1
- while k >= 0:
- d = 0
- j = k + 1
- while j < 4:
- s = sistema[k][j] * x[j]
- d = d + s
- j += 1
- x[k] = (sistema[k][4] - d) / sistema[k][k]
- k = k - 1
- print('')
- #output()
- print('Корни:')
- for i in range(4):
- print('x', i + 1, ' = ', round(x[i],4), sep='')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement