From ee3611056e9fc4583a6c94f9b2d7d11dee8a62b3 Mon Sep 17 00:00:00 2001 From: BushmanovAS Date: Fri, 5 Dec 2025 12:20:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=A2=D0=95=D0=9C=D0=907?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA7/figure_0.png | Bin 0 -> 15309 bytes TEMA7/figure_1.png | Bin 0 -> 13727 bytes TEMA7/figure_2.png | Bin 0 -> 14722 bytes TEMA7/figure_3.png | Bin 0 -> 14845 bytes TEMA7/report.md | 525 +++++++++++++++++++++++++++++++++++++++++++++ TEMA7/task.md | 65 ++++++ 6 files changed, 590 insertions(+) create mode 100644 TEMA7/figure_0.png create mode 100644 TEMA7/figure_1.png create mode 100644 TEMA7/figure_2.png create mode 100644 TEMA7/figure_3.png create mode 100644 TEMA7/report.md create mode 100644 TEMA7/task.md diff --git a/TEMA7/figure_0.png b/TEMA7/figure_0.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/figure_1.png b/TEMA7/figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..12e03fff8860a7ee48ccb631e8d9dde6052e19a4 GIT binary patch literal 13727 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 iYTaf2H1veBBDjfKl8*)F;y6J%A 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 literal 0 HcmV?d00001 diff --git a/TEMA7/figure_3.png b/TEMA7/figure_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4926d730c0b978d5439bede2ed99c01033b93175 GIT binary patch literal 14845 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 gzW-LS=$kk|mY=>>import os +>>>os.chdir('/Users/ArtyomBushmanov/python-labs/TEMA7') +``` + +## 2. Создание пользовательской функции. +В общем виде функция в языке Python представляется так: +def <Имя функции>([<Список аргументов >]): +[<отступы>"""<Комментарий по назначению функции>"""] +<отступы><Блок инструкций – тело функции> +[<отступы>return <Значение или вычисляемое выражение>] + +Функция считается оконченной, если в очередной строке нет отступов или их число меньше, чем в отступах в функции. Если при выполнении функции будет выполнена инструкция return, то выполнение функции прекращается с возвратом значения, следующего за этой инструкцией. Однако наличие этой инструкции в функции является необязательным. + +### 2.1. Функция – без аргументов. +```python +>>>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() + Подтверждение успеха операции +``` +Видно, что help вернуло имя функции и то описание, которое было указано в тройных кавычках при её определении. Это называется docstring или документ-строка. Они используются для написания документации. Она должна быть первой строкой внутри блока. + +### 2.2. Пример функции с аргументами. +```python +>>>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 +``` +Выполнение функции с аргументами - символьными строками: +```python +>>>sravnenie("big", "small") +big меньше small +``` +Из-за не конкретизированной функции, мы можем задать любые данные, которые можно сравнить. Если что-то нельзя сравнить, +вернется TypeError. + +### 2.3. Пример функции, содержащей return. +```python +>>>def logistfun(b, a): + """Вычисление логистической функции""" + import math + return a / (1 + math.exp(-b)) + +>>>v, w = 1, 0.7; z = logistfun(w, v) +>>>print(z) +0.6681877721681662 +``` + +### 2.4. Сложение для разных типов аргументов +```python +>>>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) #Сложение списков +>>>print(q) +[1, 2, -1, -2, 0, 2, -1, -1] +>>>slozh((1, 2), (5, 0), (-1, -3), (-6, 2)) # Сложение кортежей +(1, 2, 5, 0, -1, -3, -6, 2) +>>>slovar1 = {'a' : 1}; slovar2 = {'b' : 2}; slovar3 = {'c' : 3}; slovar4 = {'d' : 4} +>>>slozh(slovar1, slovar2, slovar3, slovar4) # Сложение словарей +Traceback (most recent call last): + File "", line 1, in + slozh(slovar1, slovar2, slovar3, slovar4) + File "", line 3, in slozh + return a1 + a2 + a3 + a4 +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' +>>>slozh({1,1,1,1}, {2}, {"abc", True, None}, {6, 6, "a"}) # Сложения множеств +Traceback (most recent call last): + File "", line 1, in + slozh({1,1,1,1}, {2}, {"abc", True, None}, {6, 6, "a"}) + File "", line 3, in slozh + return a1 + a2 + a3 + a4 +TypeError: unsupported operand type(s) for +: 'set' and 'set' +``` +Функция slozh(a1, a2, a3, a4) складывает аргументы с помощью оператора +. +Для кортежей оператор + определён, поэтому функция будет работать — кортежи просто склеиваются в один. Для словарей и множеств оператор + не определён, поэтому при попытке вызвать функцию с такими аргументами возникает ошибка TypeError. Следовательно, данная реализация функции применима для кортежей (как и для чисел, строк и списков), но не может напрямую использоваться для словарей и множеств. + +### 2.5. Функция, реализующая модель некоторого устройства, на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y: + +```python +>>>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 as plt +>>>plt.plot(spsy, label = "Выходной сигнал") +[] +>>>plt.show() +``` +![График](figure_0.png) + + +## Пункт 3. Функции как объекты. + +### Пункт 3.1. Получение списка атрибутов объекта-функции. +```python +>>>dir(inerz) +['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] +>>>inerz.__doc__ +' Модель устройства с памятью:\nx- текущее значение вх.сигнала,\nT -постоянная времени,\nypred - предыдущее значение выхода устройства' +>>>help(inerz) +Help on function inerz in module __main__: + +inerz(x, T, ypred) + Модель устройства с памятью: + x- текущее значение вх.сигнала, + T -постоянная времени, + ypred - предыдущее значение выхода устройства +``` + +### 3.2. Сохранение ссылки на объект-функцию в другой переменной. +```python +>>>fnkt = sravnenie +>>>v = 16 +>>>fnkt(v, 23) +16 меньше 23 +``` +В данном случае происходит присвоение функции sravnenie переменной fnkt. Функции можно передавать в +переменные, как и любые другие объекты. После этого переменная fnkt ссылается на ту же самую функцию, что и sravnenie. + +### 3.3. Возможность альтернативного определения функции в программе. +```python +>>>typ_fun = 8 +>>>if typ_fun == 1: + def func(): + print('Функция 1') +else: + def func(): + print('Функция 2') + +>>>func() +Функция 2 +``` + +Программа выводит сообщение "Функция 2", потому что переменная typ_fun не равна 1, и +выполняется блок else, в котором функция func определена как выводящая. Функция становится доступной только после того, как интерпретатор достигает +строки с её определением. + +## 4. Аргументы функции. + +### 4.1. Возможность использования функции в качестве аргумента другой функции. +```python +>>>def fun_arg(fff, a, b, c): + """fff-имя функции, используемой +в качестве аргумента функции fun_arg""" + return a + fff(c, b) + +>>>zz = fun_arg(logistfun, -3, 1, 0.7) +>>>print(zz) +-2.3318122278318336 +``` +Python передаёт ссылку на объект функции logistfun в переменную fff. Внутри +функции выполняется операция: a + fff(c, b), что эквивалентно -3 + logistfun(0.7, 1) + +### 4.2. Обязательные и необязательные аргументы. +```python +>>>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. Изучим возможность обращения к функции с произвольным (непозиционным) расположением аргументов. При этом надо в обращении к функции указывать имена аргументов: +```python +>>>logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами +0.34498724056380625 +``` + +### 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже. +```python +>>>b1234=[b1,b2,b3,b4] # Список списков из п.2.4 +>>>qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку +>>>print(qq) +[1, 2, -1, -2, 0, 2, -1, -1] +``` +Создается список b1234, содержащий 4 элемента: b1, b2, b3, b4. Затем Оператор * выполняет распаковку списка b1234. Вместо передачи одного аргумента (списка), передаются 4 отдельных аргумента. + +### 4.5. Пример со значениями аргументов функции, содержащимися в словаре. +```python +>>>dic4 = {"a1":1,"a2":2,"a3":3,"a4":4} +>>>qqq = slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки +>>>print(qqq) +10 +``` + +### 4.6. Смешанные ссылки. +```python +>>>e1=(-1,6);dd2={'a3':3,'a4':9} +>>>qqqq=slozh(*e1,**dd2) +>>>print(qqqq) +17 +``` + +### 4.7. Переменное число аргументов у функции. +```python +>>>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. Комбинация аргументов +```python +>>>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 +``` + +Подобным же образом в списке аргументов функции также можно использовать словарь, предварив его имя двумя звездочками: +```python +>>>def func5(a,b=7,**slovar7): #Аргументы: a-позиционный, b- по умолчанию + кортеж + """Словарь - сборка именованных аргументов!""" + smm = 0 + for key, value in slovar7.items(): + smm += value + return a * smm + b + +>>>func5(-1, 2, x=0, y=3, z=6) +-7 +``` + +### 4.9. Изменение значений объектов, используемых в качестве аргументов функции. +Такое изменение возможно только у объектов изменяемого типа. +```python +>>>a=90 # Числовой объект – не изменяемый тип +>>>def func3(b): + b = 5*b + 67 + print(b) + +>>>func3(a) +517 +>>>print(a) +90 +``` +Значени a не изменилось + +- Пример со списком: +```python +>>>sps1=[1,2,3,4] #Список – изменяемый тип объекта +>>>def func2(sps): + sps[1] = 99 + +>>>func2(sps1) +>>>print(sps1) +[1, 99, 3, 4] +``` +В отличие от предыдущего примера с переменной численного типа, список передается по ссылке, а не по значению, поэтому изменяется именно тот объект, который был передан. + +- Пример с кортежем: +```python +>>>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. Анонимные функции. +Анонимные функции или по-другому их называют лямбда-функциями – это функции без имени (поэтому их и называют анонимными), определяемые по следующей схеме: +lambda [<Аргумент1>[,<Аргумент2>,…]]:<Возвращаемое значение или выражение> +Анонимная функция возвращает ссылку на объект-функцию, которую можно присвоить другому объекту. + +```python +>>>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. Функции-генераторы. +Это – такие функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений. Для этого в функцию включают инструкцию yield приостанавливающую её выполнение и возвращающую очередное значение. + +```python +>>>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__, активирующий очередную итерацию выполнения функции. +```python +>>>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. Локализация объектов в функциях. +По отношению к функции все объекты подразделяются на локальные и глобальные. Локальными являются объекты, которые создаются в функциях присваиванием им некоторых значений. Они записываются в пространство имен, создаваемое в функции. Глобальные – это те объекты, значения которых заданы вне функции. Они определены в пространствах имен вне функции. +Локализация может быть переопределена путем прямого объявления объектов как глобальных с помощью дескриптора global. + +- Одноименные локальный и глобальный объекты: +```python +>>>def func8(arg): + locl = 15 + print(glb) + glb = 8 + return locl*arg + +>>>res = func8(glb) +Traceback (most recent call last): + File "", line 1, in + res = func8(glb) + File "", line 3, in func8 + print(glb) +UnboundLocalError: local variable 'glb' referenced before assignment +``` +Мы получили ошибку потому, что на локальную переменную glb код ссылается перед назначением. +Если переменной присваивается значение внутри функции, она считается локальной для всей функции. Даже если такое же имя есть в глобальной области, внутри функции будет создана новая локальная переменная. + + +- Переопределение локализации объекта: +```python +>>>glb = 11 +>>>def func7(arg): + locl = 15 + global glb + print(glb) + glb = 8 + return locl * arg + +>>>res = func7(glb) +11 +>>>print(res) +165 +>>>print(glb) +8 +``` +Здесь мы явно указали, что в функции имеем в виду глобальную переменную, так что она изменилась. + +### 6.2. Выявление локализации объекта с помощью функций locals() и globals() из builtins. + +Эти функции возвращают словари, ключами в которых будут имена объектов, являющихся, соответственно, локальными или глобальными на уровне вызова этих функций. + +```python +>>>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', 'slovar1', 'slovar2', 'slovar3', 'slovar4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', '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', 'glb', 'func7', 'func8', 'res']) +dict_keys(['arg', 'loc1', 'glb']) +``` +Как мы видим, перечень глобальных объектов остался без изменений, а перечень локальных объектов вывел только локальные объекты функции. + +Проверка наличие объекта glb в перечне глобальных объектов: +```python +>>>'glb' in globals().keys() +True +``` + +### 6.3. Локализация объектов при использовании вложенных функций. + +```python +>>>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', 'slovar1', 'slovar2', 'slovar3', 'slovar4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', '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', 'glb', 'func7', 'func8', 'res', 'hh', 'func9']) +locl_func9_1: dict_keys(['arg1', 'loc1', 'glb1'])# Содержит только объекты, определенные внутри func9_1, а также объект, переданный как аргумент функции + +loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb'])# Содержит все то же, что и locl_func9_1, но еще и arg3, переданный func9 и саму func9_1 +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', 'slovar1', 'slovar2', 'slovar3', 'slovar4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', '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', 'glb', 'func7', 'func8', 'res', 'hh', 'func9']) # Тоже самое, что и glob_func9_1 +``` + +### 6.4. Большой пример – моделирование системы, состоящей из последовательного соединения реального двигателя, охваченного отрицательной обратной связью с тахогенератором в ней, и нелинейного звена типа «зона нечувствительности», при подаче на неё синусоидального входного сигнала. + +```python +>>>znach=input('k1,T,k2,Xm,A,F,N=').split(',') +k1,T,k2,Xm,A,F,N=6, 5, 8, 10, 3, 0.5, 1500 +>>>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)) + +>>>print(vhod) +[0.0, -1.4695761589768238e-15, -2.9391523179536475e-15, …, 2.9174217636433927e-12, -4.033155768249364e-12, -6.979687886698152e-14, -7.0203744107597384e-12] + + +>>>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 -gran <= xtt <= gran: + ytt = 0 + elif xtt > gran: + ytt = xtt - gran + else: # 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, 27.421883254961507, -159.8455361225524, 760.8726454041447, -3488.73566888214, 15869.602621377877, -72062.25788892987, 327102.1123783949, -1484643.5574000787, 6738340.865317245,..., nan, nan, nan, nan, nan] +``` +## 7. Завершение сеанса в среде IDLE \ No newline at end of file diff --git a/TEMA7/task.md b/TEMA7/task.md new file mode 100644 index 0000000..5c0298d --- /dev/null +++ b/TEMA7/task.md @@ -0,0 +1,65 @@ +# Общее контрольное задание по теме 7 + +## Задание: +- Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. +- Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. +- Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х +Y=b1+b2*X +и имеющую аргументы b1, b2 и X. + +## Решение: +```python +# 1 +>>>def delay_signal(signal, T): + for i in range(len(signal)): + signal[i] += T + return signal + +>>>vhod_signal = [1, 2, 3.69, 4, 5.32, 6.5, 7, 8] +>>>T_zad = 3 +>>>vyhod_signal = delay_signal(vhod_signal, T_zad) +>>>print(vyhod_signal) +[4, 5, 6.6899999999999995, 7, 8.32, 9.5, 10, 11] + +# 2 +import random +import matplotlib.pyplot as plt +def histogram(data, num): + min_val, max_val = min(data), max(data) + parts = np.linspace(min_val, max_val, num + 1) + rows = [0] * num + for now in data: + for i in range(num): + if parts[i] <= now < parts[i + 1]: + rows[i] += 1 + break + if now == max_val: + rows[-1] += 1 + plt.hist(data, bins=parts) + plt.xlabel('Значения выборки') + plt.ylabel('Число элементов') + plt.title('Гистограмма выборки') + plt.show() + return rows + +sl_vel = [random.gauss(random.random(), random.random()) for _ in range(random.randint(1,50))] +intervals = 5 +output = histogram(sl_vel, intervals) +print(output) +[4, 5, 18, 17, 5] + +# 3 +>>>predict = lambda b1, b2, X: b1 + b2 * X +>>>b1 = 0.5 +>>>b2 = 0.8 +>>>X = 5 +>>>print(predict(b1, b2, X)) +4.5 +``` + +![График](figure_1.png) + +- Гистограммы для значений из методических указаний: + +![График](figure_2.png) +![График](figure_3.png) \ No newline at end of file