diff --git a/TEMA9/test.md b/TEMA9/test.md index e130b8d..ce2eaaa 100644 --- a/TEMA9/test.md +++ b/TEMA9/test.md @@ -1,119 +1,119 @@ -# Тест по модулю 3 -Ходюк Максим Романович, А-01-23 - -## Задание: - -1) Создайте модуль М1, содержащий две функции: - -- функция 1: аргументы - список с отсчетами выходного сигнала SPS некоторой системы и заданное входное воздействие VH; в функции список SPS дополняется по формуле: - -SPS[i]=(VH-SPS[i-1]*8)/9 - -Расчеты продолжаются до тех пор, пока не окажется |SPS[i] - SPS[i-1]|<0.05; удлиненный список SPS возвращается в вызывающую программу; - -- функция 2: аргумент - список с отсчетами сигнала; в функции должно быть выполнено отображение сигнала на графике с разметкой его осей. - -2) Создайте еще один модуль М2, в котором должны выполняться операции: - -- создается начальный список с одним нулевым элементом; - -- запрашивается требуемое значение ZN на выходе системы; - -- производится обращение к функции 1 со списком и значением ZN; отображается результирующий список; - -- отображается полученный сигнал путем обращения к функции 2; - -- запрос и обращения к функциям повторяются с изменением значения ZN до тех пор, пока не будет введено значение ZN=0. - -3) Создайте модуль М0 - главную программу, которая вызывает М2 и после завершения ее работы запрашивает имя бинарного файла и записывает в него полученный сигнал. - -4) Проверьте работу программы, задавая значения ZN, равные 6, 10, -3 и 0. - -### Выполнение - -Содержимое модуля [M1](M1.py): -``` -import matplotlib.pyplot as plt -def func1(sps,vh): - i = len(sps) - 1 - while True: - value = (vh - sps[i] * 8) / 9 - sps.append(value) - i+=1 - if abs(sps[i]-sps[i-1])< 0.05: - break - return sps - -def func2(sps): - """ - Функция 2: отображает график сигнала - """ - plt.figure(figsize=(10, 6)) - plt.plot(sps, linewidth=2, markersize=5) - plt.xlabel('Номер отсчета (i)', fontsize=12) - plt.ylabel('Значение SPS[i]', fontsize=12) - plt.title('График выходного сигнала системы', fontsize=14) - plt.grid(True, alpha=0.3) - plt.show() -``` - -Содержимое модуля [M2](M2.py): -``` -import M1 -def M1_execution(): - - sps = [0] - while True: - - zn = float(input('Введите требуемое значение на выходе системы: ')) - if zn==0: - print('Было введено zn = 0. Завершение работы модуля M2') - break - - result = M1.func1(sps.copy(), zn) - - print(f'Итоговый список: \n{result}') - - M1.func2(result) - - return result -``` - -Содержимое модуля [M0](M0.py): -``` -import M2 -import pickle -result_signal = M2.M1_execution() - -name = input("Введите имя бинарного файла, в который хотите записать полученный сигнал: ") -with open(name,'wb') as file: - pickle.dump(result_signal,file) -``` - -Запуск программы: -``` -====================== RESTART: D:/POAS/Hodyuk/Tema9/M0.py ===================== -Введите требуемое значение на выходе системы: 6 -Итоговый список: -[0, 0.6666666666666666, 0.07407407407407411, 0.6008230452674898, 0.13260173754000912, 0.5487984555199918, 0.17884581731556282, 0.5076926068306108, 0.2153843494839015, 0.4752139115698653, 0.2442543008267864, 0.44955173259841213, 0.26706512657918924, 0.4292754430407207, 0.28508849507491496, 0.41325467104452, 0.29932918129375996, 0.4005962832944356, 0.31058108151605723, 0.3905945942079491, 0.31947147181515634, 0.3826920250531944, 0.3264959777304939, 0.37644801979511655] -Введите требуемое значение на выходе системы: 10 -Итоговый список: -[0, 1.1111111111111112, 0.12345679012345674, 1.001371742112483, 0.2210028959000151, 0.91466409253332, 0.2980763621926044, 0.846154344717685, 0.3589739158065022, 0.7920231859497758, 0.40709050137797703, 0.7492528876640203, 0.4451085442986486, 0.7154590717345345, 0.4751474917915249, 0.6887577850742002, 0.4988819688229332, 0.6676604721573928, 0.5176351358600954, 0.6509909903465819, 0.5324524530252606, 0.6378200417553239, 0.5441599628841565, 0.6274133663251943, 0.5534103410442718, 0.6191908079606473, 0.560719281812758, 0.6126939717219929, 0.5664942473582285] -Введите требуемое значение на выходе системы: -3 -Итоговый список: -[0, -0.3333333333333333, -0.037037037037037056, -0.3004115226337449, -0.06630086877000456, -0.2743992277599959, -0.08942290865778141, -0.2538463034153054, -0.10769217474195075, -0.23760695578493266, -0.1221271504133932, -0.22477586629920607, -0.13353256328959462, -0.21463772152036034, -0.14254424753745748, -0.20662733552226, -0.14966459064687998, -0.2002981416472178, -0.15529054075802862] -Введите требуемое значение на выходе системы: 0 -Было введено zn = 0. Завершение работы модуля M2 -Введите имя бинарного файла, в который хотите записать полученный сигнал: testov_dan.mnz -``` - -Графики, полученный при разных значениях zn: -Для значения zn=6 -![Figure_6.png](Figure_6.png) - -Для значения zn=10 -![Figure_10.png](Figure_10.png) - -Для значения zn=-3 -![Figure_-3.png](Figure_-3.png) - +# Тест по модулю 3 +Ходюк Максим Романович, А-01-23 + +## Задание: +Вариант 15 +1) Создайте модуль М1, содержащий две функции: + +- функция 1: аргументы - список с отсчетами выходного сигнала SPS некоторой системы и заданное входное воздействие VH; в функции список SPS дополняется по формуле: + +SPS[i]=(VH-SPS[i-1]*8)/9 + +Расчеты продолжаются до тех пор, пока не окажется |SPS[i] - SPS[i-1]|<0.05; удлиненный список SPS возвращается в вызывающую программу; + +- функция 2: аргумент - список с отсчетами сигнала; в функции должно быть выполнено отображение сигнала на графике с разметкой его осей. + +2) Создайте еще один модуль М2, в котором должны выполняться операции: + +- создается начальный список с одним нулевым элементом; + +- запрашивается требуемое значение ZN на выходе системы; + +- производится обращение к функции 1 со списком и значением ZN; отображается результирующий список; + +- отображается полученный сигнал путем обращения к функции 2; + +- запрос и обращения к функциям повторяются с изменением значения ZN до тех пор, пока не будет введено значение ZN=0. + +3) Создайте модуль М0 - главную программу, которая вызывает М2 и после завершения ее работы запрашивает имя бинарного файла и записывает в него полученный сигнал. + +4) Проверьте работу программы, задавая значения ZN, равные 6, 10, -3 и 0. + +### Выполнение + +Содержимое модуля [M1](M1.py): +``` +import matplotlib.pyplot as plt +def func1(sps,vh): + i = len(sps) - 1 + while True: + value = (vh - sps[i] * 8) / 9 + sps.append(value) + i+=1 + if abs(sps[i]-sps[i-1])< 0.05: + break + return sps + +def func2(sps): + """ + Функция 2: отображает график сигнала + """ + plt.figure(figsize=(10, 6)) + plt.plot(sps, linewidth=2, markersize=5) + plt.xlabel('Номер отсчета (i)', fontsize=12) + plt.ylabel('Значение SPS[i]', fontsize=12) + plt.title('График выходного сигнала системы', fontsize=14) + plt.grid(True, alpha=0.3) + plt.show() +``` + +Содержимое модуля [M2](M2.py): +``` +import M1 +def M1_execution(): + + sps = [0] + while True: + + zn = float(input('Введите требуемое значение на выходе системы: ')) + if zn==0: + print('Было введено zn = 0. Завершение работы модуля M2') + break + + result = M1.func1(sps.copy(), zn) + + print(f'Итоговый список: \n{result}') + + M1.func2(result) + + return result +``` + +Содержимое модуля [M0](M0.py): +``` +import M2 +import pickle +result_signal = M2.M1_execution() + +name = input("Введите имя бинарного файла, в который хотите записать полученный сигнал: ") +with open(name,'wb') as file: + pickle.dump(result_signal,file) +``` + +Запуск программы: +``` +====================== RESTART: D:/POAS/Hodyuk/Tema9/M0.py ===================== +Введите требуемое значение на выходе системы: 6 +Итоговый список: +[0, 0.6666666666666666, 0.07407407407407411, 0.6008230452674898, 0.13260173754000912, 0.5487984555199918, 0.17884581731556282, 0.5076926068306108, 0.2153843494839015, 0.4752139115698653, 0.2442543008267864, 0.44955173259841213, 0.26706512657918924, 0.4292754430407207, 0.28508849507491496, 0.41325467104452, 0.29932918129375996, 0.4005962832944356, 0.31058108151605723, 0.3905945942079491, 0.31947147181515634, 0.3826920250531944, 0.3264959777304939, 0.37644801979511655] +Введите требуемое значение на выходе системы: 10 +Итоговый список: +[0, 1.1111111111111112, 0.12345679012345674, 1.001371742112483, 0.2210028959000151, 0.91466409253332, 0.2980763621926044, 0.846154344717685, 0.3589739158065022, 0.7920231859497758, 0.40709050137797703, 0.7492528876640203, 0.4451085442986486, 0.7154590717345345, 0.4751474917915249, 0.6887577850742002, 0.4988819688229332, 0.6676604721573928, 0.5176351358600954, 0.6509909903465819, 0.5324524530252606, 0.6378200417553239, 0.5441599628841565, 0.6274133663251943, 0.5534103410442718, 0.6191908079606473, 0.560719281812758, 0.6126939717219929, 0.5664942473582285] +Введите требуемое значение на выходе системы: -3 +Итоговый список: +[0, -0.3333333333333333, -0.037037037037037056, -0.3004115226337449, -0.06630086877000456, -0.2743992277599959, -0.08942290865778141, -0.2538463034153054, -0.10769217474195075, -0.23760695578493266, -0.1221271504133932, -0.22477586629920607, -0.13353256328959462, -0.21463772152036034, -0.14254424753745748, -0.20662733552226, -0.14966459064687998, -0.2002981416472178, -0.15529054075802862] +Введите требуемое значение на выходе системы: 0 +Было введено zn = 0. Завершение работы модуля M2 +Введите имя бинарного файла, в который хотите записать полученный сигнал: testov_dan.mnz +``` + +Графики, полученный при разных значениях zn: +Для значения zn=6 +![Figure_6.png](Figure_6.png) + +Для значения zn=10 +![Figure_10.png](Figure_10.png) + +Для значения zn=-3 +![Figure_-3.png](Figure_-3.png) +