Главная страница

Методичка. Методические указания по ПО АС_очники. Методические указания к проведению занятий по дисциплине " Программное обеспечение автоматизированных систем" Москва 2018


Скачать 0.59 Mb.
НазваниеМетодические указания к проведению занятий по дисциплине " Программное обеспечение автоматизированных систем" Москва 2018
АнкорМетодичка
Дата06.09.2022
Размер0.59 Mb.
Формат файлаdoc
Имя файлаМетодические указания по ПО АС_очники.doc
ТипМетодические указания
#663666
страница8 из 11
1   2   3   4   5   6   7   8   9   10   11

Модуль 3 Разработка программ на языке Python

Тема 7. Создание пользовательских функций



Цель работы: получение навыков создания пользовательских функций для использования в программах на Python.

  1. Запустите интерактивную оболочку IDLE. Откройте окно текстового редактора. В первой строке напишите комментарий с текстом: « Тема 7 <ФИО>». С помощью функции chdir сделайте рабочий каталог текущим. Сохраните содержимое окна редактора в файле протокола в своем рабочем каталоге. В ходе выполнения дальнейшей работы все корректно выполненные инструкции и их результаты записывайте в этот текстовый файл.


Пользовательская функция – это совокупность инструкций, которая выполняется при обращении к функции из любого места программы. В виде функции оформляются инструкции, которые могут многократно потребоваться при выполнении данной программы или могут потребоваться в других программах. Аргументы функции – это ссылки на объекты-источники данных, которые используются при её выполнении. Возвращаемые данные – это результаты вычисления функции, передаваемые в ту часть программы, из которой была вызвана функция.


  1. Создание пользовательской функции.

Создание функции предполагает выполнение трех операций: формирование функции, ее сохранение и использование.

В общем виде функция в языке Python представляется так:

def <Имя функции>([<Список аргументов >]):

[<отступы><Комментарий по назначению функции>]

<отступы><Блок инструкций – тело функции>

[<отступы>return <Значение или вычисляемое выражение>]

Именование функций должно производиться по тем же правилам задания имен: совокупность латинских букв, цифр, знаков подчеркивания. Имя должно начинаться с буквы или знака подчеркивания и не должно совпадать с зарезервированными идентификаторами или ключевыми словами, а также не должно содержать пробелов. Желательно использовать мнемонические имена, отражающие назначение функции. Функция считается оконченной, если в очередной строке нет отступов или их число меньше, чем в отступах в функции. Если при выполнении функции будет выполнена инструкция return, то выполнение функции прекращается с возвратом значения, следующего за этой инструкцией. Однако наличие этой инструкции в функции является необязательным.

2.1. Первый пример: функция – без аргументов.

def uspeh():

"""Подтверждение успеха операции"""

print('Выполнено успешно!')
Проверьте функцию, запустив ее из командной строки:

uspeh()

С помощью инструкции

dir()

убедитесь, что имя функции появилось в пространстве имен. А теперь введите инструкцию

help(uspeh)

Какая информация выведена в качестве помощи по созданной функции? Сделайте вывод о том, как следует организовывать эту помощь.
2.2. Пример функции с аргументами.

def sravnenie(a,b):

"""Сравнение a и b"""

if a>b:

print('a больше b')

elif a

print('a меньше b')

else:

print('a равно b')

n,m=16,5;sravnenie(n,m)

Проверьте, можно ли эту функцию выполнить с аргументами-символьными строками?
2.3. Пример функции, содержащей return.

def logistfun(b,a):

"""Вычисление логистической функции"""

import math

return a/(1+math.exp(-b))
v,w=1,0.7;z=logistfun(w,v)

2.4. Сложение для разных типов аргументов

def slozh(a1,a2,a3,a4):

""" Сложение значений четырех аргументов"""

return a1+a2+a3+a4

slozh(1,2,3,4) # Сложение чисел

slozh('1','2','3','4') # Сложение строк

b1=[1,2];b2=[-1,-2];b3=[0,2];b4=[-1,-1]

q=slozh(b1,b2,b3,b4) #Сложение списков

