форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
76 строки
4.8 KiB
Markdown
76 строки
4.8 KiB
Markdown
# Общее контрольное задание по теме 7
|
|
|
|
## 1. Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с за-держкой на заданное время Т.
|
|
|
|
## Решение
|
|
|
|
```py
|
|
def delays (signal, T):
|
|
for i in range(len(signal)):
|
|
signal[i] += T
|
|
return signal
|
|
|
|
# Входной сигнал:
|
|
import random
|
|
y = [random.gauss(3, 1.5) for _ in range(40)]
|
|
y
|
|
[3.800594048216618, 4.603898159275703, 6.18380558240054, 5.148045413794919, 3.7524482675845903, 1.1681059958583488, 5.921368034666685, 3.3117135811885006, 3.552762332790598, 3.315132665164249, 2.717047573572687, 4.723285324100683, 3.8225850617919885, 5.204965426860147, 7.287734242157516, 2.3788105341962567, 3.4585259362342056, 2.04523714628145, 2.490194024500499, 4.451169656660628, 3.0942298783762725, 0.2800297301804986, 2.2058662662867947, 1.536293936886591, 4.597490040465702, 6.33255117580885, 1.7456170571968772, 1.7402638958654961, 2.854473953945524, 3.557302623785625, 3.1460896928508864, 1.9023066563505908, 3.365721749509861, 1.3881782760501395, 3.5659228149591, 2.0929630500606278, 3.4699330659023837, 1.103202439037665, -0.8824843994297784, 4.2346895774686475]
|
|
|
|
yd = delays(y, 4)
|
|
yd
|
|
[7.8005940482166185, 8.603898159275703, 10.18380558240054, 9.148045413794918, 7.75244826758459, 5.168105995858349, 9.921368034666685, 7.311713581188501, 7.552762332790598, 7.315132665164249, 6.717047573572687, 8.723285324100683, 7.8225850617919885, 9.204965426860147, 11.287734242157516, 6.378810534196257, 7.458525936234206, 6.045237146281449, 6.490194024500499, 8.451169656660628, 7.0942298783762725, 4.280029730180498, 6.205866266286795, 5.536293936886591, 8.597490040465702, 10.332551175808849, 5.745617057196878, 5.740263895865496, 6.854473953945524, 7.557302623785625, 7.146089692850886, 5.902306656350591, 7.365721749509861, 5.388178276050139, 7.5659228149591, 6.092963050060628, 7.469933065902383, 5.1032024390376645, 3.1175156005702216, 8.234689577468647]
|
|
```
|
|
|
|
## 2. Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.
|
|
|
|
## Решение
|
|
|
|
```py
|
|
import numpy as np
|
|
import random
|
|
import matplotlib.pyplot as plt
|
|
|
|
def histo(data, num):
|
|
minval, maxval = min(data), max(data)
|
|
parts = np.linspace(minval, maxval, num + 1)
|
|
rows = [0] * num
|
|
for now in data:
|
|
for i in range(num):
|
|
if parts[i] <= now < parts[i + 1]:
|
|
rows[i] += 1
|
|
break
|
|
if now == maxval:
|
|
rows[-1] += 1
|
|
|
|
plt.hist(data, bins=parts)
|
|
plt.xlabel('Значения выборки')
|
|
plt.ylabel('Число элементов')
|
|
plt.title('Гистограмма выборки')
|
|
plt.show()
|
|
|
|
return rows
|
|
s
|
|
sample = [random.gauss(random.random(), random.random()) for _ in range(random.randint(10,200))]
|
|
intervals = int(input("Введите количество интервалов разбиения: "))
|
|
output = histo(sample, intervals)
|
|
|
|
Введите количество интервалов разбиения: 12
|
|
```
|
|
|
|

|
|
|
|
## 3. Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+X*b2* и имеющую аргументы b1, b2 и X.
|
|
|
|
## Решение
|
|
|
|
```py
|
|
linreg = lambda b1, b2, x: b1 + b2 * x
|
|
b1 = float(input("Введите коэффициент b1 линейной регрессии: "))
|
|
Введите коэффициент b1 линейной регрессии: 2
|
|
b2 = float(input("Введите коэффициент b2 линейной регрессии: "))
|
|
Введите коэффициент b2 линейной регрессии: 3
|
|
x_val = float(input("Введите значение x: "))
|
|
Введите значение x: 5
|
|
print(linreg(b1, b2, x_val))
|
|
17.0
|
|
``` |