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)
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
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
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
def ca_side(self): return Vector.len(self.c_coord.x, self.c_coord.y, self.a_coord.x, self.a_coord.y)
def bc_side(self): return Vector.len(self.b_coord.x, self.b_coord.y, self.c_coord.x, self.c_coord.y)
def ab_side(self): return Vector.len(self.a_coord.x, self.a_coord.y, self.b_coord.x, self.b_coord.y)
def da_side(self): return Vector.len(self.d_coord.x, self.d_coord.y, self.a_coord.x, self.a_coord.y)
def cd_side(self): return Vector.len(self.c_coord.x, self.c_coord.y, self.d_coord.x, self.d_coord.y)