From 905deada62ded5c067ba70169e1ac8d4dd99ecfd Mon Sep 17 00:00:00 2001 From: BerezhkovDA Date: Fri, 5 Dec 2025 10:24:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA7/figure1.png | Bin 0 -> 30435 bytes TEMA7/report.md | 974 ++++++++++++++++++++++++++++++++++++++++++++++ TEMA7/task.md | 118 ++++++ 3 files changed, 1092 insertions(+) create mode 100644 TEMA7/figure1.png create mode 100644 TEMA7/report.md create mode 100644 TEMA7/task.md diff --git a/TEMA7/figure1.png b/TEMA7/figure1.png new file mode 100644 index 0000000000000000000000000000000000000000..12f6694da4b1422c264ca6c5ee0e5c2d89b08a3f GIT binary patch literal 30435 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 literal 0 HcmV?d00001 diff --git a/TEMA7/report.md b/TEMA7/report.md new file mode 100644 index 0000000..ba1bc32 --- /dev/null +++ b/TEMA7/report.md @@ -0,0 +1,974 @@ +\# Отчет по теме 7 + +Бережков Дмитрий, А-01-23 + +\## 1.Начало работы, настройка текущего каталога + +```py + +>>> import os + +>>> os.chdir('C:\\\\MPEI\\\\PO\_ASY\\\\BerezhkovGit\\\\python-labs\\\\Tema7') + +``` + +\## 2. Создание пользовательской функции + +\# 2.1 Функция без аргументов + +```py + +>>> 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() + +  Подтверждение успеха операции + +``` + +\# 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='3', '5';sravnenie(n,m) + +3 меньше 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) #Сложение списков + +>>> qq + +>>> q + +\[1, 2, -1, -2, 0, 2, -1, -1] + +``` + +```py + +>>> slozh((1, 2), (3, 4), (5, 6), (7, 8)) # Сложение кортежей + +(1, 2, 3, 4, 5, 6, 7, 8) + +>>> slozh({"A" : 1, "B" : 2}, {"C" : 3, "D" : 4}, {"E" : 5, "F" : 6}, {"G" : 7, "H" : 8}) # Сложение словарей + +Traceback (most recent call last): + +  File "", line 1, in + +  slozh({"A" : 1, "B" : 2}, {"C" : 3, "D" : 4}, {"E" : 5, "F" : 6}, {"G" : 7, "H" : 8}) # Сложение словарей + +  File "", line 3, in slozh + +  return a1+a2+a3+a4 + +TypeError: unsupported operand type(s) for +: 'dict' and 'dict' + +>>> slozh({1, 2}, {3, 4}, {5, 6}, {7, 8}) # Сложение множеств + +Traceback (most recent call last): + +  File "", line 1, in + +  slozh({1, 2}, {3, 4}, {5, 6}, {7, 8}) # Сложение множеств + +  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 + +>>> pylab.plot(spsy) + +\[] + +>>> pylab.xlabel("Время, сек.") + +Text(0.5, 0, 'Время, сек.') + +>>> pylab.ylabel("Выходной сигнал") + +Text(0, 0.5, 'Выходной сигнал') + +>>> pylab.grid(True) + +>>> pylab.show() + +``` + +Полученный график: + + + + + + + +\## 3. Функции как объекты + +\# 3.1 Атрибуты объекта-функции + +```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\_\_ # Использование атрибута объекта-функции + +'Модель устройства с памятью:\\nx- текущее значение вх.сигнала,\\n T -постоянная времени,\\n ypred - предыдущее значение выхода устройства' + +>>> 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 Возможность альтернативного определения функции в программе + +```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 + +1.3363755443363323 + +``` + +\## 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 + +>>> dic4={"a1":1,"a2":2,"a3":3,"a4":4} + +>>> 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 + +``` + +```py + +>>> def func4(a, b = 7, \*\*dict7): + +... """Словарь - сборка аргументов - должен быть последним!""" + +... smm = 0 + +... for el in dict7.values(): + +... smm += el + +... return a \* smm + b + +... + +>>> func4(-1, 2, \*\*{"a1" : 0, "a2" : 3, "a3" : 6}) + +-7 + +``` + +пример реализации аналогичной функции для произвольного количества аргументов, переданного в виде словаря + + + +\## 4.9 Изменение значений объектов с помощью функций + +```py + +>>> a=90 # Числовой объект – не изменяемый тип + +>>> def func3(b): + +... b=5\*b+67 + +... + +>>> func3(a) + +>>> 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 Анонимные функции + + + +Анонимные функции - лямбда-функциями - это функции без имени , определяемые по следующей схеме: + +lambda <Список аргументов >: <Возвращаемое значение или выражение> + +lambda \[<Список аргументов >]: <Возвращаемое значение или выражение> + +Анонимная функция возвращает ссылку на объект-функцию, которую можно присвоить другому объекту. + + + +```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 Функции-генераторы + +Функции-генераторы – функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений. Для этого в функцию включают инструкцию yield приостанавливающую её выполнение и возвращающую очередное значение. + +```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) + +>>> res + +150 + +>>> glb + +10 + +>>> + +``` + +```py + +>>> 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 + +``` + +Причина ошибки: использование локального объекта до его определения. + + + +```py + +>>> glb=11 + +>>> def func7(arg): + +... loc1=15 + +... global glb + +... print(glb) + +... glb=8 + +... return loc1\*arg + +... + +>>> res=func7(glb) + +11 + +>>> res + +165 + +>>> glb + +8 + +``` + +Значение изменилось, т.к. была переопределена локализация объекта. + + + +\# 6.2 Функции для выявления локализации объектов + +```py + +>>> 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', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', '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', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', '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']) + +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', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'pylab', 'fnkt', 'typ\_fun', 'func', 'fun\_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'func5', 'mm', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9']) + +>>> kk + +85 + +``` + +\# 6.4 Моделирование некоторой системы с помощью нескольких функций + + + +Запрос и обработка введенных параметров + + + +```py + +>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',') + +k1,T,k2,Xm,A,F,N=5,2,7,1,3,0.1,50 + +>>> 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]) + +``` + +Реализация входного сигнала + + + +```py + +>>> import math + +>>> vhod=\[] + +>>> for i in range(N): + +... vhod.append(A\*math.sin((2\*i\*math.pi)/F)) + +... + +>>> vhod + +\[0.0, -7.34788079488412e-15, -1.469576158976824e-14, -6.467620653025836e-14, -2.939152317953648e-14, -1.6463709641123863e-13, -1.2935241306051673e-13, -9.406772970979485e-14, -5.878304635907296e-14, -2.3498363008351057e-14, -3.2927419282247726e-13, -2.9398950947175535e-13, -2.5870482612103345e-13, 1.1764037039453651e-13, -1.881354594195897e-13, -4.939112892337158e-13, -1.1756609271814592e-13, -8.228140936742402e-14, -4.6996726016702114e-14, -6.938330689956763e-13, -6.585483856449545e-13, 5.885732403546355e-14, -5.879790189435107e-13, -5.526943355927888e-13, -5.174096522420669e-13, -4.82124968891345e-13, 2.3528074078907303e-13, -4.115556021899013e-13, -3.762709188391794e-13, -3.409862354884575e-13, -9.878225784674317e-13, -9.525378951167099e-13, -2.3513218543629184e-13, -8.819685284152661e-13, -1.6456281873484803e-13, -8.113991617138223e-13, -9.399345203340423e-14, -7.408297950123785e-13, -1.3876661379913526e-12, -6.702604283109348e-13, -1.317096771289909e-12, -1.9639331142688832e-12, 1.177146480709271e-13, -5.291216949080472e-13, -1.1759580378870214e-12, -4.585523282066034e-13, -1.1053886711855776e-12, -3.879829615051596e-13, -1.0348193044841338e-12, -1.6816556474631084e-12] + +``` + +Создание функций, реализующих компоненты системы + + + +```py + +>>> 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 + +``` + +Соединение компонент в соответствии с заданием и получение выходного сигнала + + + +```py + +>>> 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.6089539155942427, -13.036146587349938, 121.44813795602693, -1067.2095969566972, 9317.816619654644, -81294.22842535547, 709200.0106510338, -6186906.685120374, 53973168.988947384, -470849610.29481155, 4107584498.8890133, -35833629291.65392, 312604400058.94775, -2727089409189.0786, 23790505329708.062, -207542936412563.75, 1810557189004300.2, -1.579488751252292e+16, 1.3779099221408792e+17, -1.2020571542715681e+18, 1.0486472148269562e+19, -9.148158864631634e+19, 7.980644913680371e+20, -6.962132400705417e+21, 6.073605340072578e+22, -5.298474620106407e+23, 4.622268278560269e+24, -4.032361306008378e+25, 3.517739932494396e+26, -3.0687959965857205e+27, 2.677147557631607e+28, -2.335482401993116e+29, 2.037421521451343e+30, -1.7774000148879483e+31] + +``` + + + + + + + + + + + + + + + + + + + + + diff --git a/TEMA7/task.md b/TEMA7/task.md new file mode 100644 index 0000000..b1cfe16 --- /dev/null +++ b/TEMA7/task.md @@ -0,0 +1,118 @@ +\# Общее контрольное задание по теме 7 + +Бережков Дмитрий А-01-23 + +\## Задание: + +1\.Разработайте и проверьте функцию, реализующую для момента времени t расчет выхода y(t) для устройства задержки: на вход поступает сигнал, а на выходе повторяется этот сигнал с задержкой на заданное время Т. + + + +2\.Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения. + + + +3\.Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х + +Y=b1+b2\*X + +и имеющую аргументы b1, b2 и X. + + + +\## Решение: + +1\. + +```py + +>>> def crDelay(x,T): + +... """Функция для реализации задержки сигнала в определенный момент времени x - исходный сигнал T - заданная задержка""" + +... return\[0] \*T+x + +... + +>>> x=\[1,2,3,4] + +>>> y=crDelay(x,4) + +>>> print(y) + +\[0, 0, 0, 0, 1, 2, 3, 4] + +``` + +2\. + +```py + +>>> def raschet\_gistogrammy(viborka,kol\_int): + +... Min=min(viborka) + +... Max=max(viborka) + +... shirina\_int=(Max-Min)/kol\_int + +... x=\[0]\*kol\_int + +... for znach in viborka: + +... num\_int=int((znach-Max)/shirina\_int) + +... if num\_int == kol\_int: + +... num\_int = kol\_int - 1 + +... x\[num\_int] += 1 + +... print("Гистограмма:") + +... for i in range(kol\_int): + +... start = Max + i \* shirina\_int + +... end = Max + (i + 1) \* shirina\_int + +... print(f"\[{start:.2f}, {end:.2f}]: {x\[i]}") + +... return x + +... + +>>> import random + +>>> rand=\[random.gauss(0, 1) for \_ in range(100)] + +>>> kol\_int=5 + +res = raschet\_gistogrammy(rand, kol\_int) + +Гистограмма: + +\[2.31, 3.30]: 8 + +\[3.30, 4.30]: 5 + +\[4.30, 5.30]: 21 + +\[5.30, 6.29]: 44 + +\[6.29, 7.29]: 22 + +``` + +3\. + +```py + +anonim\_f = lambda b1, b2, X: b1 + b2 \* X + +print(anonim\_f(3,8,2)) + +19 + +``` +