форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
72 строки
3.4 KiB
Markdown
72 строки
3.4 KiB
Markdown
# Общее контрольное задание по теме 7
|
|
|
|
Коломейцев Дмитрий, А-02-23
|
|
|
|
## Задание
|
|
|
|
* Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
|
|
|
|
* Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
|
|
|
* Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х
|
|
Y=b1+b2*X
|
|
и имеющую аргументы b1, b2 и X.
|
|
|
|
|
|
## Решение
|
|
|
|
```py
|
|
>>> #1
|
|
>>>
|
|
>>> def create_delay(x, t):
|
|
... """Функция для реализации задержки сигнала
|
|
... x - исходный сигнал
|
|
... t - заданная задержка"""
|
|
... return [0] * t + x
|
|
...
|
|
>>> x = [1, 2, 3, 4, 5]
|
|
>>> y = create_delay(x, 5)
|
|
>>> print(y)
|
|
[0, 0, 0, 0, 0, 1, 2, 3, 4, 5]
|
|
>>>
|
|
>>> #2
|
|
>>>
|
|
>>> def create_histogram(x, bins):
|
|
... minimum = min(x)
|
|
... maximum = max(x)
|
|
... step = (maximum - minimum) / bins
|
|
... counts = []
|
|
|
|
... for i in range(bins):
|
|
... left = minimum + i * step
|
|
... right = minimum + (i + 1) * step
|
|
... amount = len([g for g in x if left <= g < right]) # количество элементов в диапазоне от левой до правой границы
|
|
... if i == bins - 1:
|
|
... amount += x.count(right)
|
|
... counts.append(amount)
|
|
... print(f"""Интервал: {i + 1}
|
|
... Нижняя граница: {left}
|
|
... Верхняя граница: {right}
|
|
... Число элементов: {amount}
|
|
... """)
|
|
... return counts
|
|
...
|
|
>>> import random
|
|
>>> data = [random.gauss(10, 3) for _ in range(50)]
|
|
result = simple_histogram(data, 5)
|
|
...
|
|
... Интервал 1: 2.916449318775017 - 5.538945966727603, элементов: 3
|
|
... Интервал 2: 5.538945966727603 - 8.161442614680189, элементов: 7
|
|
... Интервал 3: 8.161442614680189 - 10.783939262632774, элементов: 20
|
|
... Интервал 4: 10.783939262632774 - 13.40643591058536, элементов: 13
|
|
... Интервал 5: 13.40643591058536 - 16.028932558537946, элементов: 7
|
|
|
|
>>> print(result)
|
|
... [3, 7, 20, 13, 7]
|
|
|
|
>>> #3
|
|
>>>
|
|
>>> regression = lambda x, b1, b2: b1 + b2 * x
|
|
>>> regression(3, 7, 1)
|
|
10
|
|
``` |