Пример #1
0
def read(file):
    matrix = Matrix()
    b_matrix = Vector()

    def f(input_f, comment):
        global n
        if comment:
            print("Введите n: ")
        n = int(input_f())
        b_matrix.nums = [0 for _ in range(n)]
        if comment:
            print(
                "Введите матрицу A и вектор b (вектор b должен быть представлен как n+1 столбец матрицы A:"
            )
        for i in range(n):
            nums = input_f().strip().split(' ')
            b_matrix[i] = float(nums[-1])
            matrix.add_line(Vector(list(map(float, nums[:-1]))))
        return matrix, b_matrix

    if file[0] is True:
        with open(file[1], 'r') as file:
            return f(file.readline, False)
    else:
        return f(input, True)
Пример #2
0
 def get_discrepancy(self, x_vector: Vector, b_vector: Vector) -> Vector:
     n = len(self.lines)
     r_vector = Vector([0 for _ in range(n)])
     for i in range(n):
         s = 0
         for j in range(n):
             s += x_vector[j] * self[i][j]
         r_vector[i] = s - b_vector[i]
     return r_vector
Пример #3
0
 def solve(self, b_vector: Vector):
     n = len(self.lines)
     x_vector = Vector([0 for _ in range(n)])
     for i in range(n - 1, -1, -1):
         s = 0
         for j in range(i + 1, n):
             s += self[i][j] * x_vector[j]
         x_vector[i] = (b_vector[i] - s) / self[i][i]
     return x_vector
Пример #4
0
 def f(input_f, comment):
     global n
     if comment:
         print("Введите n: ")
     n = int(input_f())
     b_matrix.nums = [0 for _ in range(n)]
     if comment:
         print(
             "Введите матрицу A и вектор b (вектор b должен быть представлен как n+1 столбец матрицы A:"
         )
     for i in range(n):
         nums = input_f().strip().split(' ')
         b_matrix[i] = float(nums[-1])
         matrix.add_line(Vector(list(map(float, nums[:-1]))))
     return matrix, b_matrix
Пример #5
0
 def ca_side(self):
     return Vector.len(self.c_coord.x, self.c_coord.y, self.a_coord.x,
                       self.a_coord.y)
Пример #6
0
 def bc_side(self):
     return Vector.len(self.b_coord.x, self.b_coord.y, self.c_coord.x,
                       self.c_coord.y)
Пример #7
0
 def ab_side(self):
     return Vector.len(self.a_coord.x, self.a_coord.y, self.b_coord.x,
                       self.b_coord.y)
Пример #8
0
 def da_side(self):
     return Vector.len(self.d_coord.x, self.d_coord.y, self.a_coord.x,
                       self.a_coord.y)
Пример #9
0
 def cd_side(self):
     return Vector.len(self.c_coord.x, self.c_coord.y, self.d_coord.x,
                       self.d_coord.y)