Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # курсовая 2019 года!!!!!!!!!
- # 8 лабораторных работ (если успел сделать 6 в определенное время, то этого достаточно)
- # учет баллов - программная реализация (6 формальных единиц -> 6 баллов в отчет)
- # создание отчета (определенный формат титульного листа), название брать с сайта вуза(кек), указывать курс (численные методы), название лабораторной работы, выполнил + ФИО, проверил, место исполнения (Москва) и год исполнения
- # в отчете должна быть постановка задачи (входные и выходные данные) её будут говорить, основные теоретические сведения и практическую реализацию(копирование текста кода) + вывод(анализ выходных данных) + тестирование(?)
- # почта Домрачевой Анны Борисовны ()
- # нужно отправлять отчет как сдал лабу
- #
- #
- #
- #
- # a - главная диагональ b - над главной c - лежит под главной f - вектор ответов x - решение
- # init alpha, beta
- alpha = [0]
- beta = [0]
- # сделать!!!
- def TestMatrix(a, c, b, n):
- for i in range(n):
- if b[i] == 0:
- continue
- if a[i] == 0:
- continue
- 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:
- continue
- else:
- return False
- return True
- def StraightRun(b, c, a, f, n):
- for i in range(0, n - 1):
- alpha.append(-b[i] / (c[i] * alpha[i] + a[i]))
- beta.append((f[i] - c[i] * beta[i]) / (c[i] * alpha[i] + a[i]))
- def ReturnRun(x, n):
- for i in reversed(range(n - 1)):
- x[i] = alpha[i + 1] * x[i + 1] + beta[i + 1]
- return [format(n, '.30f') for n in x]
- def Algorithm(b, a, c, f):
- n = len(f)
- if TestMatrix(a, c, b, n):
- x = [0] * n
- # запускаем прямой ход
- StraightRun(b, c, a, f, n)
- # выражаем Xn
- x[n - 1] = (f[n - 1] - c[n - 2] * beta[n - 1]) / (a[n - 1] + c[n - 2] * alpha[n - 1])
- # запускаем обратный ход
- return ReturnRun(x, n)
- else:
- print("Error matrix")
- def main():
- arr_b = [int(x) for x in input("Введите верхнюю диагональ").split(" ")]
- arr_a = [int(x) for x in input("Введите среднюю диагональ").split(" ")]
- arr_c = [int(x) for x in input("Введите нижнюю диагональ").split(" ")]
- arr_ans = [int(x) for x in input("Введите вектор ответов").split(" ")]
- print(Algorithm(arr_b, arr_a, arr_c, arr_ans))
- # if __name__ == "__main__":
- # main()
- # else:
- # print(Algorithm([1, 1, 1, 0], [4, 4, 4, 4], [0, 1, 1, 1], [5, 6, 6, 5]))
- # print(Algorithm([1, 1, 0], [5, 5, 5], [0, 1, 1], [6, 7, 7, 6]))
- print(Algorithm([1, 1, 1, 0], [3, 3, 3, 3], [0, 1, 1, 1], [4, 5, 5, 4]))
- print(Algorithm([1, 1, 0], [5, 5, 5], [0, 1, 1], [6, 7, 6]))
- 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