Загрузка данных


import math

def calculate_formulas():
    # Заданные по условию значения
    x = 5
    y = 6
    z = 7
    
    # 1. Вычисление переменной b
    # Формула: b = ln(x^2 + e^(-3y^2) / sin^2(y))
    b = math.log(x**2 + math.exp(-3 * y**2) / (math.sin(y)**2))
    print(f"b = {b}")

    # 2. Вычисление переменной a
    # Формула: a = tg((x+y)^2 - sqrt(cos^2(z) / tg(z^2)))
    try:
        under_root = (math.cos(z)**2) / math.tan(z**2)
        a = math.tan((x + y)**2 - math.sqrt(under_root))
        print(f"a = {a}")
    except ValueError:
        print("a = [Ошибка вычисления] Подкоренное выражение отрицательно, так как tg(7^2) < 0.")
        
        # Альтернативный расчет для tg^2(z) на случай опечатки в методичке
        under_root_alt = (math.cos(z)**2) / (math.tan(z)**2)
        a_alt = math.tan((x + y)**2 - math.sqrt(under_root_alt))
        print(f"a (альтернативный расчет с tg^2(z) вместо tg(z^2)) = {a_alt}")

def process_triangle(p1, p2, p3):
    """
    Проверяет, являются ли три точки вершинами равностороннего треугольника.
    Вычисляет площадь и высоту, если условие выполняется.
    """
    def distance(p_a, p_b):
        return math.hypot(p_a[0] - p_b[0], p_a[1] - p_b[1])

    d1 = distance(p1, p2)
    d2 = distance(p2, p3)
    d3 = distance(p1, p3)

    # Проверка равенства сторон (с допуском на погрешность вычислений с плавающей точкой)
    if math.isclose(d1, d2, rel_tol=1e-5) and math.isclose(d2, d3, rel_tol=1e-5):
        side = d1
        area = (math.sqrt(3) / 4) * (side ** 2)
        height = (math.sqrt(3) / 2) * side
        print("Точки образуют равносторонний треугольник.")
        print(f"Площадь (S): {area:.4f}")
        print(f"Длина высоты (h): {height:.4f}")
    else:
        print("Точки НЕ могут быть вершинами равностороннего треугольника.")
        print(f"Длины сторон: {d1:.4f}, {d2:.4f}, {d3:.4f}")

if __name__ == "__main__":
    print("--- Часть 1: Вычисление формул ---")
    calculate_formulas()

    print("\n--- Часть 2: Геометрическая задача ---")
    # Тест 1: Координаты, образующие равносторонний треугольник
    point1 = (0, 0)
    point2 = (2, 0)
    point3 = (1, math.sqrt(3))
    print(f"Проверка координат: {point1}, {point2}, {point3}")
    process_triangle(point1, point2, point3)
    
    print("-" * 30)
    
    # Тест 2: Произвольные координаты
    point4 = (0, 0)
    point5 = (0, 3)
    point6 = (4, 0)
    print(f"Проверка координат: {point4}, {point5}, {point6}")
    process_triangle(point4, point5, point6)