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

3.3 KiB

Общее контрольное задание по теме 7

Махнов Георгий, А-01-23

Задание

  • Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т.
  • Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращае-мый результат функции: список с числами элементов выборки в интервалах разбиения.
  • Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х Y=b1+b2*X и имеющую аргументы b1, b2 и X.

Решение

from matplotlib.pyplot import *
from random import *


def delaySignal (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

print(delaySignal([random() for _ in range(randint(1,10))], randint(1,5)))
>>> [0, 0, 0, 0.6929623452667151, 0.8432441392717085, 0.7135246417254248]


def histogram(sample, number):
    bins = (max(sample) - min(sample))/number
    intervals = []
    for i in range(number):
        intervals.append((min(sample)+i*bins, min(sample)+(i+1)*bins))
    objectInIntervals = [0]*number
    for objects in sample:
        objectInterval = int((objects - min(sample))/bins)
        if objectInterval == number:
            objectInterval -=1
        objectInIntervals[objectInterval] +=1
    print("Границы интервалов       |          Число элементов")
    for i in range(number):
        lowerInterval, upperInterval = intervals[i]
        print(lowerInterval, "-", upperInterval, "  |", objectInIntervals[i])
    hist(sample, number)
    xlabel("Значения элементов выборки")
    ylabel("Количество элементов в интервале")
    show()
    return objectInIntervals

data = [gauss(1, 20) for _ in range(10)]
histogram(data, 3)
>>> Границы интервала | Число элементов
-25.04980446710405 - -5.836770357068186   | 3
-5.836770357068186 - 13.376263752967677   | 4
13.376263752967677 - 32.58929786300354   | 3

alt text

lineal_regression = lambda b1, b2, X: b1+b2*X
print(lineal_regression(3,2,5))
>>> 13