Изучите возможность применения этой функции для сложения кортежей, словарей и множеств.
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)
Представьте выходной сигнал в виде графика.


  1. Функции как объекты.

3.1. Получение списка атрибутов объекта-функции.

dir(inerz)

Пример использования атрибута функции:

inerz.__doc__

Обратите внимание на то, откуда взята информация, выведенная по данной инструкции.

Для сравнения, введите инструкцию

help(inerz)
3.2. Сохранение ссылки на объект-функцию в другой переменной.

fnkt=sravnenie

v=16

fnkt(v,23)

Какая операция выполнена с помощью этой функции?
3.3. Возможность альтернативного определения функции в программе.

typ_fun=8

if typ_fun==1:

def func():

print('Функция 1')

else:

def func():

print('Функция 2')
func()

Какое сообщение и почему выводится при выполнении этих инструкций?


  1. Аргументы функции.

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)
4.2. Обязательные и необязательные аргументы.

Переопределите вычисление логистической функции следующим образом:

def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1

"""Вычисление логистической функции"""

import math

return b/(1+math.exp(-a))
logistfun(0.7) #Вычисление со значением b по умолчанию

logistfun(0.7,2) #Вычисление с заданным значением b
4.3. Возможность обращения к функции с произвольным (непозиционным) расположением аргументов. При этом надо в обращении к функции указывать имена аргументов:

logistfun(b=0.5,a=0.8) # Ссылки на аргументы поменялись местами
4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.

b1234=[b1,b2,b3,b4] # Список списков из п.2.4

qq=slozh(*b1234) #Перед ссылкой на список или кортеж надо ставить звездочку
4.5. Пример со значениями аргументов функции, содержащимися в словаре

dic4={"a1":1,"a2":2,"a3":3,"a4":4}

qqq=slozh(**dic4) #Перед ссылкой на словарь надо ставить две звездочки
4.6. Смешанные ссылки

e1=(-1,6);dd2={'a3':3,'a4':9}

qqqq=slozh(*e1,**dd2)
4.7. Переменное число аргументов у функции.

Пример.

def func4(*kort7):

"""Произвольное число аргументов в составе кортежа"""

smm=0

for elt in kort7:

smm+=elt

return smm
func4(-1,2) #Обращение к функции с 2 аргументами

func4(-1,2,0,3,6) #Обращение к функции с 5 аргументами
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)

Подобным же образом в списке аргументов функции также можно использовать словарь, предварив его имя двумя звездочками – изучите самостоятельно.
4.9. Изменение значений объектов, используемых в качестве аргументов функции.

Такое изменение возможно только у объектов изменяемого типа.

Пример.

Пример с числовым объектом.

a=90 # Числовой объект – не изменяемый тип

def func3(b):

b=5*b+67
func3(a)

Изменилось ли значение a?
Пример со списком.

sps1=[1,2,3,4] #Список – изменяемый тип объекта

def func2(sps):

sps[1]=99

func2(sps1)

print(sps1)

Изменился ли список sps1?
Попробуйте применить эту функцию к кортежу.

kort=(1,2,3,4) #Кортеж – неизменяемый тип объекта

func2(kort)

Изменился ли кортеж?


  1. Специальные типы пользовательских функций

5.1. Анонимные функции.

Анонимные функции или по-другому их называют лямбда-функциями – это функции без имени (поэтому их и называют анонимными), определяемые по следующей схеме:

lambda [<Аргумент1>[,<Аргумент2>,…]]:<Возвращаемое значение или выражение>

Анонимная функция возвращает ссылку на объект-функцию, которую можно присвоить другому объекту.

Примеры.

anfun1=lambda: 1.5+math.log10(17.23) #Анонимная функция без аргументов

anfun1() # Обращение к объекту-функции

anfun2=lambda a,b : a+math.log10(b) #Анонимная функция с 2 аргументами

anfun2(17,234)

anfun3=lambda a,b=234: a+math.log10(b) #Функция с необязательным вторым аргументом

anfun3(100)
5.2. Функции-генераторы.

