Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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))
Пример #4
0
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))
Пример #5
0
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))
Пример #6
0
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))
Пример #7
0
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)
Пример #8
0
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))
Пример #9
0
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))
Пример #10
0
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
Пример #11
0
    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)