# Общее контрольное задание по теме 7 Коваленко Дмитрий, А-01-23 ## Задание • Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.\ • Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: вы-борка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.\ • Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X. ## Решение ```py import random def delay_signal(signal, T): delayed_signal = signal.copy() if T < len(signal): delayed_signal = [0] * T + signal[:-T] else: delayed_signal = [0] * len(signal) return delayed_signal y = [random.gauss(3, 1.5) for _ in range(10)] >>> y [3.855862654001017, 0.5055896775676754, 0.4154450162502199, 6.550103308532915, 2.5329276972223584, 5.199934653811578, 2.7808708229733328, 3.009437226477874, 2.6526954887061165, 2.2993461230571697] yd = delay_signal(y, 3) >>> yd [0, 0, 0, 3.855862654001017, 0.5055896775676754, 0.4154450162502199, 6.550103308532915, 2.5329276972223584, 5.199934653811578, 2.7808708229733328] import matplotlib.pyplot as plt import numpy as np def calculate_histogram(data, num_bins): min_val, max_val = min(data), max(data) bins = np.linspace(min_val, max_val, num_bins + 1) counts = [0] * num_bins for value in data: for i in range(num_bins): if bins[i] <= value < bins[i + 1]: counts[i] += 1 break if value == max_val: counts[-1] += 1 return counts, bins def plot_histogram(data, bins, counts): plt.hist(data, bins=bins, alpha=0.7, edgecolor='black') plt.xlabel('Значения выборки') plt.ylabel('Число элементов') plt.title('Гистограмма выборки') plt.show() def histo(data, num_bins): counts, bins = calculate_histogram(data, num_bins) plot_histogram(data, bins, counts) return counts sample = [random.gauss(random.random(), random.random()) for _ in range(random.randint(1,100))] intervals = int(input("Введите количество интервалов разбиения: ")) output = histo(sample, intervals) Введите количество интервалов разбиения: 5 Список с числами элементов в интервалах: [3, 10, 12, 6, 1] linreg = lambda b1, b2, x: b1 + b2 * x >>> b1 = float(input("Введите коэффициент b1 линейной регрессии: ")) Введите коэффициент b1 линейной регрессии: 4 >>> b2 = float(input("Введите коэффициент b2 линейной регрессии: ")) Введите коэффициент b2 линейной регрессии: 6 >>> x_val = float(input("Введите значение x: ")) Введите значение x: 56 >>> print(linreg(b1, b2, x_val)) 340.0 ``` Созданная гистограмма: ![hist](Figure_okz.png)