Это – такие функции, которые используются в итерационных процессах, позволяя на каждой итерации получать одно из значений. Для этого в функцию включают инструкцию yield приостанавливающую её выполнение и возвращающую очередное значение.

Пример.

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)

Здесь при каждом обращении к функции будет генерироваться только одно очередное значение.

При программировании задач у таких функций часто используют метод __next__, активирующий очередную итерацию выполнения функции. Например,

alp=func5(7,3)

print(alp.__next__())

print(alp.__next__())

print(alp.__next__())

Что будет, если ещё раз выполнить такую инструкцию? Объясните результат.

5.3. Декораторы функций.

Декораторы позволяют произвести некоторые заданные действия перед исполнением основной функции. Декоратор оформляется как функция, у которой аргументом является ссылка на декорируемую функцию, а в качестве возвращаемого значения – ссылка на эту же функцию или какую-то другую. Фактически, с использованием декораторов можно модифицировать выполнение декорируемой функции.

Пример.

def func_dec(ff):

print("Функция:",ff) #Сообщение о том, какая функция будет выполняться дальше

return ff
@func_dec #Ссылка на декоратор - после знака @ перед основной функцией

def func6(aa): #Описание основной (декорируемой) функции

return math.log10(aa)+12*math.sin(aa) #Здесь что-то вычисляется
bb=1234

func_dec(func6)(bb) #Основная функция вызвана через декоратор с аргументом bb


  1. Локализация объектов в функциях.

По отношению к функции все объекты подразделяются на локальные и глобальные. Локальными являются объекты, которые создаются в функциях присваиванием им некоторых значений. Они записываются в пространство имен, создаваемое в функции. Глобальные – это те объекты, значения которых заданы вне функции. Они определены в пространствах имен вне функции.

Локализация может быть переопределена путем прямого объявления объектов как глобальных с помощью дескриптора global.
6.1. Пример 1. Одноименные локальный и глобальный объекты.

glb=10

def func7(arg):

loc1=15

glb=8

return loc1*arg
res=func7(glb)

Значения каких объектов использовались при получении результата? Изменилось ли значение глобального объекта glb после завершения работы функции?
6.2. Пример 2. Ошибка в использовании локального объекта.

def func8(arg):

loc1=15

print(glb)

glb=8

return loc1*arg
res=func8(glb)

Объясните причину возникновения ошибки.
6.3. Пример 3. Переопределение локализации объекта

glb=11

def func7(arg):

loc1=15

global glb

print(glb)

glb=8

return loc1*arg
res=func7(glb)

А теперь, изменилось ли значение глобального объекта glb после завершения работы функции?
6.4. Выявление локализации объекта с помощью функций locals и globals из builtins.

Эти функции возвращают словари, ключами в которых будут имена объектов, являющихся, соответственно, локальными или глобальными на уровне вызова этих функций.

Примеры.

В командной строке введите инструкции

globals().keys() #Перечень глобальных объектов

locals().keys() #Перечень локальных объектов

Есть ли различия в этих перечнях? Объясните ответ.

def func8(arg):

loc1=15

glb=8

print(globals().keys()) #Перечень глобальных объектов «изнутри» функции

print(locals().keys()) #Перечень локальных объектов «изнутри» функции

return loc1*arg
hh=func8(glb)

Объясните полученные списки объектов.

Проверьте наличие объекта glb в перечне глобальных объектов:

'glb' in globals().keys()
6.5. Локализация объектов при использовании вложенных функций.

Пример.

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)

Сделайте анализ выведенных на экран сведений о локализации объектов.


  1. Большой пример – моделирование системы, состоящей из последовательного соединения реального двигателя, охваченного отрицательной обратной связью с тахогенератором в ней, и нелинейного звена типа «зона нечувствительности», при подаче на неё синусоидального входного сигнала.

Реальный двигатель: последовательное соединение усилителя с коэффициентом усиления k1,интегратора: y(t)=x(t)+y(t-1), и инерционного звена: y(t)=(x(t)+T*y(t-1)) / (T+1) с постоянной времени Т.

Тахогенератор: последовательное соединение усилителя с коэффициентом усиления k2 и интегратора: y(t)=x(t)+y(t-1).

