
Добавил:
vadikbee
ИВТ (советую зайти в "Несортированное")
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:2 лаб 3 вар / 2zad
.pyimport numpy as np
import matplotlib.pyplot as plt
from control import TransferFunction, bode_plot, stability_margins, frequency_response
# Создание передаточной функции
num = [10] # Числитель: 10
den = [1, 0.4, 11] # Знаменатель: s^2 + 0.4s + 11
sys = TransferFunction(num, den)
# Построение диаграммы Боде
plt.figure(figsize=(10, 8))
bode_plot(sys, dB=True, Hz=False, display_margins=True)
plt.title('АЧХ и ФЧХ разомкнутой системы')
# Получение данных для расчетов
omega = np.logspace(-1, 2, 1000) # Частоты от 0.1 до 100 рад/с
mag, phase, omega = frequency_response(sys, omega)
# Расчет запасов устойчивости (возвращает 6 значений)
gm, pm, sm, wg, wp, ws = stability_margins(sys)
# Вывод результатов
print("\nКосвенные показатели:")
print(f"1) Запас по амплитуде: {20*np.log10(gm):.1f} дБ")
print(f"2) Запас по фазе: {pm:.1f}°")
print(f"3) Резонансная частота: {wp:.1f} рад/с" if wp else "Резонансный пик отсутствует")
# Полоса пропускания (-3 дБ от максимума)
mag_db = 20 * np.log10(mag)
max_gain = np.max(mag_db)
cutoff_idx = np.where(mag_db >= (max_gain - 3))[0]
if cutoff_idx.size > 0:
cutoff_freq = omega[cutoff_idx[-1]]
print(f"4) Полоса пропускания: 0 < ω < {cutoff_freq:.2f} рад/с")
else:
print("4) Полоса пропускания не найдена")
plt.tight_layout()
plt.show()
Соседние файлы в папке 2 лаб 3 вар