import numpy as np import matplotlib.pyplot as plt def exponential_smoothing(series, alpha): """ Функция для экспоненциального сглаживания временного ряда. :param series: Вектор временного ряда. :param alpha: Коэффициент сглаживания (0 <= alpha <= 1). :return: Сглаженный временной ряд. """ # Создаем вектор той же длины, что и исходный временной ряд, заполненный нулями result = np.zeros_like(series) # Первый элемент сглаженного ряда равен первому элементу исходного ряда result[0] = series[0] for t in range(1, len(series)): # Каждый следующий элемент сглаженного ряда рассчитывается как взвешенная сумма текущего элемента исходного ряда # и предыдущего элемента сглаженного ряда result[t] = alpha * series[t] + (1 - alpha) * result[t - 1] return result if __name__ == "__main__": # Пример использования функции series = [10, 8, 6, 4, 5, 6, 8, 10] # Исходный временной ряд alpha = 0.5 # Коэффициент сглаживания smoothed_series = exponential_smoothing(series, alpha) print(smoothed_series) plt.plot(series) plt.plot(smoothed_series) plt.show()