import matplotlib.pyplot as plt
import numpy as np

def straightLine():
    x = [2.70, 3.13, 3.27, 3.36, 3.39]
    y = [-1.85, -1.08, -0.37, -0.056, -0.2]

    plt.scatter(x, y, label='Экспериментальные данные')

    # Рассчитываем коэффициенты для аппроксимации
    coefficients = np.polyfit(x, y, 1)
    slope = coefficients[0]
    intercept = coefficients[1]

    # Линия аппроксимации, проходящая через (0,0)
    x_extended = np.linspace(0, max(x), len(x))

    # Линия аппроксимации, проходящая через (0,0)
    # zero_intercept_line = [slope * xi for xi in x_extended]
    # plt.plot(x_extended, zero_intercept_line, color='g', linestyle='-', label='Аппроксимация через (0,0)')

    # Начинаем исходную линию аппроксимации с точки, где y = 0
    x_begin = -intercept / slope if slope != 0 else 0
    x_extended = [x_begin] + x
    best_fit_line = [(slope * xi) + intercept for xi in x_extended]
    plt.plot(x_extended, best_fit_line, color='r', linestyle='--', label='Аппроксимация')

    plt.xlabel('$lg {T}$')
    plt.ylabel('$lg {U}_{therm}$')
    plt.legend()
    plt.grid(True, linestyle='--', linewidth=0.5, color='gray')
    plt.show()

straightLine()



# def curves():
#     x = list(range(100, 1501, 100))
#     y1 = [2.29, 2.60, 2.60, 2.72, 2.73, 2.74, 2.75, 2.75, 2.76, 2.76, 2.75, 2.75, 2.75, 2.75, 2.75]
#     y2 = [3.80, 2.15, 1.47, 1.10, 0.88, 0.73, 0.61, 0.52, 0.46, 0.41, 0.36, 0.33, 0.31, 0.28, 0.26]

#     # Построение первой кривой
#     plt.plot(x, y1, label='$U_R$', marker='o', linestyle='-')

#     # Построение второй кривой
#     plt.plot(x, y2, label='$U_C$', marker='x', linestyle='--')

#     # Добавление подписей и легенды
#     plt.xlabel('Частота $\\nu$,гц')
#     plt.ylabel('Направление, $B$')
#     plt.legend()

#     # Отображение графика
#     plt.show()

# curves()

# l1 = list(range(370, 791, 20))
# phi1 = [1,1,0.8,0.4,0.06,0.04,0.07,0.07,0.04,0.03,0.03,0.05,0.52,0.82,0.88,0.88,0.9,0.9,0.87,0.9,1,1]

# l2 = l1
# phi2 = [1,0.8,1,1,0.87,0.88,0.87,0.86,0.84,0.78,0.73,0.67,0.6,0.55,0.5,0.48,0.45,0.45,0.53,0.55,0.75,0.83]

# # Настройка размера фигуры
# plt.figure(figsize=(12, 6))  # Ширина = 12 дюймов, высота = 6 дюймов
# plt.scatter(l1, phi1)
# plt.scatter(l2, phi2)

# # Построение графиков
# plt.plot(l1, phi1, label=r"$\tau_1$")
# plt.plot(l2, phi2, label=r"$\tau_2$")

# # Настройка оформления
# plt.xlabel("Длина волны" + r" $\lambda$, нм")
# plt.ylabel("Коэффициент пропускания")
# plt.legend()  # Добавление легенды

# # Отображение графика
# plt.grid(True)
# plt.show()



# # Вычисление значений E=Δφ/Δl для обеих линий
# E1 = [0.2]  # Начальное значение для первой линии
# E2 = [0.36, 0.4, 0.37, 0.4,0.2,0,0,0.2,0.37,0.42,0.41,0.43]  # Начальное значение для второй линии

# for i in range(1, len(l1)):
#     delta_phi1 = phi1[i] - phi1[i - 1]
#     delta_l1 = l1[i] - l1[i - 1]
#     E1.append(delta_phi1 / delta_l1)

# # Построение графиков E=Е(l)
# plt.figure(figsize=(12, 6))  # Размер фигуры
# plt.plot(l1, E1, label="Силовая линия 1")
# plt.plot(l2, E2, label="Силовая линия 2")
# plt.xlabel("Расстояние (мм)")
# plt.ylabel("Напряженность поля (В/м)")
# plt.title("Графики напряженности поля E=Е(l) на основе данных φ=φ(l)")
# plt.grid(True)
# plt.legend()
# plt.show()