# Защита модуля 3 Гордиевских Данил, А-03-23 ## Вариант 3 задание 1) Создайте модуль М1, содержащий две функции: - функция 1: аргументы - имя текстового файла, содержащего некоторое число отсчетов сигнала, целочисленный параметр TAU и числовой параметр К; в функции считывается сигнал из файла в список SPS1 и формируется второй список SPS2, элементы которого определяются по правилу: первые (TAU-1) элементов равны 0, а последующие определяются по формуле: SPS2[i]=K*SPS1[i-TAU]; оба списка возвращаются в качестве результатов работы функции; - функция 2: аргументы - два числовых списка SS1 и SS2, а также целочисленный параметр ТТ; в функции рассчитывается и возвращается значение D= (SS1[TT]-SR1)*(SS2[0] - SR2)+ (SS1[TT+1]-SR1)*(SS2[1] - SR2)+:+ (SS1[i]-SR1)*(SS2[i-TT] - SR2)+:+ (SS1[N]-SR1)*(SS2[N-TT] - SR2), где N - длина списка SS1, SR1, SR2 - средние значения соответствующих списков. 2) Создайте еще один модуль М2, в котором должны выполняться операции: - запрашивается и вводится имя текстового файла с данными; проверяется наличие файла и при отсутствии - повторение запроса; - запрашивается значение параметра TAU и проверяется TAU >=0; - вызывается функция 1 с указанными именем файла и параметром TAU, и случайным значением К из диапазона значений от 2 до 7; отображаются рассчитанные списки; - вызывается функция 2 в цикле со значениями TT от 0 до TAU+5; результаты записываются в список SS3; - список SS3 записывается в текстовый файл с именем Res11.bin. 3) Создайте модуль М0 - главную программу, которая вызывает М2 и отображает в виде графика список SPS3. 4) Подготовьте файл с исходными данными - 50 отсчетов случайного нормально распределенного с некоторыми параметрами сигнала. Проведите по программе расчеты со значениями TAU, равными 0, 5 и 10. ## Выполнение ### Текст модуля M0 ```py import pylab import M2 pylab.plot(M2.SS3) pylab.show() ``` ### Текст модуля M1 ```py def fun(name, TAU, K): sps2 = [] f = open(name, "r") sps1 = f.readlines() for i in range(len(sps1)): sps1[i] = float(sps1[i].replace("\n", "")) if i < TAU: sps2.append(0) else: sps2.append(K * sps1[i-TAU]) return([sps1,sps2]) def fun2(SS1, SS2, TT): D = 0 N = len(SS1) SR1 = sum(SS1)/len(SS1) SR2 = sum(SS2)/len(SS2) for i in range(TT, len(SS1)): D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2) for i in range(len(SS1)): D+=(SS1[i]-SR1)*(SS2[i-TT]-SR2) for i in range(len(SS1)): D+=(SS1[N-1]-SR1)*(SS2[N-1-TT]-SR2) return(D) ``` ### Текст модуля M2 ```py import os import pickle import random import M1 while True: name = input("Введите название текстового файла: ") if os.path.exists(name): print("Файл сущетсвует") break else: print("Файл НЕ сущетсвует, повторите PopITку") while True: TAU = int(input("Введите значение TAU >= 0: ")) if TAU >= 0: break else: print("Сказали же, TAU больше нуля! Мне казалось, что все это поняли") SS3 = [] k = random.randint(2,7) res = M1.fun(name, TAU, k) for TT in range(TAU+5): SS3.append(M1.fun2(res[0], res[1], TT)) pickle.dump(SS3, open("Res11.bin", "wb")) ``` ### Вывод ![График](Figure_2.png) ![График](Figure_3.png) ![График](Figure_4.png)