Нелинейное звено типа «зона нечувствительности»: y=0 при -xm≤ x ≤xm, y=x-xm при x>xm, y=x+xm при x<-xm.

Таким образом, система характеризуется параметрами: k1, T, k2, xm. Входной сигнал характеризуется параметрами: A (амплитуда синусоиды) и F (период синусоиды).

Еще один параметр задачи : N – время подачи сигнала.

Решение задачи:

  • Запросите и введите параметры задачи:

znach=input('k1,T,k2,Xm,A,F,N=').split(',')

В ответ на запрос введите некоторые подходящие по смыслу значения параметров.

Для удобства распакуйте эти значения из списка в отдельные объекты-числовые переменные по образцу:

k1=float(znach[0])

  • Сгенерируйте реализацию входного сигнала

import math

vhod=[]

for i in range(N):

vhod.append(A*math.sin((2*i*math.pi)/F))
Отобразите значения полученного сигнала в виде чисел и графика.

  • Создайте функции, рассчитывающие реакции компонент системы в один текущий момент времени.

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

#print('yt=',ytt)

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)

Отобразите выходной сигнал в виде графика.


  1. Сохраните созданный текстовый файл протокола в своем рабочем каталоге. Закончите сеанс работы с IDLE.


Общее контрольное задание.

  • Разработайте функцию, реализующую для момента времени t расчет выхода y(t) для колебательного звена при текущем входном сигнале x(t),

y(t)=(x(t)+(a+b)*y(t-1)-0.5*b*y(t-2))/(1+a+0.5*b)

Значения a, b, y(t-1), y(t-2) должны быть аргументами функции. Проверьте работу функции при входном сигнале в виде единичного скачка (x(0)=0, x(1)=1,x(2)=1,…) – всего 100 отсчетов времени t, и при параметрах a=0.1, b=10.

  • Разработайте и проверьте функцию, реализующую расчет гистограммы по выборке случайной величины с каким-то распределением. Гистограмма при выводе на экран представляется в виде таблицы: границы интервала, число элементов выборки в интервале. Аргументы функции: выборка, число интервалов разбиения диапазона изменения случайной величины. Возвращаемый результат функции: список с числами элементов выборки в интервалах разбиения.

  • Разработайте и проверьте анонимную функцию, вычисляющую значение оценки отклика Y линейной регрессии при значении переменной Х

Y=b1+b2*X

и имеющую аргументы b1, b2 и X.
Индивидуальные контрольные задания по теме

  1. Разработайте функцию с 5 аргументами, создающую последовательность отсчетов синусоидального сигнала с заданными параметрами: амплитуда, период, фаза, число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.

  2. Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, нормально распределенного сигнала типа белого шума с заданными параметрами: математическое ожидание и дисперсия, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - пробел в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.

  3. Разработайте функцию с 4 аргументами, создающую последовательность отсчетов случайного, равномерно распределенного сигнала типа белого шума с заданными параметрами: границы диапазона изменения, число отсчетов (аргументы функции). Сигнал должен быть записан построчно, по 3 элемента в строке с разделителем - запятая в текстовый файл с заданным именем (4-й аргумент функции), а также возвращен в вызывающую программу в виде списка.

  4. Разработайте функцию с 5 аргументами, создающую отсчеты сигнала в виде последовательности импульсов с заданными параметрами: амплитуда, продолжительность импульса, период (импульс + пауза), число отсчетов (аргументы функции). Сигнал должен быть записан в виде столбца в текстовый файл с заданным именем (5-й аргумент функции), а также возвращен в вызывающую программу в виде списка.

  5. Разработайте функцию с 2 аргументами, реализующую расчет выходного сигнала y(t) нелинейного звена типа «зона нечувствительности». Аргументы функции: x(t) (значение входного сигнала) и ширина зоны нечувствительности В. Вид функции:

y(t)=0 при -B≤x(t)≤B, y(t)=x(t) - B при x(t)>B, y(t)=x(t)+B при x(t)<-B.

