import numpy as np import matplotlib.pyplot as plt # Параметры системы K = 2.0 # Частотный диапазон (логарифмическая шкала) omega = np.logspace(-1, 2, 500) # от 0.1 до 100 рад/с # Действительная и мнимая части АФХ U = np.zeros_like(omega) # Всегда 0 V = -K / omega # Мнимая часть # Построение годографа plt.figure(figsize=(8, 8)) plt.plot(U, V, 'b-', linewidth=2, label='АФХ (годограф)') plt.plot(U[0], V[0], 'go', markersize=8, label='Начало (ω=0.1)') plt.plot(U[-1], V[-1], 'ro', markersize=8, label='Конец (ω=100)') # Стрелки направления увеличения частоты for i in [50, 150, 300]: # индексы для стрелок plt.arrow(U[i], V[i], U[i+10]-U[i], V[i+10]-V[i], head_width=0.1, head_length=0.1, fc='k', ec='k') plt.xlabel('Действительная часть Re(W)') plt.ylabel('Мнимая часть Im(W)') plt.title(f'АФХ для интегрирующего звена $W(p) = K/p$\nK={K}') plt.grid(True, alpha=0.3) plt.axis('equal') plt.legend() plt.show() # Дополнительно: построение отдельно действительной и мнимой частей plt.figure(figsize=(12, 4)) plt.subplot(1, 2, 1) plt.semilogx(omega, U, 'r-', linewidth=2) plt.xlabel('ω (рад/с)') plt.ylabel('Re(W)') plt.title('Действительная часть') plt.grid(True, alpha=0.3) plt.subplot(1, 2, 2) plt.semilogx(omega, V, 'g-', linewidth=2) plt.xlabel('ω (рад/с)') plt.ylabel('Im(W)') plt.title('Мнимая часть') plt.grid(True, alpha=0.3) plt.tight_layout() plt.show() # Вывод таблицы значений print("Таблица значений АФХ:") print("ω\t\tRe(W)\t\tIm(W)") print("-" * 40) for i in range(0, len(omega), 50): print(f"{omega[i]:.2f}\t\t{U[i]:.2f}\t\t{V[i]:.2f}")