From 8ddb9e9363187ccf3d18849bb3c3d9764dacd24d Mon Sep 17 00:00:00 2001 From: DeviatovaMY Date: Sun, 30 Nov 2025 13:32:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=95=D0=9C=D0=907/report.md=20and=20tas?= =?UTF-8?q?k.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA7/Figure_1.png | Bin 0 -> 17844 bytes TEMA7/Figure_2.png | Bin 0 -> 6282 bytes TEMA7/report.md | 533 +++++++++++++++++++++++++++++++++++++++++++++ TEMA7/task.md | 57 +++++ 4 files changed, 590 insertions(+) create mode 100644 TEMA7/Figure_1.png create mode 100644 TEMA7/Figure_2.png create mode 100644 TEMA7/report.md create mode 100644 TEMA7/task.md diff --git a/TEMA7/Figure_1.png b/TEMA7/Figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cacfbb27cacf6988ed72a346d7f0462207f42f5f GIT binary patch literal 17844 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 SH3wfpR1`Gji*H&!{J#KEyM(>~ literal 0 HcmV?d00001 diff --git a/TEMA7/Figure_2.png b/TEMA7/Figure_2.png new file mode 100644 index 0000000000000000000000000000000000000000..18323baf6b09d79be08992618e7002f0cac0375d GIT binary patch literal 6282 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 literal 0 HcmV?d00001 diff --git a/TEMA7/report.md b/TEMA7/report.md new file mode 100644 index 0000000..1c8bde2 --- /dev/null +++ b/TEMA7/report.md @@ -0,0 +1,533 @@ +# Отчет по теме 7 + +Девятова Мария, А-03-23 + +## 1 Запуск IDLE + +## 2 Создание пользовательской функции + +### 2.1 Первый пример: функция – без аргументов. + +``` +def uspeh(): + """Подтверждение успеха операции""" + print('Выполнено успешно!') + +uspeh() +Выполнено успешно! +type(uspeh) + +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os', 'uspeh'] +help(uspeh) +Help on function uspeh in module __main__: + +uspeh() + Подтверждение успеха операции +``` + +В качестве справочной информации по созданной функции возвращается строка, ранее заданная в тройных кавычках. Отсюда можно сделать вывод, что помощь нужно организовывать, используя данный прием. + +### 2.2 Пример функции с аргументами + +``` +def sravnenie(a,b): + """Сравнение a и b""" + if a>b: + print(a,' больше ',b) + elif a", line 1, in + mm=slozh(m1,m2,m3,m4); mm + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' +d1={'fruit': ['orange', 'apple']}; d2={'coffee': ['espresso', 'latte'], 'tea': ['black tea', 'green tea']}; d3={'antonyms': ['ice', 'fire']}; d4={'colour': ['white', 'yellow']} +dd=slozh(d1,d2,d3,d4); dd +Traceback (most recent call last): + File "", line 1, in + dd=slozh(d1,d2,d3,d4); dd + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' +``` + +### 2.5 Функция, реализующая модель некоторого устройства, на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y + +``` +def inerz(x,T,ypred): + """ Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства""" + y=(x+T*ypred)/(T+1) + return y + +sps=[0]+[1]*100 +spsy=[] +TT=20 +yy=0 +for xx in sps: + yy=inerz(xx,TT,yy) + spsy.append(yy) + +import pylab +pylab.plot(spsy) +[] +pylab.xlabel('t, time'); pylab.ylabel('y, output signal') +Text(0.5, 0, 't, time') +Text(0, 0.5, 'y, output signal') +pylab.show() +``` + +![График](Figure_1.png) + +## 3 Функции как объекты + +### 3.1 Получение списка атрибутов объекта-функции + +``` +dir(inerz) +['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__getstate__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__type_params__'] +inerz.__doc__ +'Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства' +help(inerz) +Help on function inerz in module __main__: + +inerz(x, T, ypred) + Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства +``` + +### 3.2 Сохранение ссылки на объект-функцию в другой переменной + +``` +fnkt=sravnenie +v=16 +fnkt(v,23) +16 меньше 23 +``` + +### 3.3 Возможность альтернативного определения функции в программе + +``` +typ_fun=8 +if typ_fun==1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + +func() +Функция 2 +``` + +## 4 Аргументы функции + +### 4.1 Использование функции в качестве аргумента другой функции + +``` +def fun_arg(fff,a,b,c): + """fff-имя функции, используемой + в качестве аргумента функции fun_arg""" + return a+fff(c,b) + +zz=fun_arg(logistfun,-3,1,0.7) +zz +-2.3318122278318336 +``` + +### 4.2 Обязательные и необязательные аргументы + +``` +def logistfun(a,b=1): + """Вычисление логистической функции""" + import math + return b/(1+math.exp(-a)) + +logistfun(0.7) +0.6681877721681662 +logistfun(0.7, 2) +1.3363755443363323 +``` + +### 4.3 Возможность обращения к функции с произвольным (непозиционным) расположением аргументов + +Для этого необходимо в обращении к функции указывать имена аргументов + +``` +logistfun(b=0.5,a=0.8) +0.34498724056380625 +``` + +### 4.4 Пример со значениями аргументов функции, содержащимися в списке или кортеже + +``` +b1234=[b1,b2,b3,b4]; b1234 +[[1, 2], [-1, -2], [0, 2], [-1, -1]] +qq=slozh(*b1234); qq +[1, 2, -1, -2, 0, 2, -1, -1] +``` + +### 4.5 Пример со значениями аргументов функции, содержащимися в словаре + +``` +dic4={"a1":1,"a2":2,"a3":3,"a4":4} +qqq=slozh(**dic4) +qqq +10 +``` + +### 4.6 Смешанные ссылки + +``` +e1=(-1,6);dd2={'a3':3,'a4':9} +qqqq=slozh(*e1,**dd2); qqqq +17 +``` + +### 4.7 Переменное число аргументов у функции. + +``` +def func4(*kort7): + """Произвольное число аргументов в составе кортежа""" + smm=0 + for elt in kort7: + smm+=elt + return smm + +func4(-1,2) +1 +func4(-1,2,0,3,6) +10 +``` + +### 4.8 Комбинация аргументов + +``` +def func4(a,b=7,*kort7): + """Кортеж - сборка аргументов - должен быть последним!""" + smm=0 + for elt in kort7: + smm+=elt + return a*smm+b + +func4(-1,2,0,3,6) +-7 +``` + +Со словарем: + +``` +def func44(a,b=7,**dict11): + """Словарь - сборка аргументов - должен быть последним!""" + smm=0 + for elt in dict11.values(): + smm+=elt + return a*smm+b + +dddd={'c1': 2, 'c2': 0, 'c3': 3, 'c4': 6} +func44(-1, **dddd) +-4 +``` + +### 4.9 Изменение значений объектов, используемых в качестве аргументов функции. + +Такое изменение возможно только у объектов изменяемого типа (например, списки). + +``` +a=90 +def func3(b): + b=5*b+67 + + +func3(a) +a +90 +sps1=[1,2,3,4] +def func2(sps): + sps[1]=99 + + +func2(sps1) +sps1 +[1, 99, 3, 4] +kort=(1,2,3,4) +func2(kort) +Traceback (most recent call last): + File "", line 1, in + func2(kort) + File "", line 2, in func2 + sps[1]=99 +TypeError: 'tuple' object does not support item assignment +``` + +## 5 Специальные типы пользовательских функций + +### 5.1 Анонимные функции + +Анонимные функции или по-другому лямбда-функции – функции без имени + +``` +anfun1=lambda: 1.5+math.log10(17.23) +anfun1() +2.7362852774480286 +anfun2=lambda a,b : a+math.log10(b) +anfun2(17,234) +19.369215857410143 +anfun3=lambda a,b=234: a+math.log10(b) +anfun3(100) +102.36921585741014 +``` + +### 5.2 Функции-генераторы + +``` +def func5(diap,shag): + """ Итератор, возвращающий значения + из диапазона от 1 до diap с шагом shag""" + for j in range(1,diap+1,shag): + yield j + + +for mm in func5(7,3): + print(mm) + + +1 +4 +7 +alp=func5(7,3) +print(alp.__next__()) +1 +print(alp.__next__()) +4 +print(alp.__next__()) +7 +``` + +## 6 Локализация объектов в функциях + +### 6.1 Примеры на локализацию объектов + +Пример 1. Одноименные локальный и глобальный объекты + +``` +glb=10 +def func7(arg): + loc1=15 + glb=8 + return loc1*arg + +res=func7(glb); res +150 +glb +10 +``` + +Пример 2. Ошибка в использовании локального объекта. + +``` +def func8(arg): + loc1=15 + print(glb) + glb=8 + return loc1*arg + +res=func8(glb); res +Traceback (most recent call last): + File "", line 1, in + res=func8(glb); res + File "", line 3, in func8 + print(glb) +UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value +``` + +В данном примере локальной переменной glb внутри пользовательской функции присваивается значение, поэтому print принимает именно локальную переменную. +Но из-за того, что присваивание значения происходит после print, происходит ошибка. + +Пример 3. Переопределение локализации объекта + +``` +glb=11 +def func7(arg): + loc1=15 + global glb + print(glb) + glb=8 + return loc1*arg + +res=func7(glb); res; glb +11 +165 +8 +``` + +### 6.2 Выявление локализации объекта с помощью функций locals() и globals() из builtins + +``` +globals().keys() +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +locals().keys() +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +``` + +В возвращенных списках элементы совпадают, т.к. locals() вернул локальные объекты на уровне рабочего пространства, где содержатся глобальные. + +``` +def func8(arg): + loc1=15 + glb=8 + print(globals().keys()) + print(locals().keys()) + return loc1*arg + +hh=func8(glb) +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +dict_keys(['arg', 'loc1', 'glb']) +'glb' in globals().keys() +True +``` + +В данном примере списки отличаются, т.к. на уровне пользовательской функции глобальные и локальные объекты разные + +### 6.3 Локализация объектов при использовании вложенных функций + +``` +def func9(arg2,arg3): + def func9_1(arg1): + loc1=15 + glb1=8 + print('glob_func9_1:',globals().keys()) + print('locl_func9_1:',locals().keys()) + return loc1*arg1 + loc1=5 + glb=func9_1(loc1) + print('loc_func9:',locals().keys()) + print('glob_func9:',globals().keys()) + return arg2+arg3*glb + +kk=func9(10,1) +glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1']) +loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb']) +glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +``` + +Глобальные объекты для обеих функций совпадают. Список локальных объектов функции func9 содержит имена arg2,arg3,loc1, glb и имя вложенной функции func9_1. Среди локальных объектов вложенной функции arg1,loc1,glb1, при этом loc1 в функциях func9 и func9_1 - две разные переменные + +### 6.4 Большой пример + +Здесь происходит моделирование системы, состоящей из последовательного соединения реального двигателя, охваченного отрицательной обратной связью с тахогенератором в ней, и нелинейного звена типа «зона нечувствительности», при подаче на неё синусоидального входного сигнала. +Реальный двигатель: последовательное соединение усилителя с коэффициентом усиления k1,интегратора: y(t)=x(t)+y(t-1), и инерционного звена: y(t)=(x(t)+T*y(t-1)) / (T+1) с постоянной времени Т. +Тахогенератор: последовательное соединение усилителя с коэффициентом усиления k2 и интегратора: y(t)=x(t)+y(t-1). +Нелинейное звено типа «зона нечувствительности»: y=0 при -xm≤ x ≤xm, y=x-xm при x>xm, y=x+xm при x<-xm. +Таким образом, система характеризуется параметрами: k1, T, k2, xm. Входной сигнал характеризуется параметрами: A (амплитуда синусоиды) и F (период синусоиды). +Еще один параметр задачи : N – время (число тактов) подачи сигнала. + +``` +znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=15,10,30,0.2,5,0.001,50 +k1=float(znach[0]) +T=float(znach[1]) +k2=float(znach[2]) +Xm=float(znach[3]) +A=float(znach[4]) +F=float(znach[5]) +N=int(znach[6]) +vhod=[] +for i in range(N): + vhod.append(A*math.sin((2*i*math.pi)/F)) + + +vhod +[0.0, -3.2141664592756336e-12, -6.428332918551267e-12, -5.09502586896226e-12, -1.2856665837102534e-11, -2.428411769784245e-12, -1.019005173792452e-11, -1.7951691706064795e-11, -2.571333167420507e-11, -3.347497164234534e-11, -4.85682353956849e-12, -4.8998251578625896e-11, -2.038010347584904e-11, 8.238044626927816e-12, -3.590338341212959e-11, -8.004481145118699e-11, -5.142666334841014e-11, -2.2808515245633285e-11, -6.694994328469069e-11, -3.833179518191383e-11, -9.71364707913698e-12, -5.385507511819438e-11, -9.799650315725179e-11, -1.421379311963092e-10, -4.076020695169808e-11, 6.061751729291303e-11, 1.647608925385563e-11, -2.7665338785201775e-11, -7.180676682425918e-11, 2.957095742035194e-11, -1.6008962290237398e-10, -5.871189865776288e-11, -1.0285332669682028e-10, -1.4756024522091648e-12, -4.561703049126657e-11, -8.975845853032398e-11, -1.3389988656938137e-10, -3.2522162324770265e-11, -7.666359036382766e-11, -1.2080501840288506e-10, -1.942729415827396e-11, -2.0908787448099986e-10, -1.0771015023638876e-10, -1.5185157827544617e-10, -1.9599300631450358e-10, 5.090387021377606e-11, -2.842758623926184e-10, -3.7378985864338755e-11, -8.152041390339616e-11, -1.2566184194245356e-10] +def realdvig(xtt,kk1,TT,yti1,ytin1): + yp=kk1*xtt + yti1=yp+yti1 + ytin1=(yti1+TT*ytin1)/(TT+1) + return [yti1,ytin1] + +def tahogen(xtt,kk2,yti2): + yp=kk2*xtt + yti2=yp+yti2 + return yti2 + +def nechus(xtt,gran): + if xtt(-gran): + ytt=0 + elif xtt>=gran: + ytt=xtt-gran + elif xtt<=(-gran): + ytt=xtt+gran + return ytt + +vyhod=[] +yi1=0;yin1=0;yi2=0 +for xt in vhod: + xt1=xt-yi2 + [yi1,yin1]=realdvig(xt1,k1,T,yi1,yin1) + yi2=tahogen(yin1,k2,yi2) + yt=nechus(yin1,Xm) + vyhod.append(yt) + + +print('y=',vyhod) +y= [0, 0, 0, 0, 0, 0, 0, 0, 0.28235063576021646, -18.09317618367068, 693.569780896497, -26311.05967697136, 997855.8681822185, -37843749.77748839, 1435226439.7890663, -54431047009.38599, 2064300653896.8462, -78288723509751.45, 2969104436030480.0, -1.126034600750363e+17, 4.2704928351466476e+18, -1.6195869152587386e+20, 6.142292885938634e+21, -2.3294681835969964e+23, 8.834521764361373e+24, -3.3504975665500395e+26, 1.2706781694446622e+28, -4.8190544187315804e+29, 1.8276292179353242e+31, -6.931294540413311e+32, 2.62869752433907e+34, -9.969350796127492e+35, 3.780882143191306e+37, -1.433901772847203e+39, 5.438080893044959e+40, -2.0623953717959402e+42, 7.821646557419368e+43, -2.966364049581635e+45, 1.1249953075805503e+47, -4.266551309697657e+48, 1.6180920894178406e+50, -6.136623750159777e+51, 2.3273181605240858e+53, -8.826367789232948e+54, 3.3474051666947687e+56, -1.269505374983769e+58, 4.81460658885228e+59, -1.8259423758419422e+61, 6.9248971818694355e+62, -2.626271322354932e+64] +``` + +## 7 Завершение работы \ No newline at end of file diff --git a/TEMA7/task.md b/TEMA7/task.md new file mode 100644 index 0000000..4b72cd7 --- /dev/null +++ b/TEMA7/task.md @@ -0,0 +1,57 @@ +# Общее контрольное задание по теме 7 + +Девятова Мария, А-03-23 + +## Задание + +1. Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. +2. Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. +3. Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х, Y=b1+b2*X и имеющую аргументы b1, b2 и X. + +## Выполнение + +1. + +``` +in_signal=[math.sin(i*math.pi/3+2) for i in range(20)] +in_signal +[0.9092974268256817, 0.0942549812584854, -0.8150424455671963, -0.9092974268256817, -0.09425498125848553, 0.8150424455671966, 0.9092974268256818, 0.09425498125848654, -0.8150424455671961, -0.9092974268256818, -0.09425498125848489, 0.8150424455671961, 0.9092974268256819, 0.09425498125848501, -0.815042445567195, -0.9092974268256835, -0.0942549812584869, 0.815042445567197, 0.909297426825682, 0.09425498125848703] +def zader(s, T): + """Функция преобразования входного сигнала s в выходной с заданной задержкой T""" + s_out=[] + for i in range(len(s)+T): + if i