diff --git a/TEMA7/Task.md b/TEMA7/Task.md new file mode 100644 index 0000000..363f8fa --- /dev/null +++ b/TEMA7/Task.md @@ -0,0 +1,113 @@ +# Общее контрольное задание по теме 7 +Зеленкина Ксения, А-02-23 + +## Задание + +- Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. +- Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. +- Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х +Y=b1+b2*X +и имеющую аргументы b1, b2 и X. + +#### Решение +##### 1 +_Код:_ +```py +def signal_delay(current_input, delay_time, output_history, input_history): + """ + Расчет выходного сигнала устройства задержки + current_input - текущее значение входного сигнала + delay_time - время задержки + output_history - история выходных значений + input_history - история входных значений + """ + if len(input_history) < delay_time: + return 0 + else: + return input_history[-delay_time] + + +delay = 3 +output_signal = [] +input_signal = [1, 2, 3, 4, 5, 6, 7] +input_history = [] + +for x in input_signal: + input_history.append(x) + y = signal_delay(x, delay, output_signal, input_history) + output_signal.append(y) + +print("Входной сигнал:", input_signal) +print("Выходной сигнал (задержка 3):", output_signal) +``` + +_Вывод:_ +```py +Входной сигнал: [1, 2, 3, 4, 5, 6, 7] +Выходной сигнал (задержка 3): [0, 0, 1, 2, 3, 4, 5] +``` + +##### 2 +_Код:_ +```py +def raschet_giostogrammy(viborka, kol_int): + minn = min(viborka) + maxx = max(viborka) + shirina_intervala = (minn - maxx) / kol_int + + w = [0] * kol_int + + for znachenie in viborka: + num_int = int((znachenie - maxx) / shirina_intervala) + if num_int == kol_int: + num_int = kol_int - 1 + w[num_int] += 1 + + print("Гистограмма:") + for i in range(kol_int): + start = maxx + i * shirina_intervala + end = maxx + (i + 1) * shirina_intervala + print(f"[{start:.2f}, {end:.2f}]: {w[i]}") + + return w + + +import random + +rand = [random.gauss(0, 1) for _ in range(100)] +kol_int = 5 +res = raschet_giostogrammy(rand, kol_int) +``` +_Вывод:_ +```py +Гистограмма: +[3.43, 2.27]: 2 +[2.27, 1.11]: 9 +[1.11, -0.05]: 37 +[-0.05, -1.20]: 37 +[-1.20, -2.36]: 15 +``` + +##### 3 + +_Код:_ +```py +anonim_func = lambda b1, b2, X: b1 + b2 * X +print(anonim_func (2, 3, 5)) +``` + +## Задание +Записывается в этот же файл список и закрывается файл. + +#### Решение +_Код:_ +```py +pickle.dump(str_tup, f) +pickle.dump(surname, f) +f.close() +``` + +_Вывод:_ +```py +17 +``` \ No newline at end of file diff --git a/TEMA7/task.py b/TEMA7/task.py new file mode 100644 index 0000000..4361eb1 --- /dev/null +++ b/TEMA7/task.py @@ -0,0 +1,60 @@ +def signal_delay(current_input, delay_time, output_history, input_history): + """ + Расчет выходного сигнала устройства задержки + current_input - текущее значение входного сигнала + delay_time - время задержки + output_history - история выходных значений + input_history - история входных значений + """ + if len(input_history) < delay_time: + return 0 + else: + return input_history[-delay_time] + +# Проверка работы функции +delay = 3 +output_signal = [] +input_signal = [1, 2, 3, 4, 5, 6, 7] +input_history = [] + +for x in input_signal: + input_history.append(x) + y = signal_delay(x, delay, output_signal, input_history) + output_signal.append(y) + +print("Входной сигнал:", input_signal) +print("Выходной сигнал (задержка 3):", output_signal) + + +# 2 +def raschet_giostogrammy(viborka, kol_int): + minn = min(viborka) + maxx = max(viborka) + shirina_intervala = (minn - maxx) / kol_int + + w = [0] * kol_int + + for znachenie in viborka: + num_int = int((znachenie - maxx) / shirina_intervala) + if num_int == kol_int: + num_int = kol_int - 1 + w[num_int] += 1 + + print("Гистограмма:") + for i in range(kol_int): + start = maxx + i * shirina_intervala + end = maxx + (i + 1) * shirina_intervala + print(f"[{start:.2f}, {end:.2f}]: {w[i]}") + + return w + + +import random + +rand = [random.gauss(0, 1) for _ in range(100)] +kol_int = 5 +res = raschet_giostogrammy(rand, kol_int) + +# 3 +anonim_func = lambda b1, b2, X: b1 + b2 * X +print(anonim_func (2, 3, 5)) \ No newline at end of file