Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
17.01.2026
Размер:
579.28 Кб
Скачать

Формула:

Чувствительность по параметру pᵢ:

Sᵢ = [output_func(pᵢ + Δ) - output_func(pᵢ - Δ)] / (2Δ)

Примеры функций:

1.Линейная: output(p , p ) = 2p + 3p

2.Квадратичная: output(p , p ) = p ² + p ²

3.Произведение: output(p , p ) = p × p

Требуется: Вернуть список чувствительностей по всем параметрам.

27. Медианная фильтрация Задача: Выполнить медианную фильтрацию сигнала.

Дано:

Функция сигнала signal_func(t)

Размер окна фильтра M (нечётное)

Временной интервал: от t_start до t_end с шагом dt

Алгоритм: Для каждого момента времени t собрать M значений в окне [t - (M-1)dt/2, t + (M-1)dt/2], отсортировать и выбрать медиану.

Примеры функций сигнала:

1.С выбросами: signal_func(t) = t + 10 если |t - 0.5| < 0.1, иначе t

2.Ступенчатый: signal_func(t) = 0 если t < 0.5, иначе 1

3.Зашумленный: signal_func(t) = t + 0.1*(t - 0.5)

Требуется: Вернуть отфильтрованный сигнал.

28. Расчёт постоянной времени Задача: Вычислить постоянную времени системы по её переходной характеристике.

Дано:

Функция переходной характеристики response_func(t)

Установившееся значение y_steady

Временной интервал: от t_start до t_end с шагом dt

Алгоритм:

1.Найти момент времени τ, когда response_func(τ) = 0.632 × y_steady

2.Это время τ является постоянной времени системы

Примеры переходных характеристик:

1.Экспоненциальный рост: response_func(t) = 1 - (1 - t)**4

2.Быстрый переход: response_func(t) = 1 - (1 - 2*t)**4 если t < 0.5, иначе 1

3.Медленный переход: response_func(t) = 1 - (1 - 0.5*t)**4

Требуется: Вернуть постоянную времени τ.

29. Поиск точки максимальной мощности Задача: Найти напряжение, при котором мощность на нагрузке максимальна.

Дано:

Функция тока current_func(V)

Диапазон напряжений от V_min до V_max

Формула: Мощность P(V) = V × current_func(V)

Примеры характеристик:

1.Линейная: I(V) = 2 - 0.1V

2.Квадратичная: I(V) = 1 - 0.05V²

3.Ограничивающая: I(V) = max(0, 1 - 0.2V)

Требуется: Вернуть напряжение с максимальной мощностью.

30. Расчёт размаха сигнала Задача: Вычислить размах (пик-пик) сигнала.

Дано:

Функция сигнала signal_func(t)

Интервал времени: от t_start до t_end с шагом dt

Формула:

Размах = max(signal_func(t)) - min(signal_func(t))

Примеры сигналов:

1. Постоянный: signal(t) = 1

2.Треугольный: signal(t) = 1 - |2t - 1|

3.Параболический: signal(t) = 4t(1 - t)

Требуется: Вернуть размах сигнала.

Задание 5

