Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3.8 KiB

Общее контрольное задание по теме 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]

График

3.

>>> linear_regression = lambda b1, b2, x: b1+b2 * x
>>> result = linear_regression (2,3,5)
>>> result
17