# Общее контрольное задание по теме 7 Анисенков Павел, А-01-23 ## Задание Общее контрольное задание. • Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. • Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. • Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X. ## Решение ```py def signal_zaderzka(vhod_spisok, zaderzka): """ Возвращает сигнал, где каждое значение - это значение входного сигнала zaderzka тактов назад (0 для первых zaderzka тактов) """ vihod = [] istoriya = [] # Отдельный список для истории for el in vhod_spisok: istoriya.append(el) # Добавляем текущее значение в историю if len(istoriya) <= zaderzka: # Еще не накопили достаточно истории vihod.append(0) else: # Берем значение, которое было zaderzka тактов назад el_zad = istoriya[-zaderzka - 1] vihod.append(el_zad) return vihod zaderzka = 3 vhod = [1, 2, 3, 4, 5] vihod = signal_zaderzka(vhod, zaderzka) print("входной сигнал: ", vhod, "выходной сигнал: ", vihod) входной сигнал: [1, 2, 3, 4, 5] выходной сигнал: [0, 0, 0, 1, 2] ``` ```py def histogram(data, num_bins): """Вычисляет и выводит гистограмму в виде таблицы, возвращает bins и counts.""" min_val, max_val = min(data), max(data) bin_width = (max_val - min_val) / num_bins bins = [min_val + i * bin_width for i in range(num_bins + 1)] #список границ интервалов min=0, max=10, num_bins=5 → bins=[0, 2, 4, 6, 8, 10] counts = [] for i in range(num_bins): count = 0 for x in data: if bins[i] <= x < bins[i+1] or (x == max_val and i == num_bins - 1): count += 1 counts.append(count) print("Гистограмма:") for i in range(num_bins): print(f"Интервал: [{bins[i]:.2f}, {bins[i+1]:.2f}], Элементов: {int(counts[i])}") return bins, counts import random data = [random.gauss(0, 1) for _ in range(1000)] num_bins = 10 bins, counts = histogram(data, num_bins) Гистограмма: Интервал: [-3.07, -2.46], Элементов: 11 Интервал: [-2.46, -1.85], Элементов: 33 Интервал: [-1.85, -1.24], Элементов: 64 Интервал: [-1.24, -0.64], Элементов: 160 Интервал: [-0.64, -0.03], Элементов: 207 Интервал: [-0.03, 0.58], Элементов: 246 Интервал: [0.58, 1.19], Элементов: 168 Интервал: [1.19, 1.80], Элементов: 75 Интервал: [1.80, 2.41], Элементов: 26 Интервал: [2.41, 3.02], Элементов: 10 ``` ```py >>>anon = lambda b1, b2, X: b1+b2*X >>>Y = anon(1,2,3) >>>Y 7 ```