# Общее контрольное задание по теме 7 Голощапов Дмитрий, А-01-23 # Задание: 1. Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. 2. Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. 3. Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X. # Решение ## 1. >>> def delay_signal (signal, T): ... """"Расчёт выхода y(t) для устройства задержки""" ... output=[] ... for i in range(len(signal)): if i < T: output.append(0) else: ... output.append(signal[i-T]) ... return output ... ... >>> x=[1,0.5,3.6,4.5,1,2,0.5] # Входной сигнал >>> y= delay_signal (x, 2) >>> y [0, 0, 1, 0.5, 3.6, 4.5, 1] ## 2. >>> import random >>> import matplotlib.pyplot as plt >>> def histogram (sample, number): ... min_1=min(sample) ... max_1=max(sample) ... bins=(max_1-min_1)/number # Ширина одного интервала ... rows = [0]*number # Создание списка для подсчёта элементов в каждом интервале ... intervals = [] # Список для хранения границ интервалов ... for i in range(number): ... lower = min_1 + i * bins ... upper = min_1 + (i+1) * bins ... intervals.append((lower, upper)) ... ... for x in sample: ... i = int((x-min_1)/bins) # Вычисление номера интервала для текущего элемента ... if i == number: ... i=number-1 ... rows [i] +=1 ... print("Границы интервала | Число элементов") ... for i in range(number): ... lower, upper = intervals[i] ... print(lower, "-", upper, " |", rows[i]) ... plt.hist(sample, number) ... plt.xlabel('Значения выборки') ... plt.ylabel('Число элементов') ... plt.title('Гистограмма выборки') ... plt.show() ... return rows ... >>> data = [random.gauss(1, 20) for _ in range(10)] >>> histogram (data, 3) Границы интервала | Число элементов -23.534334630492655 - -11.561019750784087 | 3 -11.561019750784087 - 0.4122951289244803 | 2 0.4122951289244803 - 12.385610008633048 | 5 [3, 2, 5] ![График](Figure_2.png) ## 3. >>> linear_regression = lambda b1, b2, x: b1+b2 * x >>> result = linear_regression (2,3,5) >>> result 17