def RotationMethod(size, a, precision): ac = copy.deepcopy(a) print("Лабораторная работа 1.4") print("Метод вращений") print() print("Матрица") additional.PrintMatrix(a) x, lambd = Rotation(size, a, precision) print("Ответ") print() print("Собственные значения") additional.PrintVector(x) print("Собственные векторы") additional.PrintMatrix(lambd) print("Проверка") a = numpy.array(a) lambd = numpy.array(lambd) additional.PrintMatrix(numpy.dot(a, lambd)) print('=\n') additional.PrintMatrix(lambd * x) ''' for i in range(size): for j in range(size): an = numpy.matrix(a) xn = numpy.array(x[j]) ln = lambd[i] print((an - [[ln if i == j else 0 for j in range(size)] for i in range(size)]) @ xn) ''' print("Ответ, почлученный через numpy.linalg") x, lambd = numpy.linalg.eig(ac) print() print("Собственные значения") additional.PrintVector(x) print("Собственные векторы") additional.PrintMatrix(lambd)
def RotationMethod(size, a, b, precision): print("Лабораторная работа 1.4") print("Метод вращений") print() print("Матрица") additional.PrintMatrix(a) x, u = algo.rotate_jacobi(size, a, precision) print("Ответ") additional.PrintVector(x) additional.PrintMatrix(u) print("Ответ, почлученный через numpy.linalg") x, u = numpy.linalg.eig(a) additional.PrintVector(x) additional.PrintMatrix(u)
def LUPMethod(size, a, b): print("Лабораторная работа 1.1") print("алгоритм LUP - разложения матриц ") print() print("Матрица") additional.PrintMatrix(a) additional.PrintVector(b) l, u, p = LUPSeparate(size, a) x = LUPSolve(size, l, u, b, p) print("L") additional.PrintMatrix(l) print("U") additional.PrintMatrix(u) print("L * U") additional.PrintMatrix(numpy.array(l) @ numpy.array(u)) # исправить print("Ответ") additional.PrintVector(x) print("Ответ, почлученный при помощи numpy") additional.PrintVector(numpy.linalg.solve(a, b))
def LUPMethod(size, a, b): print("Лабораторная работа 1.1") print("алгоритм LUP - разложения матриц ") print() l, u, p = algo.LUPSeparate(size, a) x = algo.LUPSolve(size, l, u, b, p) print("Матрица") additional.PrintMatrix(a) additional.PrintVector(b) print("L") additional.PrintMatrix(l) print("U") additional.PrintMatrix(u) print("Ответ") additional.PrintVector(x) nL = numpy.array(l) nU = numpy.array(u) print("Ответ, почлученный через numpy.linalg") additional.PrintVector(numpy.linalg.solve(a, b))
def SeidelMethod(size, a, b, precision): print("Метод Зейделя") print() print("Матрица") additional.PrintMatrix(a) additional.PrintVector(b) x = algo.zeidel_method(size, a, b, precision) print("Ответ") additional.PrintVector(x) print("Ответ, почлученный через numpy.linalg") additional.PrintVector(numpy.linalg.solve(a, b))
def RunThroughMethod(size, a, b): print("Лабораторная работа 1.2") print("Метод прогонки") print() print("Матрица") additional.PrintMatrix(a) additional.PrintVector(b) x = RunThrough(size, a, b) print("Ответ") additional.PrintVector(x) print("Ответ, почлученный при помощи numpy") additional.PrintVector(numpy.linalg.solve(a, b))
def QRMethod(size, a, b, precision): print("Лабораторная работа 1.5") print("Алгоритм QR – разложения матриц") print() print("Матрица") additional.PrintMatrix(a) x = algo.QR_method(size, a, precision) print("Ответ") pprint(x) x, u = numpy.linalg.eig(a) print("Ответ, почлученный через numpy.linalg") pprint(x)
def SimpleIterationMethod(size, a, b, precision): print("Метод простых итераций") print() print("Матрица") print("A") additional.PrintMatrix(a) print("B") additional.PrintVector(b) x = algo.SimpleIteration(size, a, b, precision) print("Ответ с точностю", precision) additional.PrintVector(x) print("Ответ, почлученный через numpy.linalg") additional.PrintVector(numpy.linalg.solve(a, b))
def RunThroughMethod(size, a, b): print("Лабораторная работа 1.2") print("Метод прогонки") print() print("Матрица") print("A") additional.PrintMatrix(a) print("B") additional.PrintVector(b) x = algo.tridiagonal(size, a, b) print("Ответ") additional.PrintVector(x) print("Ответ, почлученный через numpy.linalg") additional.PrintVector(numpy.linalg.solve(a, b))
def QRMain(size, aOriginal, precision): a = copy.deepcopy(aOriginal) step = True for i in range(101): q, r = QRDecompose(size, a) a = additional.MultiplyMatrix(r, q) print("Матрица на %i-ой итерации" % i) additional.PrintMatrix(q) rootType = GetRootTipe(size, a, precision) if additional.HaveNoRoot(rootType): if step: step = False else: return Solve(a, rootType) return None
i = 0 while True: print("Ответ на %i-ой итерации" % i) i += 1 curX = t2 + t1 @ x additional.PrintVector(curX) if cNorm * norm(curX - x, numpy.inf) <= precision: break x = curX x = curX return x def SeidelMethod(size, a, b, precision): x = Seidel(size, a, b, precision) print("Ответ с точностью", precision, "полученный методом Зейделя") additional.PrintVector(x) x = numpy.linalg.solve(a, b) print("Ответ, почлученный через numpy.linalg") additional.PrintVector(x) if __name__ == '__main__': size, a, b, precision = additional.GetStatement("3.txt") print("Лабораторная работа 1.3") print() additional.PrintMatrix(a) additional.PrintVector(b) SimpleIterationMethod(size, a, b, precision) SeidelMethod(size, a, b, precision)