Основы программирования на Python Каширский / методички / Лабораторная работа № 5 2025 (2)
.pdf
Дано:
•Функция напряжения источника source_voltage(t)
•Сопротивление R, ёмкость C
•Временной интервал: от t_start до t_end с шагом dt
Формула:
Напряжение на конденсаторе вычисляется по разностной схеме: V_C(t + dt) = V_C(t) + [source_voltage(t) - V_C(t)] × dt / (R × C)
Начальное условие: V_C(0) = 0
Примеры входных напряжений:
1.Постоянное: source(t) = 1
2.Ступенька: source(t) = 0 при t < 0.5, source(t) = 1 при t ≥ 0.5
3.Линейное: source(t) = t
Требуется: Вернуть список напряжений на конденсаторе для каждого момента времени.
8. Вычисление энергии сигнала
Задача: Вычислить энергию сигнала на заданном интервале времени.
Дано:
•Функция сигнала signal_func(t)
•Интервал времени: от t_start до t_end с шагом dt
Формула:
Энергия сигнала вычисляется как: E = Σ [signal_func(tᵢ)]² × dt
Примеры сигналов:
1.Импульс: signal(t) = 1 при 0.4 ≤ t ≤ 0.6, иначе 0
2.Треугольный: signal(t) = 1 - |2t - 1|
3.Параболический: signal(t) = 4t(1 - t)
Требуется: Вернуть значение энергии сигнала.
9. Аппроксимация данных линейной моделью
Задача: Найти параметры линейной модели, наилучшим образом приближающей экспериментальные данные методом наименьших квадратов.
Дано:
•Функция data_func(i), возвращающая i-ю экспериментальную точку (xᵢ, yᵢ)
•Количество точек N
Формулы для метода наименьших квадратов:
a= (N·Σxᵢyᵢ - Σxᵢ·Σyᵢ) / (N·Σxᵢ² - (Σxᵢ)²)
b= (Σyᵢ - a·Σxᵢ) / N
где суммирование проводится по i от 0 до N-1
Примеры функций данных:
1.Идеальная прямая: data(i) = (i, i)
2.С шумом: data(i) = (i, i + 0.1·(i % 3 - 1))
3.Квадратичная зависимость: data(i) = (i, i²)
Требуется: Вернуть параметры a и b.
10. Фильтрация сигнала скользящим средним Задача: Выполнить фильтрацию сигнала с помощью фильтра скользящего среднего.
Дано:
•Функция сигнала signal_func(t)
•Размер окна фильтра M
•Временной интервал: от t_start до t_end с шагом dt
Формула:
Отфильтрованный сигнал в момент времени t: y(t) = (1/M) × Σ signal_func(t + k·dt)
где суммирование проводится по k от 0 до M-1
Примеры функций сигнала:
1.Постоянный с шумом: signal(t) = 1 + 0.1·(t - 0.5)
2.Ступенчатый: signal(t) = 0 если t < 0.5, иначе 1
3.Линейный: signal(t) = t
Требуется: Вернуть список отфильтрованных значений для каждого момента времени.
11. Расчёт автокорреляционной функции
Задача: Вычислить автокорреляционную функцию сигнала.
Дано:
•Функция сигнала signal_func(t)
•Максимальное временное смещение τ_max
•Временной интервал: от t_start до t_end с шагом dt
Формула:
Автокорреляционная функция для смещения τ: R(τ) = Σ signal_func(t) × signal_func(t + τ) × dt для τ = 0, dt, 2dt, ..., τ_max
Примеры функций сигнала:
1.Постоянный: signal(t) = 1
2.Линейный: signal(t) = t
3.Треугольный: signal(t) = 1 - |2t - 1|
Требуется: Вернуть список значений автокорреляционной функции для разных τ.
12. Моделирование системы с П-регулятором Задача: Смоделировать поведение системы с пропорциональным регулятором.
Дано:
•Функция процесса process_func(y, u), вычисляющая изменение состояния
•Желаемое значение y_desired
•Коэффициент усиления регулятора Kp
•Начальное состояние y
•Временной интервал с шагом dt
Алгоритм:
1.Вычислить ошибку: error = y_desired - y(t)
2.Вычислить управление: u(t) = Kp × error
3.Обновить состояние: y(t + dt) = y(t) + process_func(y, u) × dt
Примеры процессов:
1.Интегрирующий: dy/dt = u
2.Инерционный: dy/dt = (u - y)/T
3.Нелинейный: dy/dt = u - y²
Требуется: Вернуть список состояний системы во времени.
13. Расчёт добротности по переходной характеристике
Задача: Вычислить добротность колебательной системы по её переходной характеристике.
Дано:
•Функция переходной характеристики response_func(t)
•Временной интервал: от t_start до t_end с шагом dt
Упрощённый алгоритм:
1.Найти максимальное значение отклика A_max
2.Найти моменты времени, когда отклик достигает уровня 0.5 × A_max (пересечения с половиной амплитуды)
3.Взять первые два таких момента t и t
4.Вычислить период колебаний: T = 2 × (t - t )
5.Найти время, за которое амплитуда уменьшается в 2 раза (от A_max до 0.5 × A_max) - τ
6.Вычислить добротность: Q = π × τ / T
Формула: Q = π × τ / T
Примеры переходных характеристик:
1.Быстро затухающие: response_func(t) = (1 - t) × (1 - |2t - 1|)
2.Медленно затухающие: response_func(t) = (1 - 0.3t) × (1 - |2t - 1|)
3.Среднее затухание: response_func(t) = (1 - 0.6t) × (1 - |2t - 1|)
Требуется: Вернуть значение добротности Q.
14. Генерация оптимального импульса
Задача: Найти параметры импульса, максимизирующие заданную функцию качества.
Дано:
•Функция качества quality_func(amplitude, width), оценивающая качество импульса
•Диапазоны параметров: amplitude [A_min, A_max], width [W_min, W_max]
Метод: Перебрать все комбинации параметров в заданных диапазонах с заданным шагом.
Примеры функций качества:
1.Простая: Q(A, W) = A × W
2.С ограничением: Q(A, W) = A × (1 - |W - 0.5|)
3.Квадратичная: Q(A, W) = A² + W²
Требуется: Вернуть параметры импульса (амплитуда, длительность) с максимальным качеством.
15. Моделирование цифровой передачи
Задача: Сгенерировать сигнал для заданной битовой последовательности.
Дано:
•Функция bit_func(i), возвращающая i-й бит последовательности (0 или 1)
•Количество битов N
•Длительность одного бита T
•Амплитуда для '1': A_high, амплитуда для '0': A_low
Формула модуляции:
signal(t) = A_high если bit_func(floor(t/T)) = 1 signal(t) = A_low если bit_func(floor(t/T)) = 0
Примеры функций битов:
1.Чередующиеся: bit_func(i) = i % 2
2.Все единицы: bit_func(i) = 1
3.Блочный: bit_func(i) = 1 если i < N/2, иначе 0
Требуется: Вернуть сигнал передачи для моментов времени от 0 до N·T.
16. Расчёт коэффициента ошибок (BER)
Задача: Оценить вероятность ошибки в цифровой системе связи.
Дано:
•Функция переданных битов transmitted_bit_func(i)
•Функция принятых битов received_bit_func(i)
•Количество битов N
Формула: BER = (количество ошибочных битов) / N
Примеры функций:
1.Без ошибок: transmitted_bit_func(i) = i % 2, received_bit_func(i) = i % 2
2.С ошибками: transmitted_bit_func(i) = i % 2, received_bit_func(i) = (i + 1) % 2
3.Случайные ошибки: transmitted_bit_func(i) = i % 2, received_bit_func(i) = (i % 2) if i % 10 != 0 else 1 - (i % 2)
Требуется: Вернуть значение BER.
17. Анализ устойчивости по коэффициентам
Задача: Проверить устойчивость линейной системы по коэффициентам характеристического уравнения.
Дано:
•Функция coeff_func(i), возвращающая i-й коэффициент характеристического уравнения
Критерий устойчивости: Все коэффициенты должны быть одного знака и отличны от нуля.
Примеры функций коэффициентов:
1.Устойчивый: coeff_func(i) = 1 (все положительные)
2.Неустойчивый: coeff_func(i) = (-1)**i (чередующиеся знаки)
3.Граничный: coeff_func(i) = 1 если i < 2, иначе 0 (есть нулевые)
Требуется: Вернуть True если система устойчива, иначе False.
18. Расчёт корректирующего коэффициента
Задача: Определить коэффициент коррекции для компенсации систематической ошибки.
Дано:
•Функция измеренных значений measured_func(i)
•Функция эталонных значений reference_func(i)
•Количество измерений N
Формула:
Коэффициент коррекции: k = (Σ reference_func(i)) / (Σ measured_func(i))
Примеры функций:
1.Постоянное смещение: measured_func(i) = i + 0.1, reference_func(i) = i
2.Масштабная ошибка: measured_func(i) = 0.5*i, reference_func(i) = i
3.Смешанная ошибка: measured_func(i) = 0.8*i + 0.2, reference_func(i) = i
Требуется: Вернуть коэффициент коррекции.
19. Моделирование теплового процесса Задача: Смоделировать температуру объекта при заданной мощности нагрева.
Дано:
•Функция мощности нагрева power_func(t)
•Тепловое сопротивление R_th, тепловая ёмкость C_th
•Временной интервал: от t_start до t_end с шагом dt
•Начальная температура: T = 25°C
Формула:
T(t + dt) = T(t) + [power_func(t) - (T(t) - 25)/R_th] × dt / C_th
Примеры функций мощности:
1.Постоянная: power(t) = 10
2.Импульсная: power(t) = 20 при 0.2 ≤ t ≤ 0.4, иначе 0
3.Убывающая: power(t) = 10 × (1 - t)
Требуется: Вернуть температуру объекта во времени.
20. Расчёт эквивалентного сопротивления Задача: Вычислить эквивалентное сопротивление цепи по закону Ома.
Дано:
•Функция напряжения voltage_func(I), возвращающая напряжение на цепи для тока I
•Ток I
Формула: R = voltage_func(I) / I
Примеры функций напряжения:
1.Линейная цепь: voltage_func(I) = 10 + 2*I
2.Нелинейная: voltage_func(I) = 10 + I + 0.1*I**2
3.С насыщением: voltage_func(I) = min(20, 10 + 2*I)
Требуется: Вернуть значение сопротивления.
21. Анализ динамического диапазона
Задача: Оценить динамический диапазон системы по её передаточной характеристике.
Дано:
•Функция передачи transfer_func(V_in)
•Диапазон входных напряжений от V_min до V_max
Алгоритм:
1.Найти минимальный выход: V_out_min = transfer_func(V_min)
2.Найти максимальный выход: V_out_max = transfer_func(V_max)
3.Вычислить динамический диапазон: DR = 20 × log (V_out_max / V_out_min)
Примеры характеристик:
1.Линейная: V_out = 2 × V_in
2.Ограничивающая: V_out = min(5, max(-5, V_in))
3.Квадратичная: V_out = V_in²
Требуется: Вернуть динамический диапазон в дБ.
22. Расчёт мощности сигнала Задача: Вычислить среднюю мощность сигнала на заданном интервале.
Дано:
•Функция сигнала signal_func(t)
•Интервал времени: от t_start до t_end с шагом dt
Формула:
P = (1/T) × Σ [signal_func(tᵢ)]² × dt где T = t_end - t_start
Примеры сигналов:
1.Постоянный: signal(t) = 1
2.Треугольный: signal(t) = 1 - |2t - 1|
3.Параболический: signal(t) = 4t(1 - t)
Требуется: Вернуть среднюю мощность.
23. Генерация тестовых векторов Задача: Сгенерировать тестовые векторы по заданному правилу.
Дано:
•Функция vector_func(i, j), возвращающая j-й элемент i-го вектора
•Количество векторов M
•Длина вектора L
Алгоритм: Для каждого i от 0 до M-1 создать вектор [vector_func(i, 0), vector_func(i, 1),
..., vector_func(i, L-1)]
Примеры функций:
1.Двоичные векторы: vector_func(i, j) = (i >> j) & 1
2.Линейные: vector_func(i, j) = i + j
3.Постоянные: vector_func(i, j) = i
Требуется: Вернуть список тестовых векторов.
24. Моделирование квантователя Задача: Преобразовать аналоговый сигнал в квантованный с заданным шагом.
Дано:
•Функция аналогового сигнала analog_func(t)
•Шаг квантования
•Временной интервал: от t_start до t_end с шагом dt
Формула:
quantized(t) = round(analog_func(t) / Δ) ×
Примеры функций сигнала:
1.Линейный: analog_func(t) = t
2.Треугольный: analog_func(t) = 1 - |2t - 1|
3.Параболический: analog_func(t) = 4t(1 - t)
Требуется: Вернуть квантованный сигнал.
25. Расчёт эффективности преобразования
Задача: Вычислить эффективность преобразования энергии для различных режимов работы.
Дано:
•Функция входной мощности input_power_func(mode)
•Функция выходной мощности output_power_func(mode)
•Количество режимов N
Формула для режима i: η(i) = output_power_func(i) / input_power_func(i)
Примеры функций:
1.Линейная зависимость: input_power_func(i) = 100 + i, output_power_func(i) = 80 + 0.8*i
2.Квадратичная: input_power_func(i) = 100 + i2, output_power_func(i) = 90 + 0.7*i2
3.С насыщением: input_power_func(i) = min(150, 100 + 2*i), output_power_func(i) = min(130, 80 + 1.8*i)
Требуется: Вернуть максимальный КПД среди всех режимов.
26. Анализ чувствительности к параметрам
Задача: Оценить чувствительность выхода системы к малым изменениям параметров.
Дано:
•Функция выхода системы output_func(params), где params = [p , p ]
•Номинальные значения параметров
•Малое приращение
