Advertisement
Guest User

Lab1

a guest
Feb 27th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. # курсовая 2019 года!!!!!!!!!
  2. # 8 лабораторных работ (если успел сделать 6 в определенное время, то этого достаточно)
  3. # учет баллов - программная реализация (6 формальных единиц -> 6 баллов в отчет)
  4. # создание отчета (определенный формат титульного листа), название брать с сайта вуза(кек), указывать курс (численные методы), название лабораторной работы, выполнил + ФИО, проверил, место исполнения (Москва) и год исполнения
  5. # в отчете должна быть постановка задачи (входные и выходные данные) её будут говорить, основные теоретические сведения и практическую реализацию(копирование текста кода) + вывод(анализ выходных данных) + тестирование(?)
  6. # почта Домрачевой Анны Борисовны ()
  7. # нужно отправлять отчет как сдал лабу
  8. #
  9. #
  10. #
  11. #
  12. #  a - главная диагональ b - над главной c - лежит под главной f - вектор ответов x - решение
  13.  
  14. # init alpha, beta
  15. alpha = [0]
  16. beta = [0]
  17.  
  18.  
  19. # сделать!!!
  20. def TestMatrix(a, c, b, n):
  21.     for i in range(n):
  22.         if b[i] == 0:
  23.             continue
  24.         if a[i] == 0:
  25.             continue
  26.         if abs(a[i]) >= abs(c[i - 1] + b[i]) and abs(b[i] / a[i]) <= 1 and abs(c[i - 1] / b[i]) <= 1:
  27.             continue
  28.         else:
  29.             return False
  30.     return True
  31.  
  32.  
  33. def StraightRun(b, c, a, f, n):
  34.     for i in range(0, n - 1):
  35.         alpha.append(-b[i] / (c[i] * alpha[i] + a[i]))
  36.         beta.append((f[i] - c[i] * beta[i]) / (c[i] * alpha[i] + a[i]))
  37.  
  38.  
  39. def ReturnRun(x, n):
  40.     for i in reversed(range(n - 1)):
  41.         x[i] = alpha[i + 1] * x[i + 1] + beta[i + 1]
  42.     return [format(n, '.30f') for n in x]
  43.  
  44.  
  45. def Algorithm(b, a, c, f):
  46.     n = len(f)
  47.     if TestMatrix(a, c, b, n):
  48.         x = [0] * n
  49.         # запускаем прямой ход
  50.         StraightRun(b, c, a, f, n)
  51.         # выражаем Xn
  52.         x[n - 1] = (f[n - 1] - c[n - 2] * beta[n - 1]) / (a[n - 1] + c[n - 2] * alpha[n - 1])
  53.         # запускаем обратный ход
  54.         return ReturnRun(x, n)
  55.     else:
  56.         print("Error matrix")
  57.  
  58.  
  59. def main():
  60.     arr_b = [int(x) for x in input("Введите верхнюю диагональ").split(" ")]
  61.     arr_a = [int(x) for x in input("Введите среднюю диагональ").split(" ")]
  62.     arr_c = [int(x) for x in input("Введите нижнюю диагональ").split(" ")]
  63.     arr_ans = [int(x) for x in input("Введите вектор ответов").split(" ")]
  64.     print(Algorithm(arr_b, arr_a, arr_c, arr_ans))
  65.  
  66.  
  67. # if __name__ == "__main__":
  68. #     main()
  69. # else:
  70. #     print(Algorithm([1, 1, 1, 0], [4, 4, 4, 4], [0, 1, 1, 1], [5, 6, 6, 5]))
  71. #     print(Algorithm([1, 1, 0], [5, 5, 5], [0, 1, 1], [6, 7, 7, 6]))
  72.  
  73. print(Algorithm([1, 1, 1, 0], [3, 3, 3, 3], [0, 1, 1, 1], [4, 5, 5, 4]))
  74. print(Algorithm([1, 1, 0], [5, 5, 5], [0, 1, 1], [6, 7, 6]))
  75. print(Algorithm([1, 10, 10, 0], [5, 5, 5, 5], [0, 1, 1, 1], [3, 4, 5, 1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement