ответвлено от main/python-labs
ОКЗ
Этот коммит содержится в:
63
TEMA1/Pr0.py
63
TEMA1/Pr0.py
@@ -1,5 +1,58 @@
|
||||
#Программа по Теме 1 <Зеленкина Ксения Михайловна>
|
||||
print('Hello')
|
||||
h=input('Your name=')
|
||||
import os
|
||||
os.chdir("C:/Users/user/OneDrive/Documents/ZelenkinaKs/python-labs/TEMA1/Отчет")
|
||||
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}")
|
||||
Ссылка в новой задаче
Block a user