# Индивидуальное контрольное задание по Модулю 3 Кузьменко Елена, А-02-23, Вариант 3 ## Задание M3_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. ## Решение ### 1) Модуль 1, содержащий две функции: ```py #M1 import random def func1(filename, TAU, K): with open(filename, 'r') as f: SPS1 = [] for line in f: SPS1.extend([float(x) for x in line.split()]) SPS2 = [] for i in range(TAU - 1): SPS2.append(0) for i in range(TAU - 1, len(SPS1)): SPS2.append(K * SPS1[i - TAU]) return SPS1,SPS2 def func2(SS1, SS2, TT): if not SS1 or not SS2: return 0 N = len(SS1) SR1 = sum(SS1) / N SR2 = sum(SS2) / N D = 0 for i in range(TT, N): if i - TT < len(SS2): D += (SS1[i] - SR1) * (SS2[i - TT] - SR2) return D ``` ### 2) Модуль 2, выполняющий некоторые операции ```py #M2 import os, random from M1 import func1, func2 while True: filename = input("Файл: ") if os.path.exists(filename): break else: print("Файл не существует") while True: TAU = int(input("TAU( >= 0): ")) if TAU >= 0: break else: print("TAU >= 0 !!!") K = random.uniform(2, 7) SPS1, SPS2 = func1(filename, TAU, K) print(f"\nK = {K}") print(f"\nSPS1: {SPS1}") print(f"\nSPS2: {SPS2}") SS3 = [] for TT in range(TAU + 6): # от 0 до TAU + 5 D = func2(SPS1, SPS2, TT) SS3.append(D) with open("Res11.bin", 'w') as f: for k in SS3: f.write(f"{k}\n") ``` ### 3) Модуль 0 - главная программа с отображением графика. ```py import pylab import M2 pylab.plot(M2.SS3) pylab.grid(True) pylab.title(f"График для TAU = {M2.TAU}") pylab.xlabel('TT') pylab.ylabel('D') pylab.show() ``` ### 4) Подготовленный файл: ```py import random with open('Module3.txt', 'w') as f: for i in range(50): x = random.gauss(0, 1) f.write(f"{x} ") if (i - 1) % 10 == 0: f.write("\n") ``` #### Содержание файла: 0.8064899853503322 -0.7999172485456333 0.663208239796933 0.31899452302272113 0.5035876315855168 -0.3406706136571314 1.6496754816989918 -0.1791351099272276 -0.10827443776686824 -2.658812292611897 -1.9909104100966244 -1.9688616617573687 -1.01566469054407 0.41960123511862973 0.6253115359133461 -0.019552871718773835 -1.604390760043458 . . . ### 5) Проверка программы. #### TAU = 0 ```py >>> import M0 Файл: Module3.txt TAU( >= 0): 0 K = 4.215502795233094 SPS1: [-0.5014613246795419, -0.18870490479490082, -0.13626806920529586, 0.2261511688847735, 0.7592506218693422, 1.6743041964480039, 1.8071253642769052, -1.108127833798599, -1.5496935067426554, -0.21247741721223165, 0.3407805659376554, 2.1362311913147174, 0.7156055184882569, 2.7037350954655435, 0.7813669773259138, -0.773139567601898, -0.18829541770516456, 0.39275646367826605, -1.455517924364738, -0.947923033482155, 0.5337189005586409, -1.0949801541626745, 1.017332251419648, 1.5376809668965432, -0.49332423350979526, -0.11677704415558252, -1.724756294166204, -0.7485252939132131, -0.6987963135966981, 0.29822166543747597, -0.39840197681828055, 0.061299498326972866, 0.6771851019911601, 0.08726317013839653, 0.022523513105582402, 1.169638996828948, 2.1049705414301845, 1.4668480157506334, -1.4681977682876417, -1.2913984251492696, 0.2621474192558423, -1.2335305314285219, 1.2856514835931687, 0.2828802116923358, -0.6011169106816681, -1.9948231688056435, -0.49119859892321777, -0.6617548797215154, 0.7341159094871207, 0.9673252497663668] SPS2: [4.077762294289671, -2.1139116158878988, -0.7954860536370993, -0.5744384266359415, 0.9533408845789942, 3.2006231187726772, 7.05803402019706, 7.6179420244459175, -4.671315980853588, -6.5327373094282395, -0.8956991461820709, 1.436561428271302, 9.005288558251314, 3.016637063471475, 11.397602852504816, 3.2938546770202235, -3.259172008331107, -0.7937598596657043, 1.655665970481596, -6.135739878671425, -3.9959721973098583, 2.2498935171736845, -4.615891900597519, 4.288566949540303, 6.482098414129105, -2.0796096853167656, -0.4922739560569166, -7.270714979153506, -3.155410468793823, -2.945777813265463, 1.2571542642507487, -1.679464646903852, 0.2584082065437405, 2.8546756903339436, 0.3678581376393117, 0.09494793245505186, 4.930616460546062, 8.873509201282262, 6.183501910578913, -6.189191796171545, -5.443893670976362, 1.105083178636145, -5.199951403242299, 5.419667422782577, 1.1924823231051709, -2.534010017240454, -8.409182644095928, -2.0706490667754043, -2.7896295452251882, 3.0946676684680425, 4.077762294289671] ``` Содержание файла Res11.bin: 70.51602901426054 -10.646810897306677 -49.126695096564546 -74.14206506030918 -43.0932652150505 22.753094848963002 ![](ris_mod1.PNG) #### TAU = 5 ```py >>> import M0 Файл: Module3.txt TAU( >= 0): 5 K = 2.2102531022548 SPS1: [1.013730859996645, 1.1622920644177825, 1.273646442808633, 0.21248586687379428, -1.1523479581850355, -1.360616118775768, 0.6524990997608467, 1.0573791084769346, 1.6392203056166974, 0.10772213728812277, 0.6181963059257979, 0.1945573917027522, 0.6888279764146823, -0.3326205381187334, -0.4522744459567869, -0.16826145088067945, 0.8325962782411906, 0.9102286183531867, 0.7101191479987133, -1.1359571874176229, -0.8402059962355454, 1.8084747627951145, 0.10629509815718377, -1.19463701949163, 0.22088254388926362, -0.12362028165790014, 2.1956771204119256, -2.5064708981455897, 0.5176854451628432, 0.9676355683721376, -0.44939615792932314, -0.02858757809420117, -0.6853145249358178, -0.6293072773615062, 0.002320599144324781, -1.846775887488841, -1.458084841773266, -0.32698341639668227, -1.1952981442450172, -0.21492653663929723, 1.191057170307932, -0.5726353697396429, -0.06521701240008655, -3.4296706580246337, -1.1402574039309377, 0.15466174828191878, -2.0255059170841925, -0.19957611416804957, 0.4307987726537539, 0.26646772839606614] SPS2: [0, 0, 0, 0, 0.5889611233381946, 2.240601778159011, 2.5689596411055398, 2.8150810013935716, 0.46964754644310425, -2.546980649455459, -3.0073059975020264, 1.4421881594648758, 2.3370754547705594, 3.6230917657683666, 0.2380931881225908, 1.366370302974952, 0.43002107857761035, 1.5224841717904478, -0.7351755762505914, -0.9996409972465591, -0.37190039379891543, 1.8402485069083923, 2.0118356274762315, 1.5695430498346916, -2.5107528975184383, -1.857067909712699, 3.9971869548174155, 0.2349390704563939, -2.6404501783998033, 0.4882063278651769, -0.27323211103598594, 4.853002166940344, -5.539935078337664, 1.1442158611633313, 2.1387195168466038, -0.9932792522046745, -0.0631857831686595, -1.5147185547596658, -1.3909283620597908, 0.005129111457833681, -4.0818421344915725, -3.22273654488006, -0.72271611047664, -2.641911431436955, -0.47504204436388664, 2.6325378056359305, -1.2656691024278701, -0.14414610397708105, -7.580440211611208, -2.5202574644073596] ``` Содержание файла Res11.bin: 23.45737243744806 10.172485818686237 4.857513581645703 50.38548475177254 13.61230247565784 12.849079271984197 16.20015952823841 -8.850984375289894 -1.6704003233050906 7.732952544085946 -6.588587800007123 ![](ris_mod2.PNG) #### TAU = 10 ```py >>> import M0 Файл: Module3.txt TAU( >= 0): 10 K = 2.5784299913700917 SPS1: [-0.5014613246795419, -0.18870490479490082, -0.13626806920529586, 0.2261511688847735, 0.7592506218693422, 1.6743041964480039, 1.8071253642769052, -1.108127833798599, -1.5496935067426554, -0.21247741721223165, 0.3407805659376554, 2.1362311913147174, 0.7156055184882569, 2.7037350954655435, 0.7813669773259138, -0.773139567601898, -0.18829541770516456, 0.39275646367826605, -1.455517924364738, -0.947923033482155, 0.5337189005586409, -1.0949801541626745, 1.017332251419648, 1.5376809668965432, -0.49332423350979526, -0.11677704415558252, -1.724756294166204, -0.7485252939132131, -0.6987963135966981, 0.29822166543747597, -0.39840197681828055, 0.061299498326972866, 0.6771851019911601, 0.08726317013839653, 0.022523513105582402, 1.169638996828948, 2.1049705414301845, 1.4668480157506334, -1.4681977682876417, -1.2913984251492696, 0.2621474192558423, -1.2335305314285219, 1.2856514835931687, 0.2828802116923358, -0.6011169106816681, -1.9948231688056435, -0.49119859892321777, -0.6617548797215154, 0.7341159094871207, 0.9673252497663668] SPS2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 2.494180435407165, -1.292982919065906, -0.48656238604181007, -0.35135767650503, 0.5831149564359026, 1.9576745743943047, 4.317076154798335, 4.6595462374171746, -2.85723004093828, -3.995776215216752, -0.5478581450288739, 0.8786788316897237, 5.508122572186127, 1.8451387308600662, 6.971391658868235, 2.0147000486033306, -1.993486248619638, -0.48550655224855527, 1.0126950452524992, -3.7529510691587853, -2.444153179040904, 1.3761568201614713, -2.8233296694480865, 2.6231199882484786, 3.964802722205008, -1.2720019991513185, -0.3011014329543034, -4.447163356682477, -1.9300200671249415, -1.8017973728365861, 0.7689436862403255, -1.0272516056493866, 0.1580564649422076, 1.7460743766830216, 0.2250019750268726, 0.05807530170245098, 3.015832268499787, 5.427519174974128, 3.7821649165931417, -3.785645159015492, -3.329780430212981] ``` Содержание файла Res11.bin: -16.11211884532821 0.3568522559384131 16.283760887924394 -5.701608122186913 -3.5559996081982232 -28.22012710792737 -27.61707232499191 5.833577836951397 9.948552363454644 18.74098231999325 13.736862756449407 -9.615379698407144 -14.780903931442744 13.695993840662723 13.229683934983361 -0.027848109072340366 ![](ris_mod3.PNG)