Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

562 строки
26 KiB
Markdown

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# Отчет по теме 7
# Лазарев Данил А-01-23
## 1 Запуск интерактивной оболочки IDLE
```
import os
os.chdir("C:\\Users\\Dannyan\\OneDrive\\Рабочий стол\\python-labs\\TEMA6")
```
## 2 Изучение создания простых функций
### 2.1 Изучение создания функции без аргументов
Была создана и применена функция, организующая вывод определенного текста. Был определен класс функции и просмотрено пространство имен, в котором появилось название созданной функции.
```
def uspeh():
"""Подтверждение успеха операции"""
print('Выполнено успешно!')
uspeh()
>> Выполнено успешно!
type(uspeh)
>> <class 'function'>
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<b:
print(a, ' меньше ',b)
else:
print(a, ' равно ',b)
n,m=16,5;sravnenie(n,m)
>> 16 больше 5
n,m="16","5";sravnenie(n,m)
>> 16 меньше 5
```
### 2.3 Пример функции, содержащей return
Была создана и применена функция, реализующая возвращение результата вычисления математического выражения.
```
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 Изучение функций сложения обьектов для различных типов аргументовв
Была создана и применена функция сложения различных обьектов.
При сложении чисел, фунцкия вернула сумму, при сложении строк, списков и кортежей, функция обьединила их в один объект
В случае же словарей и множеств, результатом программы стала ошибка.
```
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) #Сложение списков
q
>> [1, 2, -1, -2, 0, 2, -1, -1]
kor1 = ("a", 1)
kor2 = ("b", 2)
kor3 = ("c", 3)
kor4 = ("d", 4)
k=slozh(kor, kor2, kor3, kor4)
k
>> ('a', 1, 'b', 2, 'c', 3, 'd', 4)
sl1 = {"A": 1, "B": 2}
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 "<pyshell#9>", line 1, in <module>
sl=slozh(sl1, sl2, sl3, sl4)
File "<pyshell#8>", line 2, 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):
Traceback (most recent call last):
File "<pyshell#14>", line 1, in <module>
mn=slozh(mn1, mn2, mn3, mn4)
File "<pyshell#8>", line 2, in slozh
return a1+a2+a3+a4
TypeError: unsupported operand type(s) for +: 'set' and 'set'
```
## 2.5 Изучение создания функции, которая создает список значений вычисленных сигналов
Была создана функция, которая вычисляет значение в соответствии с моделью некоторого устройства, далее реализован цикл, в котором созданный ранее список пополняется новыми значениями выходного сигнала
```
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)
[<matplotlib.lines.Line2D object at 0x000001E1619A6850>]
pylab.show()
```
Представим результат в виде графика:
![](Ris1.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__
>> 'Модель устройства с памятью:\n x- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства'
help(inerz)
Help on function inerz in module __main__:
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
T -постоянная времени,
ypred - предыдущее значение выхода устройства
```
### 3.2 Сохранение ссылки на объект-функцию в другой переменной
Здесь происходит присвоение функции sravnenie переменной fnkt. Функции можно передавать в переменные, как и любые другие объекты. После этого переменная fnkt ссылается на ту же самую функцию, что и sravnenie.
```
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): #Аргумент b – необязательный; значение по умолчанию=1
"""Вычисление логистической функции"""
import math
return b/(1+math.exp(-a))
logistfun(0.7) #Вычисление со значением b по умолчанию
>> 0.6681877721681662
logistfun(0.7,2) #Вычисление с заданным значением b
>> 1.3363755443363323
```
### 4.3 Изучение передачи аргументов функции в произвольном порядке
```
logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами
>>0.34498724056380625
```
### 4.4 Пример со значениями аргументов функции, содержащимися в списке или кортеже.
В данном случае '*' - оператор распаковки, благодаря ему происходит передача набора аргументов функции.
```
b1234=[b1,b2,b3,b4] # Список списков из п.2.4
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 Изучение cмешанных ссылок
```
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) #Обращение к функции с 2 аргументами
>> 1
func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами
>> 10
```
### 4.8 Комбинация аргументов
```
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=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 "<pyshell#146>", line 1, in <module>
func2(kort)
File "<pyshell#139>", line 2, in func2
sps[1]=99
TypeError: 'tuple' object does not support item assignment
```
## 5 Специальные типы пользовательских функций
Были изучены и созданы анонимные функции и функции-генераторы.
### 5.1 Анонимные функции.
Анонимные функции или по-другому их называют лямбда-функциями – это функции без имени (поэтому их и называют анонимными)
```
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 Функции-генераторы
Это – такие функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений
```
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 "<pyshell#165>", line 1, in <module>
print(alp.__next__())
StopIteration
```
## 6 Локализация объектов в функциях
По отношению к функции все объекты подразделяются на локальные и глобальные. Локальными являются объекты, которые создаются в функциях присваиванием им некоторых значений. Они записываются в пространство имен, создаваемое в функции.  Глобальные – это те объекты, значения которых заданы вне функции
### 6.1 Примеры на локализацию с глобальными и локальными обьектами
Пример 1
```
glb=10
def func7(arg):
loc1=15
glb=8
return loc1*arg
res=func7(glb)
res
>> 150
glb
>> 10
```
Обратим внимание на то, что переменная glb не претерпела изменений в результате преобразований внутри функции. В данном случае glb глобальная переменная, над которой не производилось никаких действий в основной программе.
Все изменения происходят со значением arg.Значение результата обусловлено передачей в arg именно переменной glb=10.
Пример 2
```
def func8(arg):
loc1=15
print(glb)
glb=8
return loc1*arg
res=func8(glb)
>>
Traceback (most recent call last):
File "<pyshell#178>", line 1, in <module>
res=func8(glb)
File "<pyshell#177>", line 3, in func8
print(glb)
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
```
В данном случае выведется ошибка в силу того, что на момент обращения команды print к glb, данной переменной еще не существует.
Пример 3
```
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
```
В данном случае наблюдаем изменение глобальной переменной в связи с объевлением переменной glb как глобальной. Однако результат функции будет рассчитан именно для первоначального значения переменной glb.
### 6.2 Выявление локализации объекта с помощью функций locals() и globals() из builtins
Данные функции возвращают словари, ключами в которых будут имена объектов, являющихся, соответственно, локальными или глобальными на уровне вызова этих функций.
```
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
```
В данном случае глобальные обьекты не изменятся, однако локальные объекты будут принадлежать переменной hh
## 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', '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 Изучение моделирования системы управления
Моделирование САУ
```
znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1,T,k2,Xm,A,F,N=7,5,2,9,2,0.5,100
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, -9.797174393178826e-16, -1.959434878635765e-15, -2.9391523179536475e-15, -3.91886975727153e-15, -4.898587196589413e-15, -5.878304635907295e-15, -6.858022075225178e-15, -7.83773951454306e-15, -8.817456953860943e-15, -9.797174393178826e-15, -3.919860126290071e-14, -1.175660927181459e-14, 1.5685382719271533e-14, -1.3716044150450356e-14, -4.3117471020172244e-14, -1.567547902908612e-14, 1.1766512962000004e-14, -1.7634913907721887e-14, -4.7036340777443775e-14, -1.9594348786357652e-14, 7.847643204728474e-15, -7.839720252580143e-14, -5.0955210534715306e-14, -2.351321854362918e-14, 3.928773447456944e-15, 3.1370765438543066e-14, -5.487408029198684e-14, -2.743208830090071e-14, 9.903690185413723e-18, -8.623494204034449e-14, -5.879295004925836e-14, -3.135095805817224e-14, -3.908966067086117e-15, 2.3533025924000007e-14, -6.27118198065299e-14, -3.5269827815443773e-14, -7.827835824357647e-15, -9.407268155488755e-14, -6.663068956380142e-14, -3.9188697572715304e-14, -1.254335433032452e-13, 1.5695286409456948e-14, -7.054955932107296e-14, -1.5679440505160285e-13, -1.5665575338900706e-14, -1.0191042106943061e-13, 3.9218408643271543e-14, -4.702643708725836e-14, -1.3327128281778828e-13, 7.857546894913888e-15, -7.838729883561601e-14, 6.274153087708613e-14, -2.3503314853443768e-14, -1.0974816058397367e-13, 3.138066912872848e-14, -5.486417660180142e-14, -1.4110902233233133e-13, 1.9807380370827447e-17, -8.622503835015907e-14, -1.7246988408068898e-13, -3.134105436798683e-14, -1.1758590009851672e-13, 2.3542929614185422e-14, -6.270191611634448e-14, -1.4894676184687438e-13, -7.817932134172233e-15, -9.406277786470214e-14, 4.7066051848000014e-14, -3.917879388252989e-14, -1.254236396130598e-13, 1.570519009964236e-14, -7.053965563088755e-14, -1.5678450136141745e-13, -1.5655671648715294e-14, -1.019005173792452e-13, -1.881453631097751e-13, -4.701653339707295e-14, -1.3326137912760285e-13, 7.867450585099301e-15, -7.837739514543061e-14, -1.646222408759605e-13, -2.508670866064904e-13, 1.1763541854944381e-13, 3.1390572818913897e-14, -5.485427291161601e-14, -1.4109911864214592e-13, -2.2734396437267583e-13, -3.135888101032057e-13, 5.491369505272849e-14, -3.133115067780141e-14, -1.1757599640833132e-13, -2.0382084213886122e-13, -2.900656878693911e-13, 7.843681728654309e-14, -7.80802844398682e-15, -9.405287417451672e-14, -1.8029771990504662e-13, -2.6654256563557655e-13, 1.0195993952035768e-13]
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 and 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.327992097271526, -10.579864814161954, -37.13542021354209, 33.751922812053664, 119.08719463033788, -79.40771369492599, -341.1431068516527, 158.42167861925762, 934.7526961682643, -257.3673839435987, -2501.3394829044555, 232.60386253758892, 6584.067732394343, 551.3073303432211, -17091.023735765313, -4540.941638469293, 43783.01525142554, 19770.165548493114, -110671.74259494596, -71582.46671726667, 275826.55151830014]
```
## 7 Завершение работы в IDLE
Был завершен сеанс в среде IDLE.