From ad6bd31822d5d84cb9923b1a8643a900529808dd Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 20 Sep 2025 20:36:09 +0200 Subject: [PATCH] first commit report adding --- TEMA7/pic0.png | Bin 0 -> 30653 bytes TEMA7/report.md | 567 ++++++++++++++++++++++++++++++++++++++++++++++++ TEMA7/task.md | 0 3 files changed, 567 insertions(+) create mode 100644 TEMA7/pic0.png create mode 100644 TEMA7/report.md create mode 100644 TEMA7/task.md diff --git a/TEMA7/pic0.png b/TEMA7/pic0.png new file mode 100644 index 0000000000000000000000000000000000000000..4a800e07728a17cc45c844c12210f8463d05d429 GIT binary patch literal 30653 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

Xu`t&LA1*bg)X#?pzCfzah`Anylq-WrB} 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 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>>n,m=16,5;sravnenie(n,m) +16 больше 5 +>>>n,m="16","5";sravnenie(n,m) +16 меньше 5 +``` + +## 2.3 Изучение создания функции с применением return + +Была создана и применена функция, которая возвращает результат вычисления математического выражения. + +```py +>>>def logistfun(b,a): + """Вычисление логистической функции""" + import math + return a/(1+math.exp(-b)) + +>>>v,w=1,0.7;z=logistfun(w,v) +>>>z +0.6681877721681662 +``` + +## 2.4 Изучение создания функции сложения обьектов различных типов + +Была создана и применена функция сложения различных обьектов. При сложении чисел, фунцкия вернула сумму, при сложении строк, списков и кортежей, функция обьединила их в один обьект, а при передаче в виде аргументов словарей и множеств произошла ошибка. + +```py +>>>def slozh(a1,a2,a3,a4): + """ Сложение значений четырех аргументов""" + return a1+a2+a3+a4 + + +>>>slozh(1,2,3,4) # Сложение чисел +10 +>>>slozh('1','2','3','4') # Сложение строк +'1234' +>>>b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1] +>>>q=slozh(b1,b2,b3,b4) #Сложение списков +>>>kor = ("a", 8) +>>>kor2 = ("b", 9) +>>>kor3 = ("c", 10) +>>>kor4 = ("d", 11) +>>>k=slozh(kor, kor2, kor3, kor4) +>>>k +('a', 8, 'b', 9, 'c', 10, 'd', 11) +>>>sl1 = {"A": 8, "B": 9} +>>>sl2 = {"B": 10, "C": 11} +>>>sl3 = {"D": 12, "E": 13} +>>>sl4 = {"F": 14, "H": 15} +>>>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' +``` + +## 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) + + +>>>import pylab +>>>spsm = list(range(101)) +>>>pylab.plot(spsm, spsy) +[] +>>>pylab.show() +``` + +![](pic0.png) + +## 3 Изучение действий с функциями как с обьектами + +## 3.1 Изучение вывода подсказок по функции + +Были выведены атрибуты созданной функции и применен один из них, который показал описание функции, которое также было выведено с помощью функции help. + +```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__ +'Модель устройства с памятью:\n x- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства' +>>>help(inerz) +Help on function inerz in module __main__: + +inerz(x, T, ypred) + Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства +``` + +## 3.2 Изучение создания ссылки на обьект + +Была создана ссылка на функцию и уже по этой ссылке вызвана функция, которая сравнила два числа по величине. + +```py +>>>fnkt=sravnenie +>>>v=16 +>>>fnkt(v,23) +16 меньше 23 +``` + +## 3.3 Изучение применения условия if для применения разных функций + +Был создан цикл-условия, в котором при однос условии функция определяется одними инструкциями, а при другом условии - другими. И была вызвана эта функция. + +```py +>>>typ_fun=8 +>>>if typ_fun==1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + + +>>>func() +Функция 2 +``` + +## 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) #Вычисление с заданным значением b +logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +``` + +## 4.3 Изучение передачи аргументов функции в произвольном порядке + +Функция была вызвана с передачей аргументов не по порядку, а по названию аргументов. + +```py +>>>logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +0.34498724056380625 +``` + +## 4.4 Изучение передачи аргумента в виде ссылки на список + +Была вызвана функция, которой в качестве аргументов была передана ссылка на список. + +```py +>>>b1234=[b1,b2,b3,b4] # Список списков из п.2.4 +>>>qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку +>>>qq +[1, 2, -1, -2, 0, 2, -1, -1] +``` + +## 4.5 Изучение передачи аргумента в виде ссылки на словарь + +Была вызвана функция, которой в качестве аргументов была передана ссылка на словарь. В результате функция взяла в качестве аргументов значения из словаря. + + +```py +qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки +qqq +10 +``` + +## 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(**slovar): + print(slovar) +>>>func5(a=5, n=8, m=30) +{'a': 5, 'n': 8, 'm': 30} +``` + +## 4.9 Изучение изменения обьектов внутри функции + +Были созданы функции, внутри которых передаваемый аргумент как-либо был изменен, и после применения функции, просмотрено значение переменных. Числовая переменная осталась такой же (а созданная внутри функции переменная "a" не имела связи с созданной "а" вне функции), какой была задана, элемент списка изменился, а при попытке передать в функцию кортеж - выщда ошибка, так как передавалась можно сказать ссылка на кортеж и была попытка его изменить. + +```py +>>>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 +``` + +## 5 Изучение специальных типов пользовательских функций + +Были изучены и созданы анонимные функции и функции-генераторы. + +## 5.1 Изучение анонимных функций + +Были созданы и применены функции без имени без аргументов, с двумя аргументами и с необязательным аргументом. + +```py +>>>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 +``` + +## 5.2 Изучение функции-генератора + +Была создана функция-генератор, которая производит последовательность чисел. Она была выведена с помощью цикла for, а также генерирующиеся значения были выведены поотдельности, с помощью метода __next__. + +```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 +>>>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 Изучение работы с глобальными и локальными обьектами + +Была создана функция, внутри которой уже существующей в глобальном пространстве переменной было присвоено определенное новое значение. При выполнении функции глобальная переменная не изменялась. Далее внутри созданной функции была попытка напечатать переменную, которой не существует в пространстве имен функции. Также была создана функция, внутри которой была обьявлена переменная как глобальная и после этого она была изменена внутри функции, что изменило ее в глобальном пространстве. + +```py +>>>glb=10 +>>>def func7(arg): + loc1=15 + glb=8 + return loc1*arg + + +>>>res=func7(glb) #Для получения результата здесь использовалось значение переменной glb=10, то есть глобальной переменной, потому что именно она была передана в arg, который использовался в вычислениях. +>>>res +150 +>>>glb #Значение переменной не изменилось, так как это глобальная переменная и вне функции она не переопределялась. +10 +>>>def func8(arg): + loc1=15 + print(glb) + glb=8 + return loc1*arg + + +>>>res=func8(glb) #В данном случае выведется ошибка, так как до функции print внутри пространства имен функции не существует переменной 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 #В этом случае значение переменной меняется, так как внутри функции обьявляется именно глобальная переменная glb. +8 +>>>res #Однако в виде arg мы передали именно значение glb равное 11, поэтому как аргумент будет использоваться именно это значение, хоть сама переменная glb и была изменена. +165 +``` + +## 6.2 Изучение нахождения локальных и глобальных обьектов + +Были выведены локальные и глобальные обьекты в глобальном пространстве видимости и также внутри функции. + +```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', 'kor', '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', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8']) +>>>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', 'kor', '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', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', '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__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', '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', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8']) +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', 'kor', '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', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', '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', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'kor', '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', 'anfun1', 'math', 'anfun2', 'anfun3', 'mm', 'alp', 'al', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) +``` + +## 6.4 Изучение моделирования системы управления + +Была смоделирована система управления, состоящую из реального двигателя, тахогенератора и зоны нечувствительности (их модели представляются пользовательскими функциями). На вход системы подается синусоидальный сигнал, который проходит через отрицательную обратную связь. Модель реального двигателя и тахогенератора представлены интеграторами и усилителями, а зона нечувствительности ограничивает значения выходного сигнала. В результате работы программы вычисляется и выводится список значений, представляющих выходной сигнал системы. + +```py +>>>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] +``` + + +## 7 Завершение работы в IDLE + +Был завершен сеанс в среде IDLE. + + diff --git a/TEMA7/task.md b/TEMA7/task.md new file mode 100644 index 0000000..e69de29