matplolib/함수그래프

직렬 RLC회로에서 R값이 0으로 설정되었을때의 과제동응답의 전류/전압 그래프를 나타내보자!

JackSmith 2023. 5. 30.
import numpy as np
import matplotlib.pyplot as plt

#회로 파라미터
R = 0 #저항값
C = 1e-6 #커패시턴스 값(F)
L = 0.1 #인덕턴스 값(H)

#시뮬레이션 파라미터
dt = 1e-6 #시간 간격(s)
duration = 0.01 #시뮬레이션 기간 (s)

#시간 범위 생성
t = np.arange(0, duration, dt)

#입력 신호 생성 (에시로 단위 step 입력 사용)
input_signal = np.ones_like(t)
input_signal[t < duration/2] = 0


#초기 조건 설정
i_L = 0 #인덕턴스 전류 초기값
v_C = 0 #커패시턴스 전압 초기값

#시뮬레이션 결과 저장할 리스트
current = []
voltage = []

#시뮬레이션 시작
for i in range(len(t)):
    #다음 시간 단계에서의 전류 및 전압 계산
    i_L += (input_signal[i] - v_C) * dt / L
    v_C += i_L * dt / C

    #결과 저장
    current.append(i_L)
    voltage.append(v_C)

#그래프 그리기
plt.figure(figsize=(8,6))
plt.plot(t, current, label='Current')
plt.plot(t, voltage, label='Voltage')
plt.xlabel('Time (s)')

#왼쪽 여백 조정 및 y라벨 위치 조정(시작)
plt.subplots_adjust(left=0.28)
plt.gca().yaxis.set_label_coords(-0.25,0)
#왼쪽 여백 조정 및 y라벨 위치 조정(끝)

plt.ylabel('Current (A) / Voltage (V)', rotation=0)
plt.title('RLC Circuit Response (R=0)')
plt.legend()
plt.grid(True)
plt.show()

 

 

 

 

 

 

댓글