Получите выходной сигнал y(t) при подаче на вход случайного нормально распределенного сигнала x(t) (математическое ожидание равно 0.5, дисперсия равна 25, белый шум) не менее чем со 100 отсчетами времени при значении В=4.5.

  1. Разработайте функцию c 3 аргументами, реализующую расчет выходного сигнала y(t) нелинейного звена типа «ограничение» по формуле:

y(t)=B, если x(t)>A; y(t)= 2B*x(t)/A-B*x(t)2 /A2 , если 0≤ x(t)≤А; y(t)= 2B*x(t)/A+B*x(t)2 /A2 , если -A≤ x(t)<0; y(t)=-B, если x(t)<-A,

где A,B – заданные параметры звена (аргументы функции), x(t) – значение входного сигнала (аргумент функции). Получите выходной сигнал y(t) при подаче на вход случайного равномерно распределенного сигнала x(t) (диапазон значений от -5 до 12, белый шум) с не менее чем 100 отсчетами времени при разных значениях A, В.

  1. Разработайте функцию, моделирующую звено запаздывания с параметром Т – время запаздывания (аргумент функции) при заданном входном сигнале x(t) (аргумент функции):

y(t)=x(t-T)

где y – выходной сигнал.

Проверьте работу функции с использованием x(t) – последовательность импульсов с единичной амплитудой, продолжительностью импульсов в 2 отсчета и периодом, равным 5 отсчетам.

  1. Разработайте анонимную функцию, вычисляющую значение a*sin(x)/x, где a,x – аргументы функции. Рассчитайте эту функцию в интервале значений х: 0

  2. Разработайте функцию, реализующую расчет выходного сигнала y(t) инерционного звена по формуле:

y(t)= (x(t)+T1*y(t-1))/(T1+1),

