|
|
|
|
@ -300,7 +300,7 @@ def func5(diap,shag):
|
|
|
|
|
""" Итератор, возвращающий значения
|
|
|
|
|
из диапазона от 1 до diap с шагом shag"""
|
|
|
|
|
for j in range(1,diap+1,shag):
|
|
|
|
|
yield j
|
|
|
|
|
yield j #делает одну итерацию
|
|
|
|
|
|
|
|
|
|
for mm in func5(7,3):
|
|
|
|
|
print(mm)
|
|
|
|
|
@ -309,7 +309,7 @@ def func5(diap,shag):
|
|
|
|
|
7
|
|
|
|
|
|
|
|
|
|
alp=func5(7,3)
|
|
|
|
|
print(alp.__next__())
|
|
|
|
|
print(alp.__next__())
|
|
|
|
|
1
|
|
|
|
|
print(alp.__next__())
|
|
|
|
|
4
|
|
|
|
|
@ -319,7 +319,7 @@ print(alp.__next__())
|
|
|
|
|
Traceback (most recent call last):
|
|
|
|
|
File "<pyshell#26>", line 1, in <module>
|
|
|
|
|
print(alp.__next__())
|
|
|
|
|
StopIteration
|
|
|
|
|
StopIteration #отработал условие и устал
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 6. Локализация объектов в функциях
|
|
|
|
|
@ -329,14 +329,14 @@ glb=10
|
|
|
|
|
def func7(arg):
|
|
|
|
|
loc1=15
|
|
|
|
|
glb=8
|
|
|
|
|
return loc1*arg
|
|
|
|
|
return loc1*arg #arg принимает значения глоб. параметра глб, поэтому на 8 не умножается
|
|
|
|
|
|
|
|
|
|
res=func7(glb);res
|
|
|
|
|
150
|
|
|
|
|
|
|
|
|
|
def func8(arg):
|
|
|
|
|
loc1=15
|
|
|
|
|
print(glb)
|
|
|
|
|
print(glb) #в момент запуска glb считается локальной переменной в функции func8, однако в момент печати не была локализована
|
|
|
|
|
glb=8
|
|
|
|
|
return loc1*arg
|
|
|
|
|
|
|
|
|
|
@ -351,13 +351,13 @@ UnboundLocalError: cannot access local variable 'glb' where it is not associated
|
|
|
|
|
glb=11
|
|
|
|
|
def func7(arg):
|
|
|
|
|
loc1=15
|
|
|
|
|
global glb
|
|
|
|
|
print(glb)
|
|
|
|
|
glb=8
|
|
|
|
|
global glb
|
|
|
|
|
print(glb) #объявлена как глобальная и выведена до присваивания ей нового значения 8, поэтому 11
|
|
|
|
|
glb=8
|
|
|
|
|
return loc1*arg
|
|
|
|
|
res=func7(glb);res
|
|
|
|
|
11
|
|
|
|
|
165
|
|
|
|
|
165 #при следующей попытке запуска функции умножит loc1 на 8, а не на 11
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins**
|
|
|
|
|
@ -401,7 +401,7 @@ def func9(arg2,arg3):
|
|
|
|
|
kk=func9(10,1)
|
|
|
|
|
glob_func9_1: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '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'])
|
|
|
|
|
loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb']) #фукнция func9 сработала позже, следовательно арг2 арг3 появились позже
|
|
|
|
|
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
@ -409,7 +409,7 @@ glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__sp
|
|
|
|
|
```python
|
|
|
|
|
import math
|
|
|
|
|
|
|
|
|
|
# Ввод параметров
|
|
|
|
|
|
|
|
|
|
znach = input('k1,T,k2,Xm,A,F,N=').split(',')
|
|
|
|
|
k1 = float(znach[0])
|
|
|
|
|
T = float(znach[1])
|
|
|
|
|
@ -419,17 +419,15 @@ A = float(znach[4])
|
|
|
|
|
F = float(znach[5])
|
|
|
|
|
N = int(znach[6])
|
|
|
|
|
|
|
|
|
|
print(f"Параметры системы: k1={k1}, T={T}, k2={k2}, Xm={Xm}")
|
|
|
|
|
print(f"Входной сигнал: A={A}, F={F}, N={N}")
|
|
|
|
|
|
|
|
|
|
# Создание входного сигнала (синусоида)
|
|
|
|
|
|
|
|
|
|
vhod = []
|
|
|
|
|
for i in range(N):
|
|
|
|
|
vhod.append(A * math.sin((2 * i * math.pi) / F))
|
|
|
|
|
|
|
|
|
|
print("Входной сигнал:", vhod[:10]) # Покажем первые 10 значений
|
|
|
|
|
print("Входной сигнал:", vhod)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Функции компонентов системы
|
|
|
|
|
def realdvig(xtt, kk1, TT, yti1, ytin1):
|
|
|
|
|
"""Модель реального двигателя"""
|
|
|
|
|
yp = kk1 * xtt # усилитель
|
|
|
|
|
@ -453,12 +451,11 @@ def nechus(xtt, gran):
|
|
|
|
|
ytt = xtt + gran
|
|
|
|
|
return ytt
|
|
|
|
|
|
|
|
|
|
# Моделирование системы
|
|
|
|
|
yi1 = 0 # состояние интегратора двигателя
|
|
|
|
|
yin1 = 0 # состояние инерционного звена
|
|
|
|
|
yi2 = 0 # состояние интегратора тахогенератора
|
|
|
|
|
|
|
|
|
|
vyhod = [] # выход системы
|
|
|
|
|
yi1 = 0
|
|
|
|
|
yin1 = 0
|
|
|
|
|
yi2 = 0
|
|
|
|
|
vyhod = []
|
|
|
|
|
|
|
|
|
|
for xt in vhod:
|
|
|
|
|
xt1 = xt - yi2 # отрицательная обратная связь
|
|
|
|
|
|