Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
06.03.2025
Размер:
1.71 Кб
Скачать
import 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 вар