где Т1 – заданный параметр – постоянная времени, x(t) – значение входного сигнала, y(t-1) – значение выхода в предыдущий момент времени (аргументы функции). Посмотрите, как меняется отклик при подаче на вход случайного равномерно распределенного сигнала x(t) (диапазон значений от -5 до 12, белый шум) с не менее чем 100 отсчетами времени.

  1. Разработайте функцию c 3 аргументами, реализующую запись заданной последовательности – списка или кортежа (аргумент функции) в текстовый файл с заданным именем (аргумент функции) с заданным числом (аргумент функции) элементов на строке файла, разделенных запятыми. Проверьте её на записи в файл кортежа с 50 случайными, нормально распределенными числами с математическим ожиданием 23 и дисперсией 144.

  2. Разработайте анонимную функцию с 5 аргументами: х, a,b,c,d, вычисляющую значение a/(1+exp(-b-c*x-d*x2)). Рассчитайте значения этой функции в диапазоне значений входного параметра х: -20 ≤ x ≤ 20 с шагом 2 при некоторых положительных значениях параметров a,b,c,d. Обеспечьте запись рассчитанных значений в текстовый файл по три значения на строке, разделенных пробелами.

  3. Разработайте анонимную функцию с 3 аргументами: х, a, b, вычисляющую значение exp(-(x-a)2/b)/(2*π*b)1/2. Рассчитайте значения функции в диапазоне значений х от a-3*b1/2 до a+3*b1/2 с шагом 0.2*b1/2 и запишите эти значения в текстовый файл по два значения на строке, разделенных запятыми.

  4. Разработайте функцию с 3 аргументами, которая на основе заданной целочисленной последовательности (список или кортеж) – аргумент функции - формирует два текстовых файла с заданными именами (аргументы функции), причем в первый файл записывает из исходной последовательности четные значения, а во второй – нечетные. Проверьте функцию на примере кортежа с 40 случайными целыми числами.

  5. Разработайте анонимную функцию, вычисляющую значение a*sin(x)+b*cos(x+T) с параметрами х, a, b, T. Рассчитайте значения функции в диапазоне значений х от -4 до 5 с шагом 0.2 при a=2, b=-6, T=1.5 и запишите эти значения в текстовый файл по одному на строке. Представьте эти значения на графике.

  6. Разработайте функцию, которая получает символьную строку с текстом на русском языке (аргумент функции), создаёт на её основе подстроку, содержащую только согласные буквы, отображает её на экране и записывает ее в файл с заданным именем (аргумент функции). Проверьте функцию на примере строки, запрашиваемой у пользователя.

  7. Разработайте функцию с 2 аргументами, которая для заданного словаря (аргумент функции) с любыми ключами и с числовыми значениями создаёт новый словарь с теми же ключами и со значениями, равными синусам от значений из входного словаря, и записывает новый словарь в бинарный файл с заданным именем (аргумент функции). Проверьте функцию на примере двух разных входных словарей.

  8. Разработайте функцию с двумя аргументами – списками. На их основе в функции должен создаваться словарь с ключами из первого списка и со значениями – натуральными логарифмами абсолютных значений соответствующих элементов из второго списка. Полученный словарь должен записываться в бинарный файл с именем Slovar.bin. Проверьте функцию на двух примерах с разными списками.

  9. Разработайте функцию с двумя аргументами: имя некоторого объекта-последовательности и имя текстового файла вывода. Функция должна осуществлять запись указанного объекта в заданный файл вывода, причем если объект – это символьная строка, то его надо записать в файл на одной строке, если объект – список или кортеж, то каждый элемент должен записываться на одной строке файла. Проверить функцию с объектами разных классов.

  10. Разработайте функцию с аргументом – именем текстового файла с записанным в него объектом – совокупностью строк, чисел, списков и т.д. В каждой строке данные разделяются запятыми. Функция должна считывать объект из файла, формировать и возвращать список, в котором каждый элемент – это список элементов из соответствующей строки файла. Сформированный список должен возвращаться в качестве результата функции. Проверить функцию на примере нерегулярной числовой матрицы.

  11. Разработайте функцию с одним аргументом – числом элементов. Функция должна включать анонимную функцию с аргументом Х, вычисляющую от заданного входного числового аргумента X значение логистической функции: 1/(1+exp(X)). Общая функция должна создавать список с заданным в аргументе числом случайных элементов, равномерно распределенных в диапазоне от -20 до +68. После этого она должна формировать кортеж с элементами – значениями логистической функции от соответствующих элементов списка. Этот кортеж должен возвращаться, как результат функции. Проверить функцию на примере.

  12. Разработайте функцию с 4 аргументами: K, N, A, B, создающую список с K элементами – вложенными списками, содержащими по N случайных элементов, равномерно распределенных в диапазоне от A до B. Результаты работы функции: сформированный список и кортеж со средними значениями элементов созданного списка. Проверить функцию на примере.

  13. Разработайте функцию с 3 аргументами: N, V, W, создающую кортеж с заданным числом N элементов - результатов вычисления функции sin(X)/X, где Х – случайное, нормально распределенное число с математическим ожиданием V и стандартным отклонением W. Значение sin(X)/X должно вычисляться с помощью анонимной функции. Результат основной функции – созданный кортеж. Проверить эту функцию на примере.

  14. Разработайте функцию с 3 аргументами: N, D, G, создающую словарь с заданным числом N элементов: ключи - числа 1,2,…,N, значения – случайные числа, равномерно распределенные в диапазоне значений от D до G. После формирования словарь должен быть записан в бинарный файл с именем SLOV.bin. Возвращаемые результаты – созданный словарь и среднее его значений. Проверить функцию на примере.

  15. Разработайте функцию с 2 аргументами, которая для заданного списка или кортежа (аргумент функции) рассчитывает список, элементами которого являются разности двух функций, вычисляемых от соответствующих элементов входного объекта: f1(X)=1/(1+exp(X)), f2(X)=sin(X)/X. Список должен быть записан в бинарный файл SPIS.bin, а также возвращен в вызывающую программу. Вычисление элементов должно производиться с помощью двух анонимных функций. Проверить работу функции на примере.

  16. Разработайте функцию, которая по входному списку или кортежу с целочисленными элементами (аргумент функции) определяет число повторений каждого числа и формирует словарь с элементами: ключи – целые числа из входного объекта, значения – целые числа повторений значения ключа во входном объекте. Этот словарь должен возвращаться в вызывающую программу. Проверьте функцию на примере.



1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта