From b64a911ee8e5b3c31b407dfb921a29662f65016a Mon Sep 17 00:00:00 2001 From: SneguraDS Date: Mon, 13 Oct 2025 13:19:23 +0300 Subject: [PATCH] l7 --- TEMA7/Figure_1.png | Bin 0 -> 15309 bytes TEMA7/report.md | 0 TEMA7/report.py | 395 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 395 insertions(+) create mode 100644 TEMA7/Figure_1.png create mode 100644 TEMA7/report.md create mode 100644 TEMA7/report.py diff --git a/TEMA7/Figure_1.png b/TEMA7/Figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4f388df9c768e6cf8ad267a4eaa7d144bfcdbc GIT binary patch literal 15309 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 Y{>@DP7T1ssVmG9#Wpuq%^X}vS2Do#=b^rhX literal 0 HcmV?d00001 diff --git a/TEMA7/report.md b/TEMA7/report.md new file mode 100644 index 0000000..e69de29 diff --git a/TEMA7/report.py b/TEMA7/report.py new file mode 100644 index 0000000..c157e6d --- /dev/null +++ b/TEMA7/report.py @@ -0,0 +1,395 @@ +Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32 +Enter "help" below or click "Help" above for more information. +def uspeh(): + """Подтверждение успеха операции""" + print('Выполнено успешно!') + + +uspeh() +Выполнено успешно! +type(uspeh) + +dir() +['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'uspeh'] +help(uspeh) +Help on function uspeh in module __main__: + +uspeh() + Подтверждение успеха операции + +def sravnenie(a,b): + """Сравнение a и b""" + if a>b: + print(a,' больше ',b) + elif a", line 1, in + slozh(kor1, kor2, kor3) +TypeError: slozh() missing 1 required positional argument: 'a4' +s=slozh(kor1, kor2, kor3) +Traceback (most recent call last): + File "", line 1, in + s=slozh(kor1, kor2, kor3) +TypeError: slozh() missing 1 required positional argument: 'a4' +kor4= ("a" , 4, "d") +k=slozh(kor1, kor2, kor3, kor4) +k +('s', 1, 'n', 'e', 2, 'g', 'u', 3, 'r', 'a', 4, 'd') +sl1 = {"A": 1, "B": 2} +sl2 = {"B": 3, "C": 4} +sl2 = {"D": 5, "E": 6} +sl2 = {"B": 3, "C": 4} +sl3 = {"D": 5, "E": 6} +sl4 = {"F": 7, "H": 8} +sl=slozh(sl1, sl2, sl3, sl4) +Traceback (most recent call last): + File "", line 1, in + sl=slozh(sl1, sl2, sl3, sl4) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' +mn1 = {"A", "B"} +mn2 = {"C", "D"} +mn3 = {"E", "F"} +mn4 = {"H", "J"} +mn=slozh(mn1, mn2, mn3, mn4) +Traceback (most recent call last): + File "", line 1, in + mn=slozh(mn1, mn2, mn3, mn4) + File "", line 3, in slozh + return a1+a2+a3+a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' +def inerz(x,T,ypred): + """ Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства""" + y=(x+T*ypred)/(T+1) + return y + +sps=[0]+[1]*100 +spsy=[] #Заготовили список для значений выхода +TT=20 #Постоянная времени + +>>>sps=[0]+[1]*100 +>>>spsy=[] #Заготовили список для значений выхода +>>>TT=20 #Постоянная времени +>>>yy=0 #Нулевое начальное условие +SyntaxError: invalid syntax +yy=0 #Нулевое начальное условие +for xx in sps: + yy=inerz(xx,TT,yy) + spsy.append(yy) + + +import pylab +spsm = list(range(101)) +pylab.plot(spsm, spsy) +[] +pylab.show() +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 - предыдущее значение выхода устройства + +fnkt=sravnenie +v=16 +fnkt(v,23) +16 меньше 23 +typ_fun=8 +if typ_fun==1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + + +func() +Функция 2 +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 +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) #Вычисление с заданным значением b +1.3363755443363323 +logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +0.34498724056380625 +b1234=[b1,b2,b3,b4] # Список списков из п.2.4 +qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку +qq +[1, 2, -1, -2, 0, 2, -1, -1] +dic4={"a1":1,"a2":2,"a3":3,"a4":4} +qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки +qqq +10 +e1=(-1,6);dd2={'a3':3,'a4':9} +qqqq=slozh(*e1,**dd2) +qqqq +17 +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 +def func4(a,b=7,*kort7): #Аргументы: a-позиционный, b- по умолчанию + кортеж + """Кортеж - сборка аргументов - должен быть последним!""" + smm=0 + for elt in kort7: + smm+=elt + return a*smm+b +SyntaxError: inconsistent use of tabs and spaces in indentation +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(**slovar): + print(slovar) + + +func5(a=1, n=2, m=3) +{'a': 1, 'n': 2, 'm': 3} +a=90 # Числовой объект – не изменяемый тип +def func3(b): + a=5*b+67 + + +a +90 +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 +import math +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 +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 +print(alp.__next__()) +Traceback (most recent call last): + File "", line 1, in + print(alp.__next__()) +StopIteration +glb=10 +def func7(arg): + loc1=15 + glb=8 + return loc1*arg + +res=func7(glb) +res +150 +glb +10 +def func8(arg): + loc1=15 + print(glb) + glb=8 + return loc1*arg + +res=func8(glb) +Traceback (most recent call last): + 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 +glb=11 +def func7(arg): + loc1=15 + global glb + print(glb) + glb=8 + return loc1*arg + +res=func7(glb) +11 +glb +8 +res +165 +globals().keys() #Перечень глобальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor1', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +locals().keys() #Перечень локальных объектов +dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor1', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +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__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor1', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8']) +dict_keys(['arg', 'loc1', 'glb']) +'glb' in globals().keys() +True +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__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor1', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', '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__', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor1', 'kor2', 'kor3', 'kor4', 'k', 'sl1', 'sl2', 'sl3', 'sl4', 'mn1', 'mn2', 'mn3', 'mn4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'spsm', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'func5', 'a', 'func3', 'sps1', 'func2', 'kort', 'math', 'anfun1', 'anfun2', 'anfun3', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=0.5,35,0.6,5,1000,5,15 +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, 951.0565162951535, 587.7852522924733, -587.785252292473, -951.0565162951536, -2.4492935982947065e-13, 951.0565162951535, 587.7852522924734, -587.7852522924728, -951.0565162951538, -4.898587196589413e-13, 951.0565162951528, 587.7852522924736, -587.7852522924726, -951.0565162951538] +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 +... +>>> 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, 8.209118281877132, 29.104924685415277, 40.86232427117668, 38.3075414151359, 34.68635884409398, 42.90679739719954, 57.19526562043458, 60.53754513466764, 47.64611630565597, 31.742316122264157, 25.812753880749888, 24.278160244795345, 10.44509996519298, -10.518946273258612]