форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
85 строки
3.9 KiB
Markdown
85 строки
3.9 KiB
Markdown
# Общее контрольное задание по теме 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
|
|
|
|
|
|
|
|
|