diff --git a/TEMA8/file.txt b/TEMA8/file.txt new file mode 100644 index 0000000..21147d8 --- /dev/null +++ b/TEMA8/file.txt @@ -0,0 +1,101 @@ +xi yi +3.670624845040832 0 +-0.3521658782544006 0 +8.474868613693486 3.974868613693486 +-1.2523156239267281 0 +-3.7587096811346328 0 +7.812468585140991 3.3124685851409907 +-6.0856889627564446 -1.5856889627564446 +-5.724951279110531 -1.224951279110531 +-7.209307783131958 -2.7093077831319583 +-0.03177225581110221 0 +0.7262377096028143 0 +-2.1451811018035256 0 +0.682492352684937 0 +-7.974098743623873 -3.4740987436238733 +-4.739894789384625 -0.23989478938462483 +0.5785673884962104 0 +2.7900552540834824 0 +-2.9878254998277147 0 +8.68266903601552 4.18266903601552 +0.6358011132082179 0 +-1.581248665373875 0 +-7.714241862469274 -3.214241862469274 +4.191086710659071 0 +-5.8603083872222115 -1.3603083872222115 +6.6401090127726645 2.1401090127726645 +2.260239806764301 0 +-1.6714707105856204 0 +2.11512773242201 0 +-5.1120638328556165 -0.6120638328556165 +-10.945281168071894 -6.445281168071894 +2.8366672115699614 0 +1.4086809273229965 0 +-2.1496484779110046 0 +-2.204188117632971 0 +5.109718373038055 0.6097183730380547 +-0.8627148245032066 0 +-3.940717361293867 0 +-6.317208582843859 -1.8172085828438593 +4.161315157870332 0 +3.7381890083293237 0 +3.509751762296771 0 +-5.112977704740069 -0.6129777047400689 +1.3712601808556377 0 +-4.511100221705535 -0.011100221705534707 +5.187248298870852 0.6872482988708519 +7.526201082555464 3.026201082555464 +0.943215636501155 0 +-1.6731422501170918 0 +-3.6509712338126468 0 +-8.970988280742628 -4.4709882807426276 +-3.7178510417802197 0 +-9.181348116863681 -4.681348116863681 +-7.096909208628782 -2.596909208628782 +-6.356674467305581 -1.8566744673055808 +12.362835482493008 7.862835482493008 +-3.829821255664842 0 +3.863254268939434 0 +-7.361058739291252 -2.861058739291252 +2.647441327077496 0 +-0.2463332543002399 0 +-6.43345466288511 -1.9334546628851097 +1.0010663991036108 0 +4.891543232391817 0.3915432323918173 +3.217395947085928 0 +7.24856212261116 2.74856212261116 +0.03268157666206739 0 +2.361643183782607 0 +2.7565941347292853 0 +6.614328614660419 2.114328614660419 +-4.522306819553961 -0.022306819553961077 +-2.417360799898943 0 +1.438340972480404 0 +-10.538183665090727 -6.0381836650907275 +2.3976210633141606 0 +-7.884528665296656 -3.3845286652966564 +-3.7426936627274277 0 +4.2656325795417 0 +8.00340261637121 3.5034026163712095 +3.0203739276410437 0 +2.239032949899291 0 +-5.4012053050140345 -0.9012053050140345 +-0.5456659941079272 0 +-3.3423758989922203 0 +0.6911815315164658 0 +4.499821505200004 0 +-2.7737597404880163 0 +0.9093545223215143 0 +4.045688327501273 0 +3.417507437526962 0 +2.287170277997463 0 +12.444224815662537 7.944224815662537 +-2.3029729728150645 0 +7.5434316730659905 3.0434316730659905 +0.875475942768364 0 +-1.0441288330619352 0 +-1.9188907056958815 0 +-5.4887311611961715 -0.9887311611961715 +7.893972719410864 3.393972719410864 +-7.404570078842247 -2.904570078842247 +-2.066644631987605 0 diff --git a/TEMA8/main_module.py b/TEMA8/main_module.py new file mode 100644 index 0000000..c13a8f0 --- /dev/null +++ b/TEMA8/main_module.py @@ -0,0 +1,16 @@ +import random +import math +from transform_module import transform_signal + +def main(): + x = [random.gauss(0.5, 5) for i in range(100)] + # 0.5 - мат ожидание, 5 - СКО = корень из 25 (дисперсия = 25) + y = transform_signal(x, 4.5) + + with open('file.txt', 'w') as f: + f.write("xi yi\n") + for xi, yi in zip(x, y): + f.write(f"{xi} {yi}\n") + # вывод в файле file.txt + +main() diff --git a/TEMA8/report.md b/TEMA8/report.md index 41e3b8c..752afbb 100644 --- a/TEMA8/report.md +++ b/TEMA8/report.md @@ -71,7 +71,7 @@ ## 2.3 Запуск модуля на выполнение с помощью функции exec() -Здесь модуль не требуется импортировать. Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции. Но объект-модуль при этом не создается. Созданные при выполнении модуля объекты становятся объектами главной программы! +Здесь модуль не требуется импортировать. Функция exec действует так, как будто на месте обращения к ней в программу вставлен код из объекта-аргумента функции. Но объект-модуль при этом не создается. Созданные при выполнении модуля объекты становятся объектами главной программы. >>> exec(open('Mod1.py').read()) Mod1:Введите значение = 5 @@ -260,7 +260,9 @@ В ранее созданных модулях вводятся и используются следующие объекты: Mod1: perm1 + Mod2: функции alpha, beta; переменные t, expi + Mod0: переменные tt,qq Исходя из примеров, приведенных ниже, можно сказать, что объекты входящие в один модуль будут локализованы в этом модуле и доступны в нем. К переменным из другого модуля, даже импортированного в главный (выполняемый) модуль, прямого доступа не будет. diff --git a/TEMA8/task.md b/TEMA8/task.md index 9134af6..1ec1910 100644 --- a/TEMA8/task.md +++ b/TEMA8/task.md @@ -6,7 +6,7 @@ Разработайте программу, состоящую из трех модулей: -- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколь-ко на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полу-ченный список должен возвращаться в вызывающую программу. +- Модуль 1 содержит функцию считывания числового списка из текстового файла с заданным именем (аргумент функции – имя файла). Элементы в файле могут располагаться по несколько на строке с разделением пробелом. Числа элементов в строках могут быть разными. Полученный список должен возвращаться в вызывающую программу. - Модуль 2 содержит функцию расчета коэффициента корреляции по двум числовым спискам (аргументы функции – имена двух списков). Числа элементов в списках могут различаться. Значение коэффициента должно возвращаться в вызывающую программу. @@ -41,7 +41,7 @@ znamenatel2 = sum((y - mean2) ** 2 for y in list2) if znamenatel1 == 0 or znamenatel2 == 0: # Проверка деления на 0 - return 0 + return 0 return chislitel/(znamenatel1 * znamenatel2) ** 0.5 diff --git a/TEMA8/test.md b/TEMA8/test.md new file mode 100644 index 0000000..0e453b0 --- /dev/null +++ b/TEMA8/test.md @@ -0,0 +1,157 @@ +# Выполнение индивидуального контрольного задания по теме 8 + +Голощапов Д.Е.,А-01-23 + +# Задание + +Разработайте функцию с 2 аргументами: x и В, реализующую преобразование входного сигнала x по формуле: y=0 при -B≤x≤B, y=x - B при x>B, y=x+B при x<-B. Создайте список со 100 значениями входного сигнала х – случайными, нормально распределенными числами с математическим ожиданием 0.5 и дисперсией 25. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при В=4.5. Записать результаты в текстовый файл в виде двух столбцов: хi, yi. + +# Решение + +Функция для линейно-кусочного преобразования transform_signal находится в модуле transformation_module.py + +Код представлен ниже: + + def transform_signal(x, B): + """ + Кусочно-линейное преобразование: + y = 0 при -B <= xi <= B + y = xi - B при xi > B + y = xi + B при xi < -B + + x - список входных значений + """ + y = [] + for xi in x: + if -B <= xi <= B: + y.append(0) + elif xi > B: + y.append(xi - B) + else: + y.append(xi + B) + return y + + +Код основного модуля: + + import random + import math + from transform_module import transform_signal + + def main(): + x = [random.gauss(0.5, 5) for i in range(100)] + # 0.5 - мат ожидание, 5 - СКО = корень из 25 (дисперсия = 25) + y = transform_signal(x, 4.5) + + with open('file.txt', 'w') as f: + f.write("xi yi\n") + for xi, yi in zip(x, y): + f.write(f"{xi} {yi}\n") + + # вывод в файле file.txt + + main() + +Содержимое файла file.txt: + + xi yi + 3.670624845040832 0 + -0.3521658782544006 0 + 8.474868613693486 3.974868613693486 + -1.2523156239267281 0 + -3.7587096811346328 0 + 7.812468585140991 3.3124685851409907 + -6.0856889627564446 -1.5856889627564446 + -5.724951279110531 -1.224951279110531 + -7.209307783131958 -2.7093077831319583 + -0.03177225581110221 0 + 0.7262377096028143 0 + -2.1451811018035256 0 + 0.682492352684937 0 + -7.974098743623873 -3.4740987436238733 + -4.739894789384625 -0.23989478938462483 + 0.5785673884962104 0 + 2.7900552540834824 0 + -2.9878254998277147 0 + 8.68266903601552 4.18266903601552 + 0.6358011132082179 0 + -1.581248665373875 0 + -7.714241862469274 -3.214241862469274 + 4.191086710659071 0 + -5.8603083872222115 -1.3603083872222115 + 6.6401090127726645 2.1401090127726645 + 2.260239806764301 0 + -1.6714707105856204 0 + 2.11512773242201 0 + -5.1120638328556165 -0.6120638328556165 + -10.945281168071894 -6.445281168071894 + 2.8366672115699614 0 + 1.4086809273229965 0 + -2.1496484779110046 0 + -2.204188117632971 0 + 5.109718373038055 0.6097183730380547 + -0.8627148245032066 0 + -3.940717361293867 0 + -6.317208582843859 -1.8172085828438593 + 4.161315157870332 0 + 3.7381890083293237 0 + 3.509751762296771 0 + -5.112977704740069 -0.6129777047400689 + 1.3712601808556377 0 + -4.511100221705535 -0.011100221705534707 + 5.187248298870852 0.6872482988708519 + 7.526201082555464 3.026201082555464 + 0.943215636501155 0 + -1.6731422501170918 0 + -3.6509712338126468 0 + -8.970988280742628 -4.4709882807426276 + -3.7178510417802197 0 + -9.181348116863681 -4.681348116863681 + -7.096909208628782 -2.596909208628782 + -6.356674467305581 -1.8566744673055808 + 12.362835482493008 7.862835482493008 + -3.829821255664842 0 + 3.863254268939434 0 + -7.361058739291252 -2.861058739291252 + 2.647441327077496 0 + -0.2463332543002399 0 + -6.43345466288511 -1.9334546628851097 + 1.0010663991036108 0 + 4.891543232391817 0.3915432323918173 + 3.217395947085928 0 + 7.24856212261116 2.74856212261116 + 0.03268157666206739 0 + 2.361643183782607 0 + 2.7565941347292853 0 + 6.614328614660419 2.114328614660419 + -4.522306819553961 -0.022306819553961077 + -2.417360799898943 0 + 1.438340972480404 0 + -10.538183665090727 -6.0381836650907275 + 2.3976210633141606 0 + -7.884528665296656 -3.3845286652966564 + -3.7426936627274277 0 + 4.2656325795417 0 + 8.00340261637121 3.5034026163712095 + 3.0203739276410437 0 + 2.239032949899291 0 + -5.4012053050140345 -0.9012053050140345 + -0.5456659941079272 0 + -3.3423758989922203 0 + 0.6911815315164658 0 + 4.499821505200004 0 + -2.7737597404880163 0 + 0.9093545223215143 0 + 4.045688327501273 0 + 3.417507437526962 0 + 2.287170277997463 0 + 12.444224815662537 7.944224815662537 + -2.3029729728150645 0 + 7.5434316730659905 3.0434316730659905 + 0.875475942768364 0 + -1.0441288330619352 0 + -1.9188907056958815 0 + -5.4887311611961715 -0.9887311611961715 + 7.893972719410864 3.393972719410864 + -7.404570078842247 -2.904570078842247 + -2.066644631987605 0 \ No newline at end of file diff --git a/TEMA8/test.txt b/TEMA8/test.txt new file mode 100644 index 0000000..f90eaf9 --- /dev/null +++ b/TEMA8/test.txt @@ -0,0 +1,157 @@ +# Выполнение индивидуального контрольного задания по теме 8 + +Голощапов Д.Е.,А-01-23 + +# Задание + +Разработайте функцию с 2 аргументами: x и В, реализующую преобразование входного сигнала x по формуле: y=0 при -B≤x≤B, y=x - B при x>B, y=x+B при x<-B. Создайте список со 100 значениями входного сигнала х – случайными, нормально распределенными числами с математическим ожиданием 0.5 и дисперсией 25. Для элементов списка с помощью функции рассчитайте список со значениями выходного сигнала y при В=4.5. Записать результаты в текстовый файл в виде двух столбцов: хi, yi. + +# Решение + +Функция для линейно-кусочного преобразования transform_signal находится в модуле transformation_module.py + +Код представлен ниже: + +def transform_signal(x, B): + """ + Кусочно-линейное преобразование: + y = 0 при -B <= xi <= B + y = xi - B при xi > B + y = xi + B при xi < -B + + x - список входных значений + """ + y = [] + for xi in x: + if -B <= xi <= B: + y.append(0) + elif xi > B: + y.append(xi - B) + else: + y.append(xi + B) + return y + + +Код основного модуля: + +import random +import math +from transform_module import transform_signal + +def main(): + x = [random.gauss(0.5, 5) for i in range(100)] + # 0.5 - мат ожидание, 5 - СКО = корень из 25 (дисперсия = 25) + y = transform_signal(x, 4.5) + + with open('file.txt', 'w') as f: + f.write("xi yi\n") + for xi, yi in zip(x, y): + f.write(f"{xi} {yi}\n") + + # вывод в файле file.txt + +main() + +Содержимое файла file.txt: + +xi yi +3.670624845040832 0 +-0.3521658782544006 0 +8.474868613693486 3.974868613693486 +-1.2523156239267281 0 +-3.7587096811346328 0 +7.812468585140991 3.3124685851409907 +-6.0856889627564446 -1.5856889627564446 +-5.724951279110531 -1.224951279110531 +-7.209307783131958 -2.7093077831319583 +-0.03177225581110221 0 +0.7262377096028143 0 +-2.1451811018035256 0 +0.682492352684937 0 +-7.974098743623873 -3.4740987436238733 +-4.739894789384625 -0.23989478938462483 +0.5785673884962104 0 +2.7900552540834824 0 +-2.9878254998277147 0 +8.68266903601552 4.18266903601552 +0.6358011132082179 0 +-1.581248665373875 0 +-7.714241862469274 -3.214241862469274 +4.191086710659071 0 +-5.8603083872222115 -1.3603083872222115 +6.6401090127726645 2.1401090127726645 +2.260239806764301 0 +-1.6714707105856204 0 +2.11512773242201 0 +-5.1120638328556165 -0.6120638328556165 +-10.945281168071894 -6.445281168071894 +2.8366672115699614 0 +1.4086809273229965 0 +-2.1496484779110046 0 +-2.204188117632971 0 +5.109718373038055 0.6097183730380547 +-0.8627148245032066 0 +-3.940717361293867 0 +-6.317208582843859 -1.8172085828438593 +4.161315157870332 0 +3.7381890083293237 0 +3.509751762296771 0 +-5.112977704740069 -0.6129777047400689 +1.3712601808556377 0 +-4.511100221705535 -0.011100221705534707 +5.187248298870852 0.6872482988708519 +7.526201082555464 3.026201082555464 +0.943215636501155 0 +-1.6731422501170918 0 +-3.6509712338126468 0 +-8.970988280742628 -4.4709882807426276 +-3.7178510417802197 0 +-9.181348116863681 -4.681348116863681 +-7.096909208628782 -2.596909208628782 +-6.356674467305581 -1.8566744673055808 +12.362835482493008 7.862835482493008 +-3.829821255664842 0 +3.863254268939434 0 +-7.361058739291252 -2.861058739291252 +2.647441327077496 0 +-0.2463332543002399 0 +-6.43345466288511 -1.9334546628851097 +1.0010663991036108 0 +4.891543232391817 0.3915432323918173 +3.217395947085928 0 +7.24856212261116 2.74856212261116 +0.03268157666206739 0 +2.361643183782607 0 +2.7565941347292853 0 +6.614328614660419 2.114328614660419 +-4.522306819553961 -0.022306819553961077 +-2.417360799898943 0 +1.438340972480404 0 +-10.538183665090727 -6.0381836650907275 +2.3976210633141606 0 +-7.884528665296656 -3.3845286652966564 +-3.7426936627274277 0 +4.2656325795417 0 +8.00340261637121 3.5034026163712095 +3.0203739276410437 0 +2.239032949899291 0 +-5.4012053050140345 -0.9012053050140345 +-0.5456659941079272 0 +-3.3423758989922203 0 +0.6911815315164658 0 +4.499821505200004 0 +-2.7737597404880163 0 +0.9093545223215143 0 +4.045688327501273 0 +3.417507437526962 0 +2.287170277997463 0 +12.444224815662537 7.944224815662537 +-2.3029729728150645 0 +7.5434316730659905 3.0434316730659905 +0.875475942768364 0 +-1.0441288330619352 0 +-1.9188907056958815 0 +-5.4887311611961715 -0.9887311611961715 +7.893972719410864 3.393972719410864 +-7.404570078842247 -2.904570078842247 +-2.066644631987605 0 \ No newline at end of file diff --git a/TEMA8/transform_module.py b/TEMA8/transform_module.py new file mode 100644 index 0000000..84a2645 --- /dev/null +++ b/TEMA8/transform_module.py @@ -0,0 +1,18 @@ +def transform_signal(x, B): + """ + Кусочно-линейное преобразование: + y = 0 при -B <= xi <= B + y = xi - B при xi > B + y = xi + B при xi < -B + + x - список входных значений + """ + y = [] + for xi in x: + if -B <= xi <= B: + y.append(0) + elif xi > B: + y.append(xi - B) + else: + y.append(xi + B) + return y