From 0f624ae9250c527f394757635846a65844ec4883 Mon Sep 17 00:00:00 2001 From: EfimovaLA Date: Thu, 4 Dec 2025 21:17:35 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=20=D0=BF=D0=BE=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA7/Ris1.png | Bin 0 -> 45056 bytes TEMA7/report7.md | 486 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 486 insertions(+) create mode 100644 TEMA7/Ris1.png create mode 100644 TEMA7/report7.md diff --git a/TEMA7/Ris1.png b/TEMA7/Ris1.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6f28e4ec2297805b9a4b5a03b65c50a96bda8b GIT binary patch literal 45056 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 literal 0 HcmV?d00001 diff --git a/TEMA7/report7.md b/TEMA7/report7.md new file mode 100644 index 0000000..27c1488 --- /dev/null +++ b/TEMA7/report7.md @@ -0,0 +1,486 @@ +# Отчет по теме 7 +Ефимова Людмила, А-03-23 + +# Создание пользовательских функций +## 1. Настройка текущего каталога + +```py +import os +os.chdir("H:\\study\\ПОАС") +``` +## 2. Создание пользовательской функции +Создание функции предполагает выполнение трех операций: формирование функции, ее +сохранение и использование. + +### 2.1. Пример функции без аргументов + +```py +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. Пример функции с аргументами + +```py +def sravnenie(a,b): + """Сравнение a и b""" + if a>b: + print(a,' больше ',b) + elif a", line 1, in + slozh({1,2,3,4}, {'pym', True, 'pyrym', False}, {"l", "a", "n", 13}, {"hi", "i", "miss", "you"}) #Сложение множеств + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' +dict1 = {'a': 1}; dict2 = {'b': 2}; dict3 = {'c': 3}; dict4 = {'d': 4} + +slozh(dict1, dict2, dict3, dict4) #Сложение словарей +Traceback (most recent call last): + File "", line 1, in + slozh(dict1, dict2, dict3, dict4) #Сложение словарей + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' +``` + +### 2.5. Функция, реализующая модель "Вход х - Выход у" + +```py +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) + +plt.xlabel("t, время") +plt.ylabel("Выходной синал") +plt.grid(True) +pylab.plot(spsy, label = "Выходной сигнал", color='purple') +pylab.show() +``` +![График процесса](Ris1.png) + +## 3. Функции как объекты +### 3.1. Получение списка атрибутов объекта-функции + +```py +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. Сохранение ссылки на объект-функцию в другой переменной +```py +fnkt=sravnenie # сохраняем ссылку на функцию sravnenie в переменной fnkt +v=16fnkt(v,23) +16 меньше 23 +``` +### 3.3. Альтернативное определение функции в программе + +```py +if typ_fun==1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + +func() +Функция 2 # так как значение не равно 1, то выполняется else +``` +## 4. Аргументы функции +### 4.1. Использование функции в качестве аргумента другой функции +```py +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. Обязательные и необязательные аргументы + +```py +def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1 + """Вычисление логистической функции""" + import math + return b/(1+math.exp(-a)) + +logistfun(0.7) #Вычисление со значением b по умолчанию +0.6681877721681662 +logistfun(0.7,2) #Вычисление с заданным значением b1.3363755443363323 +``` + +### 4.3. Обращение к функции с произвольным (непозиционным) расположением аргументов + +```py +logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +0.34498724056380625 +``` +### 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже + +```py +b1234=[b1,b2,b3,b4] # Список списков из п.2.4qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку +b1234 +[[1, 2], [-1, -2], [0, 2], [-1, -1]] +qq +[1, 2, -1, -2, 0, 2, -1, -1] +``` + +### 4.5. Значения аргументов функции, содержащиеся в словаре + +```py +dic4={"a1":1,"a2":2,"a3":3,"a4":4} +qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки +``` + +### 4.6. Смешанные ссылки + +```py +e1=(-1,6);dd2={'a3':3,'a4':9} +qqqq=slozh(*e1,**dd2) +qqqq +17 +``` +### 4.7. Переменное число аргументов у функции + +```py +def func4(*kort7): + """Произвольное число аргументов в составе кортежа""" + smm=0 + for elt in kort7: + smm+=elt + return smm +func4(-1,2) #Обращение к функции с 2 аргументами +1 +func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами +10 +``` +### 4.8. Комбинация аргументов + +```py +def func4(a,b=7,*kort7): # Аргументы: a-позиционный, b- по умолчанию + кортеж + """Кортеж - сборка аргументов - должен быть последним!""" + smm=0 + for elt in kort7: + smm+=elt + return a*smm+b +func4(-1,2,0,3,6) +-7 + +def func5(a, b = 7, **slov7): # со словарем + """Словарь - сборка аргументов - должен быть последним!""" + smm = 0 + for elt in slov7.items(): + smm = sum (slov7.values()) + return a * smm + b + +numbers = {"a1": 1, "a2": 2, "a3": 3, "a4": 4} +func5(1,2,**numbers) +12 +``` +### 4.9. Изменение значений объектов, используемых в качестве аргументов функции + +```py +a=90 # Числовой объект – не изменяемый тип +def func3(b): + b=5*b+67 + +func3(a) +a # значение не изменилось +90 +``` +Пример со списком + +```py +sps1=[1,2,3,4] #Список – изменяемый тип объекта +def func2(sps): + sps[1]=99 + +func2(sps1) +print(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. Анонимные функции(лямбда-функции) +Функции без имени +```py +anfun1=lambda: 1.5+math.log10(17.23) #Анонимная функция без аргументов +anfun1() # Обращение к объекту-функции +2.7362852774480286 + +anfun2=lambda a,b: a+math.log10(b) #Анонимная функция с 2 аргументами +anfun2(17,234) +19.369215857410143 + +anfun3=lambda a,b=234: a+math.log10(b) #Функция с необязательным вторым аргументом +anfun3(100) +102.36921585741014 +``` +### 5.2. Функции-генераторы +Это – такие функции, которые используются в итерационных процессах, позволяя на каждой +итерации получать одно из значений. +```py +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 +``` +метод __next__, активирует очередную итерацию выполнения функции + +```py +alp=func5(7,3) +print(alp.__next__()) +1 +print(alp.__next__()) +4 +print(alp.__next__()) +7 +print(alp.__next__()) +Traceback (most recent call last): # Функция уже выполнила последнюю итерацию, вернулась ошибка + File "", line 1, in + print(alp.__next__()) +StopIteration +``` +## 6. Локализация объектов в функциях +Все объекты могут быть определены глобально или локально. Глобально определены вне функций + +### 6.1. Примеры на локализацию объектов +Пример 1 Одноименные локальный и глобальный объекты: +```py +glb=10def func7(arg): + loc1=15 + glb=8 + return loc1*arg + +res=func7(glb)res +150 +glb # глобальное значение не изменилось +10 +``` +Пример 2 Ошибка в использовании локального объекта + +```py +def func8(arg): + loc1=15 + print(glb) + glb=8 + return loc1*arg + +res=func8(glb) +Traceback (most recent call last): # ошибка происходит так как вывод функции осуществляется в 3 строке функции, а ее объявляение в 4 + File "", line 1, in + res=func8(glb) + File "", line 3, in func8 + print(glb) +UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value +``` +Пример 3 Переопределение локализации объекта +```py +glb=11 +def func7(arg): + loc1=15 + global glb + print(glb) + glb=8 + return loc1*arg + +res=func7(glb) +11 +glb # значение изменится так как мы обратились к глобальной переменной внутри функции +8 +``` +### 6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins + +```py +globals().keys() #Перечень глобальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'numbers', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'b']) +locals().keys() #Перечень локальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'numbers', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'b']) +``` +Сейчас они не отличаются, так как эти методы возвращают объекты на уровне вызова этих функций. + +```py +hh=func8(glb) +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'numbers', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'b']) # глобальные переменные +dict_keys(['arg', 'loc1', 'glb']) # локальные переменные +'glb' in globals().keys() +True +``` +### 6.3. Локализация объектов при использовании вложенных функций + +```py +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', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'numbers', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'b', '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', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'numbers', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'b', 'hh', 'func9']) +``` + +### 6.4. Моделирование системы + +```py +znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=1, 4, 6, 8, 0.1, 100, 77 +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]) +import math +vhod=[]for i in range(N): # реализация входного сигнала + vhod.append(A*math.sin((2*i*math.pi)/F)) + +vhod +[0.0, 0.006279051952931338, 0.012533323356430426, 0.01873813145857246, 0.02486898871648548, 0.03090169943749474, 0.03681245526846779, 0.042577929156507266, 0.04817536741017153, 0.05358267949789967, 0.058778525229247314, 0.06374239897486897, 0.06845471059286887, 0.07289686274214116, 0.07705132427757894, 0.08090169943749474, 0.08443279255020152, 0.08763066800438638, 0.09048270524660196, 0.09297764858882514, 0.09510565162951536, 0.09685831611286311, 0.09822872507286887, 0.09921147013144778, 0.09980267284282716, 0.1, 0.09980267284282716, 0.0992114701314478, 0.09822872507286888, 0.09685831611286311, 0.09510565162951537, 0.09297764858882515, 0.09048270524660196, 0.08763066800438635, 0.0844327925502015, 0.08090169943749476, 0.07705132427757894, 0.07289686274214115, 0.06845471059286888, 0.06374239897486898, 0.05877852522924733, 0.0535826794978997, 0.048175367410171525, 0.042577929156507294, 0.03681245526846782, 0.030901699437494753, 0.024868988716485525, 0.01873813145857246, 0.012533323356430454, 0.006279051952931359, 1.2246467991473533e-17, -0.006279051952931335, -0.01253332335643043, -0.018738131458572477, -0.02486898871648546, -0.03090169943749473, -0.03681245526846779, -0.04257792915650723, -0.04817536741017154, -0.053582679497899646, -0.05877852522924727, -0.06374239897486897, -0.06845471059286884, -0.07289686274214116, -0.07705132427757894, -0.08090169943749474, -0.08443279255020153, -0.08763066800438636, -0.09048270524660199, -0.09297764858882515, -0.09510565162951536, -0.09685831611286312, -0.09822872507286888, -0.09921147013144778, -0.09980267284282716, -0.1, -0.09980267284282716] +``` +Функции реализующие компоненты системы + +```py +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 +``` +Соединение компонент в соответствии с заданием + +```py +yi1=0;yin1=0;yi2=0 +vyhod=[] +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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5141467180616637, 2.436597981398414, 0, -23.648551283064812, -14.586132260625703, 32.08584980450739, 89.54211200549014, 25.7748383079563, -159.50156906660678, -269.78397091031354, 10.068957187950126, 609.1466943956274, 710.2274755410508, -432.96310970489685, -2071.215944848495, -1597.6603885543427, 2476.1333543804712, 6477.956582202103, 2626.2544178282487, -10653.374481183546, -18710.49654358021, -114.61846653968969, 39934.80067535607, 49244.49063253727, -25137.392758059512, -136326.86476806158, -113347.77120772432, 152977.09900234317, 430425.27047852875, 200239.35715241256, -676334.6538246117, -1258436.7595393702, -94814.83077922332, 2579157.721342821, 3366440.70542351, -1395363.2125185598, -8922019.998095734, -7954112.681058888, 9354374.734397378, 28510095.7464239, 14931466.339167053, -42752396.61128703, -84417589.66346069, -11966716.801496733, 166137062.55300295, 229398711.23742872, -74491804.49954477, -582713905.5745344, -555144565.8307699, 567231399.1647252, 1884775004.5638165, 1096722694.409165, -2691873575.07944] +``` +## 7. Закончила сеанс работы с IDLE +