import numpy as np
import matplotlib.pyplot as plt

# Заданные параметры
R1 = 10      # Ом
R2 = 40      # Ом
R3 = 10      # Ом
C = 200e-6   # Ф
U0 = 5       # В
U_c_vyn = 4  # В
p = -277.78  # с^-1

# Временная шкала, включая t < 0
t = np.linspace(-0.01, 0.02, 1000)  # от -10 мс до 20 мс

# Функция Хевисайда
h = np.heaviside(t, 0)

# Переходные характеристики
h_i = (0.02 - 0.0755 * np.exp(p * t)) * h
h_u = (0.8 - 1.2444 * np.exp(p * t)) * h

# Вычисление производных для импульсных характеристик
dh_i_dt = 0.0755 * p * np.exp(p * t) * h
dh_u_dt = 1.2444 * p * np.exp(p * t) * h

# Построение графиков переходных характеристик
plt.figure(figsize=(14, 8))

# Переходная характеристика входного тока h_i(t)
plt.subplot(2, 1, 1)
plt.plot(t, h_i, label='Переходная характеристика $h_i(t)$')
plt.xlabel('Время, с')
plt.ylabel('$h_i(t)$, А/В')
plt.title('Переходная характеристика для входного тока')
plt.axvline(0, color='black', linewidth=0.5)
plt.axhline(0, color='black', linewidth=0.5)
plt.grid(True)
plt.legend()

# Переходная характеристика выходного напряжения h_u(t)
plt.subplot(2, 1, 2)
plt.plot(t, h_u, label='Переходная характеристика $h_u(t)$', color='red')
plt.xlabel('Время, с')
plt.ylabel('$h_u(t)$, В/В')
plt.title('Переходная характеристика для выходного напряжения')
plt.axvline(0, color='black', linewidth=0.5)
plt.axhline(0, color='black', linewidth=0.5)
plt.grid(True)
plt.legend()

plt.tight_layout()
plt.savefig('images/h_i_h_u.png', dpi=300)

# Построение графиков импульсных характеристик
plt.figure(figsize=(14, 8))

# Импульсная характеристика входного тока k_i(t)
plt.subplot(2, 1, 1)
plt.plot(t, dh_i_dt, label='Импульсная характеристика $k_i(t)$')
plt.xlabel('Время, с')
plt.ylabel('$k_i(t)$, А/(В·с)')
plt.title('Импульсная характеристика для входного тока')
plt.axvline(0, color='black', linewidth=0.5)
plt.axhline(0, color='black', linewidth=0.5)
plt.grid(True)
plt.legend()

# Импульсная характеристика выходного напряжения k_u(t)
plt.subplot(2, 1, 2)
plt.plot(t, dh_u_dt, label='Импульсная характеристика $k_u(t)$', color='red')
plt.xlabel('Время, с')
plt.ylabel('$k_u(t)$, В/(В·с)')
plt.title('Импульсная характеристика для выходного напряжения')
plt.axvline(0, color='black', linewidth=0.5)
plt.axhline(0, color='black', linewidth=0.5)
plt.grid(True)
plt.legend()

plt.tight_layout()
plt.savefig('images/k_i_k_u.png', dpi=300)