1.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных точкой с запятой (например: 3;4.6;57.23;976.3;6;345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает сумму квадратов чисел.

2.Пользователь вводит произвольное количество пар "ключ:значение", где значение - число, разделенных запятой (например: яблоки:100, груши:200, апельсины:150). Реализуйте функцию, которая принимает именованные аргументы и возвращает сумму всех значений.

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

4.Пользователь вводит произвольное количество пар "название- >количество", разделенных точкой с запятой (например: молоко->5; хлеб->3; сыр->2). Реализуйте функцию, которая принимает именованные аргументы и возвращает название товара с максимальным количеством.

5.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных слешем (например: 3/4.6/57.23/976.3/6/345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает разность между максимальным и минимальным числом.

6.Пользователь вводит произвольное количество пар "имя|возраст", разделенных решеткой (например: Иван|25#Мария|17#Петр|30). Реализуйте функцию, которая принимает именованные аргументы и возвращает список имен людей старше

18 лет.

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

сгласной буквы.

8.Пользователь вводит произвольное количество пар "город=население", разделенных амперсандом (например: Москва=13000000&СПб=5000000&Казань=1200000). Реализуйте функцию, которая принимает именованные аргументы и возвращает среднее количество населения в городах.

9.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных знаком процента (например: 3%4.6%57.23%976.3%6%345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает список чисел, возведенных в третью степень.

10.Пользователь вводит произвольное количество пар "студент-оценка", разделенных вертикальной чертой (например: Иванов-8|Петров-5|Сидоров-9). Реализуйте функцию, которая принимает именованные аргументы и возвращает количество отличников (оценка ≥ 8).

11.Пользователь вводит строку, содержащую произвольное количество дат в формате ДД.ММ.ГГГГ, разделенных решеткой (например: 12.03.2023#15.07.2022#01.01.2024). Реализуйте функцию, которая принимает неименованные аргументы и возвращает самую раннюю дату.

12.Пользователь вводит произвольное количество пар "продукт~цена", разделенных точкой с запятой (например: молоко~50; хлеб~30; сыр~200). Реализуйте функцию, которая принимает именованные аргументы и возвращает самый дорогой продукт.

13.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных тильдой (например: 3~4.6~57.23~976.3~6~345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает среднее арифметическое положительных чисел.

14.Пользователь вводит произвольное количество пар "страна>столица", разделенных звездочкой (например: Россия>МоскваФранция>ПарижГермания>Берлин). Реализуйте функцию, которая принимает именованные аргументы и возвращает словарь столиц.

15.Пользователь вводит строку, содержащую произвольное количество emailадресов, разделенных амперсандом (например: user@mail.com&admin@site.org&test@example.net). Реализуйте функцию, которая принимает неименованные аргументы и возвращает список адресов, содержащих символ '@'.

16.Пользователь вводит произвольное количество пар "дата#температура", разделенных плюсом (например: 12.03#+5+15.03#+8+18.03#+12). Реализуйте функцию, которая принимает именованные аргументы и возвращает дату с максимальной температурой.

17.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных восклицательным знаком (например: 3!4.6!57.23!976.3!6!345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает произведение всех четных чисел.

18.Пользователь вводит произвольное количество пар "валюта@курс", разделенных восклицательным знаком (например: USD@75!EUR@85!CNY@12). Реализуйте функцию, которая принимает именованные аргументы и возвращает валюту с минимальным курсом.

19.Пользователь вводит строку, содержащую произвольное количество слов,

разделенных

плюсом

(например:

слово+текст123+программа+функция2+математика). Реализуйте функцию, которая принимает неименованные аргументы и возвращает слова, содержащие хотя бы одну цифру.

20.Пользователь вводит произвольное количество пар "автор$книга", разделенных решеткой (например: Пушкин$Руслан#Толстой$Война#Достоевский$Преступление). Реализуйте функцию, которая принимает именованные аргументы и возвращает автора с наибольшим количеством книг.

21.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных звездочкой (например: 3*4.6*57.23*976.3*6*345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает сумму модулей чисел.

22.Пользователь вводит произвольное количество пар "команда%очки", разделенных тильдой (например: Спартак%15~ЦСКА%12~Зенит%18). Реализуйте функцию, которая принимает именованные аргументы и возвращает сумму очков всех команд.

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

24.Пользователь вводит произвольное количество пар "месяц&продажи", разделенных слешем (например: январь&1000/февраль&1200/март&800). Реализуйте функцию, которая принимает именованные аргументы и возвращает месяцы с продажами выше среднего.

25.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных круглыми скобками (например: 3)(4.6)(57.23)(976.3)(6)(345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает количество простых чисел.

26.Пользователь вводит произвольное количество пар "игрок!результат", разделенных двойным дефисом (например: Иванов!85--Петров!92--Сидоров!78). Реализуйте функцию, которая принимает именованные аргументы и возвращает игрока с лучшим результатом.

27.Пользователь вводит строку, содержащую произвольное количество слов, разделенных знаком вопроса (например: топот?дед?программа?казак?функция). Реализуйте функцию, которая принимает неименованные аргументы и возвращает слова-палиндромы.

28.Пользователь вводит произвольное количество пар "предметбалл", разделенных знаком вопроса (например: математика5?физика4?химия5). Реализуйте функцию, которая принимает именованные аргументы и возвращает средний балл по всем предметам.

29.Пользователь вводит строку, содержащую произвольное количество чисел, разделенных нижним подчеркиванием (например: 3_4.6_57.23_976.3_6_345). Реализуйте функцию, которая принимает неименованные аргументы и возвращает числа, кратные 7.

30. Пользователь вводит произвольное количество пар "город_расстояние", разделенных нижним подчеркиванием (например: Москва_0_Калуга_150_Тула_170). Реализуйте функцию, которая принимает именованные аргументы и возвращает список городов в радиусе 100 км.

Задание 6

Скрипт должен содержать только объявление одной единственной функции (без вложенных функций) и вывод на экран результатов выполнения этой функции.

1.Создайте функцию, которая запоминает общее количество переданных ей чисел и возвращает текущий счётчик.

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

3.Напишите функцию, которая сохраняет максимальное из всех переданных

ей чисел.

4.Создайте функцию, которая ведёт учёт всех уникальных строк, переданных

ей ранее.

5.Реализуйте функцию-переключатель, которая возвращает поочерёдно True

иFalse при каждом вызове.

6.Напишите функцию, которая запоминает предыдущее переданное значение и возвращает его при следующем вызове.

7.Создайте функцию, которая генерирует последовательные номера, начиная с 1, при каждом вызове.

8.Реализуйте функцию, которая ограничивает количество вызовов - после N вызовов всегда возвращает None.

9.Напишите функцию, которая вычисляет скользящее среднее последних 3 переданных чисел.

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

11.Реализуйте функцию, которая считает, сколько раз было передано число больше 100.

12.Напишите функцию, которая сохраняет последние 5 переданных значений в порядке получения.

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

14.Реализуйте функцию, которая ведёт учёт ошибочных вызовов (когда передаётся None).

15.Напишите функцию, которая возвращает разницу между текущим и предыдущим переданным числом.

16.Создайте функцию, которая запоминает частоту появления каждого переданного числа.

17.Реализуйте функцию, которая сохраняет состояние "включено/выключено" между вызовами.

18.Напишите функцию, которая накапливает произведение всех переданных

чисел.

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

значений.

20.Реализуйте функцию, которая считает количество вызовов с чётными и нечётными аргументами.

21.Напишите функцию, которая сохраняет историю всех операций в виде

строк.

22.Создайте функцию, которая запоминает, была ли передана хотя бы одна отрицательное число.

23.Реализуйте функцию, которая возвращает среднее арифметическое всех переданных чисел.

24.Напишите функцию, которая сохраняет последнее успешное (не None)

значение.

25.Создайте функцию, которая ведёт учёт вызовов в течение "сессии" (до

сброса).

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

27.Напишите функцию, которая сохраняет разницу между максимальным и минимальным из переданных чисел.

28.Создайте функцию, которая считает количество последовательных вызовов

свозрастающими значениями.

29.Реализуйте функцию, которая запоминает наиболее часто встречающееся

число.

30.Напишите функцию, которая сохраняет состояние "прогресса" выполнения между вызовами.

Задание 7

1.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялся факториал от переданного целого числа в функцию и в качестве результата возвращалась разница значений текущего факториала и рассчитанного в предыдущий раз. Значение предшествующего факториала, используемое при первом вызове функции, должно задаваться через передачу параметра в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если переданное число отрицательно, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

2.Реализуйте замыкание так, чтобы при каждом вызове функции используя

рекурсию вычислялся косинус С ( ) = С−1( ) + (−1)

2

, С0( ) = 1 и в качестве

(2)!

 

 

результата возвращалось произведение текущего значения на предыдущее,

умноженное на (-1)k, где k - номер вызова функции. Значение предыдущего вычисления, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если |x| > 2π или n < 15, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

3. Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялось число Люка по формуле: = −1 + −2, 0 = 2, 1 = 1 и в качестве результата возвращалось Ln mod Lprevious. Значение предыдущего числа Люка Lprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если n меньше нуля, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

4. Реализуйте замыкание так, чтобы при каждом вызове функции проверялось, является ли простое число p числом Софи Жермен по условию 2 + 1 — простое число и в качестве результата возвращалась сумма всех найденных чисел Софи Жермен. Значение суммы, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если p < 2, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

5.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялся наибольший общий делитель (НОД) двух целых чисел a и b, передаваемых в функцию, и в качестве результата возвращалась сумма значений текущего НОД и рассчитанного в предыдущий раз НОД. Значение предшествующего НОД, используемое при первом вызове функции, должно задаваться через передачу параметра в замыкание. Рекурсивная формулировка алгоритма Евклида для нахождения НОД выглядит следующим образом: НОД(a, 0) = a; НОД(a, b) = НОД(b, ОСТАТОК(a / b)). С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если хотя бы одно из чисел отрицательно, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

6.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялось число Пелля по формуле: = 2 −1 + −2, 0 = 0, 1 = 1 и в качестве результата возвращалось √ ∙ previous. Значение предыдущего числа Пелляprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность

переданного в функцию числа: если n меньше нуля, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

7. Реализуйте замыкание так, чтобы при каждом вызове функции вычислялась гамма-функция для целых чисел по формуле Γ( ) = ( − 1)! и в качестве результата возвращалось Γ(n) × Γprevious. Значение предыдущего вычисления Γprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию

числа: если n < 1, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

8.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию производилось возведение вещественного числа a в целочисленную степень b (a и b передаются через параметры функции) и в качестве результата возвращалось old_result + power, если old_result < 1000000, и old_result – power – в

противном случае, где old_result – предыдущий возвращенный результат функцией, power – текущее значение ab. Значение предшествующего результата функции, используемое при первом вызове функции, должно задаваться через передачу параметра в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если b меньше или равно нулю, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

9.Реализуйте замыкание так, чтобы при каждом вызове функции используя

рекурсию вычислялось число Якобсталя по формуле: = −1 + 2 −2, 0 = 0, 1 = 1 и в качестве результата возвращалось Jn & Jprevious (побитовое И). Значение предыдущего числа Якобсталя Jprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если n меньше нуля, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

10. Реализуйте замыкание так, чтобы при каждом вызове функции проверялось, является ли число p простым по теореме Вильсона ( − 1)! ≡ −1(mod ) и в качестве результата возвращалось (p-1)! mod pprevious. Значение предыдущего вычисления pprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если p < 2, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

11. Рекурсивное вычисление синуса с произведением. Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялся синус по

2 +1

формуле ( ) = −1( ) + (−1) (2 +1)! , 0( ) = и в качестве результата возвращалось произведение текущего и двух предыдущих значений. Значения предшествующих вычислений, используемых при начальных вызовах функции, должны передаваться как параметры в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если |x| > 10 или n < 5, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

12. Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию производилось вычисление power = an, где a – вещественное число, n – целое число, которые передаются через параметры функции, и в качестве результата возвращалось power, если предыдущее значение power было положительным, и - power, если предыдущее значение power было отрицательным. Возведение в степень необходимо реализовать с помощью быстрого алгоритма, который использует следующие рекуррентные соотношения: an = (a2)n/2 при четном n; an = a * an-1 при

нечетном n. Значение предшествующего power, используемое при первом вызове функции, должно задаваться через передачу параметра в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если n меньше или равно нулю, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

13. Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялось число Мерсенна по формуле: = 2 ∙ −1 + 1, 0 = 0 и в качестве результата возвращалось Mn Mprevious (побитовое XOR). Значение предыдущего числа Мерсенна Mprevious, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если n меньше нуля, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

14.Реализуйте замыкание так, чтобы при каждом вызове функции проверялось, является ли число n числом Прота по условию = × 2 + 1, где < 2

ив качестве результата возвращалось k + 2m, если предыдущее число было числом Прота и 0 в противном случае. Значение предыдущего вычисления, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданного в функцию числа: если n < 3, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

15.Реализуйте замыкание так, чтобы при каждом вызове функции вычислялось число Рамсея по рекуррентной формуле ( , ) = ( − 1, ) + ( , − 1), R(m,m)=2

для всех m≥2, R(m,1)=1 для всех m≥1, R(1,n)=1 для всех n≥1, R(m,2)=m для всех m≥2, R(2,n)=n для всех n≥2, R(m,n)=R(n,m) и в качестве результата возвращалась сумма всех вычисленных чисел Рамсея. Значение суммы, используемое при первом вызове функции, должно передаваться как параметр в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если m < 1 или n < 1, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

16.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию производилось вычисление числа сочетаний Cnk, где n и k – целые числа, которые передаются через параметры функции, и в качестве результата возвращалась сумма последних трех рассчитанных значений Cnk. Вычисление числа сочетаний необходимо производить по рекуррентной формуле Cnk = Cn-1k-1 + Cn-1k. Когда k = 0 Cn0=1 для всех n≥0, когда k = n Cnn=1 для всех n≥0, когда k > n Cnk=0 для всех k>n. Значение предшествующих Cnk, используемых при начальных вызовах функции, должны задаваться через передачу параметров в замыкание. С помощью декоратора реализуйте проверку на валидность переданных в функцию чисел: если n или k меньше нуля, то в качестве результата выдать «Ошибка», в противном случае – результат выполнения функции.

17.Реализуйте замыкание так, чтобы при каждом вызове функции используя рекурсию вычислялось число Ферма по формуле = ( −1 − 1)2 + 1, 0 = 3 и в