# Общее контрольное задание. * Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. * Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. * Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X. ***1. Функция устройства задержки*** ```python def delay_signal(signal, delay_time): """ Реализация устройства задержки signal - входной сигнал (список значений) delay_time - время задержки (количество отсчетов) возвращает задержанный сигнал """ delayed = [0] * delay_time + signal return delayed[:len(signal)] print("Тест функции задержки:") test_signal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] delayed_signal = delay_signal(test_signal, 3) print(f"Исходный сигнал: {test_signal}") print(f"Задержанный на 3: {delayed_signal}") ``` Ответ программы: ```shell Тест функции задержки: Исходный сигнал: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Задержанный на 3: [0, 0, 0, 1, 2, 3, 4, 5, 6, 7] ``` ***2. Функция расчета гистограммы*** ```python def calculate_histogram(data, num_bins): """ Расчет гистограммы для выборки данных data - выборка случайной величины num_bins - число интервалов разбиения возвращает список с количеством элементов в каждом интервале """ if not data: return [0] * num_bins min_val = min(data) max_val = max(data) bin_width = (max_val - min_val) / num_bins histogram = [0] * num_bins for value in data: if value == max_val: bin_index = num_bins - 1 else: bin_index = int((value - min_val) / bin_width) if 0 <= bin_index < num_bins: histogram[bin_index] += 1 print("\nГистограмма:") print("Интервал\t\tКоличество") for i in range(num_bins): lower_bound = min_val + i * bin_width upper_bound = min_val + (i + 1) * bin_width print(f"{lower_bound:.2f} - {upper_bound:.2f}\t\t{histogram[i]}") return histogram num_bins = int(input("Введите количество интервалов разбиения: ")) data = [1.2, 2.5, 3.1, 4.8, 5.2, 6.7, 7.3, 8.9, 9.1, 10.5, 2.1, 3.8, 4.2, 5.9, 6.3, 7.8, 8.2, 9.7] result = calculate_histogram(data, num_bins) ``` Ответ программы: ```shell Введите количество интервалов разбиения: 5 Гистограмма: Интервал Количество 1.20 - 3.06 3 3.06 - 4.92 4 4.92 - 6.78 4 6.78 - 8.64 3 8.64 - 10.50 4 ``` ***3. Анонимная функция для линейной регрессии*** ```python linear_regression = lambda b1, b2, X: b1 + b2 * X b1 = float(input("Введите коэффициент b1: ")) b2 = float(input("Введите коэффициент b2: ")) X = float(input("Введите значение X: ")) result = linear_regression(b1, b2, X) print(f"Y = {b1} + {b2} * {X} = {result}") ``` Ответ программы: ```shell Введите коэффициент b1: 2 Введите коэффициент b2: 3 Введите значение X: 1 Y = 2.0 + 3.0 * 1.0 = 5.0 ```