회로가 행렬이 되는 순간 — 회로 계산 프로그램
V2 공개자료 교차확인 — 둘 이상의 독립된 자료로 확인
탐구 주제
IYPT 1988 문제 4 ‘Electric circuit’에 관한 원리 해설과 탐구 설계입니다.
교육과정 연결
중학교 과학 「전기와 자기」(전압·전류·저항, 옴 법칙) / 고등학교 통합과학2 「환경과 에너지」(전기 에너지의 생산과 수송 — 전력망 해석) / 물리학·진로선택 「전자기와 양자」(전기 회로와 전위차) / 공통수학1 「행렬」(행렬의 연산) / 정보 「알고리즘과 프로그래밍」 (2022 개정 교육과정, 단원 코드는 NCIC에서 최종 확인).
핵심 개념
키르히호프 법칙(마디 법칙·고리 법칙), 마디(절점), 가지, 전위차, 기전력, 내부 저항, 옴 법칙, 컨덕턴스, 마디 해석법, 전원 변환(노턴 등가), 컨덕턴스 행렬, 그래프 라플라시안, 기준 마디(접지), 선형 연립방정식, 가우스 소거법, 계산 복잡도 O(n³), 수정 마디 해석법(MNA)
원리 살펴보기
마디 열 개가 전지로 서로 얽힌 회로에서, 1번과 2번 사이의 전압을 손으로 구할 수 있을까? 모든 마디를 짝마다 이으면 가지는 45개가 된다. 직렬·병렬로 묶어 저항을 줄여 나가는 익숙한 요령은 여기서 첫걸음부터 막힌다 — 어느 두 가지도 나란하지 않고 줄지어 있지도 않기 때문이다. 남은 길은 키르히호프의 두 법칙뿐인데, 이것도 곧이곧대로 쓰면 만만치 않다. 가지마다 전류를 미지수로 놓으면 미지수가 45개이고, 이를 풀려면 서로 독립인 고리 방정식 36개를 손으로 골라내야 한다(가지 45 − 마디 10 + 1 = 36). 어느 고리를 잡아야 독립인지 판단하는 일부터 사람의 몫이라, 회로가 조금만 커져도 실수 없이 해내기 어렵다. 문제가 컴퓨터 프로그램을 만들라고 요구하는 이유가 여기 있다.
돌파구는 미지수를 바꿔 잡는 데 있다. 가지의 전류 대신 마디마다의 전위를 미지수로 놓는 마디 해석법을 쓰면 미지수가 45개에서 9개로 줄어든다. 먼저 기전력 ε와 내부 저항 r을 가진 전지 하나하나를, 크기 ε/r의 전류원과 컨덕턴스 1/r이 나란히 붙은 꼴로 바꾼다(전원 변환). 문제가 모든 전지에 내부 저항 r을 붙여 둔 덕분에(실제 전지는 r > 0이다) 이 나눗셈이 성립한다. 그러면 마디마다 들어온 전류의 합과 나간 전류의 합이 같다는 마디 법칙을 기계적으로 적을 수 있고, 이 식들을 모으면 Gv = i라는 행렬로 정리된다 — 회로의 배선도가 그대로 행렬이 되는 것이다. 전위의 기준을 어디로 잡든 차이는 변하지 않으므로 G는 그대로는 풀리지 않는다. 마디 하나를 골라 전위를 0으로 두고(기준 마디) 그 행과 열을 지우면, 회로가 하나로 이어져 있는 한 반드시 풀리는 9×9 연립방정식이 남는다. 가우스 소거법으로 v를 구해 V₁ − V₂를 출력하면 끝이다.
회로를 행렬로 바꾸는 이 발상은 회로 밖으로 멀리 나간다. 전자 설계 자동화(EDA)와 회로 시뮬레이터는 소자 수십억 개짜리 칩을 이 마디 방정식을 확장한 형태로 풀어내고(SPICE 계열), 전력망 해석은 발전소와 도시를 마디로 놓고 같은 꼴의 행렬을 풀어 어디에 얼마의 전압이 걸리는지 계산한다. 유한요소·유한차분 수치해석은 열이나 전기장처럼 연속으로 퍼진 문제를 잘게 나눠 똑같은 큰 연립방정식 풀기로 바꾸며, 그래프 이론과 네트워크 알고리즘에서는 이 컨덕턴스 행렬이 곧 가중치 붙은 라플라시안 행렬이어서(저항이 모두 1 Ω이면 라플라시안 그 자체다), 회로를 푸는 일과 그래프를 세는 일이 한 행렬에서 만난다.
실험 설계
준비물
파이썬(numpy)이 설치된 노트북 또는 스프레드시트, 알칼리 건전지(1.5 V) 여러 개와 건전지 홀더, 여러 값의 저항기(100 Ω ~ 1 kΩ, 전지마다 직렬로 달 것을 넉넉히), 브레드보드와 점퍼선·집게 전선, 디지털 멀티미터, 초시계, 회로도를 그릴 모눈종이, (선택) 회로 시뮬레이터(팔스타드 Circuit Simulator, LTspice).
변인
독립변인은 회로의 마디 수 n이다(3부터 10까지 한 번에 이 값만 늘린다). 종속변인은 입력이 시작된 때부터 올바른 결과가 출력될 때까지의 시간이며, 입력에 든 시간과 계산에 든 시간으로 나눠 기록한다. 함께 재는 종속변인은 정확도, 곧 예측한 V₁ − V₂와 멀티미터로 잰 값의 차이다. 통제변인은 입력 방식, 쓰는 컴퓨터·언어·라이브러리, 표를 불러 주는 사람과 그 속도, 무작위 표의 채움 비율, 멀티미터이다. 입력 방식의 영향은 그 방식만 따로 바꿔 별도로 확인한다.
실험 순서
-
마디에 1번부터 n번까지 번호를 붙이고 회로를 두 개의 n×n 표로 옮긴다. 마디 i와 j를 잇는 전지의 기전력과 내부 저항을 각 표의 (i, j) 칸에 적되, 극성이 뒤집히면 기전력의 부호도 뒤집히니 어느 방향을 양으로 볼지 먼저 정한다(저항 표는 대칭, 기전력 표는 반대칭). 이어지지 않은 두 마디는 컨덕턴스를 0으로 둔다. 같은 두 마디를 잇는 전지가 여럿이면 전원 변환으로 하나의 등가 전지로 합쳐 한 칸에 넣는다.
-
전원 변환으로 Gv = i를 세우고, 기준 마디의 전위를 0으로 둔 뒤 그 행과 열을 지워 (n−1)×(n−1) 연립방정식을 얻는다. 이를 numpy.linalg.solve로(또는 가우스 소거법을 직접 짜서) 풀어 V₁ − V₂를 출력하게 하고, 손으로 답을 낼 수 있는 마디 3~4개짜리 회로로 먼저 검증한다.
-
브레드보드에 마디 4~5개짜리 회로를 꾸미되, 전지마다 100 Ω 안팎의 저항기를 직렬로 달아 그 가지의 r로 삼는다(전지 자체의 내부 저항보다 훨씬 커서 r을 아는 값으로 만든다). 기전력은 개방 상태에서 재어 표에 넣는다.
-
표를 프로그램에 넣어 V₁ − V₂를 예측하고, 1번·2번 마디에 멀티미터를 대어 실제 전위차를 잰다. 저항기와 전지를 바꿔 여러 회로에서 반복한다.
-
이번에는 실물 회로 없이 기전력·저항 표만 무작위로 만들어(채우는 칸의 비율은 늘 같게 한다), 마디 수 n을 3에서 10까지 늘려 가며 입력이 시작된 때부터 정답이 출력될 때까지의 시간을 재고, 입력에 든 시간과 계산에 든 시간을 나눠 기록한다.
안전 안내
⚠ 안전1.5 V 건전지 회로라 감전 위험은 사실상 없다. 위험은 단락(쇼트)에 있다 — 전지의 두 극을 저항 없이 이으면 큰 전류가 흘러 전지와 전선이 뜨거워지고 전지가 샐 수 있다. 전지마다 저항기를 반드시 직렬로 달고, 배선을 다 마친 뒤 마지막에 전지를 끼우며 끝나면 곧바로 뺀다. 리튬이온·리튬폴리머 전지는 단락 시 발열·발화 위험이 커서 쓰지 않고, 알칼리 건전지나 학교용 직류 전원 장치를 쓴다. 저항기가 뜨거우면 즉시 전지를 빼고, P = V²/R로 소비 전력을 어림해 정격(보통 1/4 W)을 넘지 않게 한다.
예상과 해석
먼저 예상해 보기
마디 수를 3개에서 10개로 늘리면, 데이터 입력이 시작된 때부터 정답이 나올 때까지의 시간 가운데 무엇이 더 크게 늘어날까 — 컴퓨터가 연립방정식을 푸는 시간일까, 사람이 표를 입력하는 시간일까?
자료 정리
마디 수 n별로 총 시간을 입력 시간과 계산 시간으로 나눠 표에 모은 뒤, 가로축을 n으로 하여 한 그래프에 함께 그린다. 계산 시간은 n ≤ 10에서는 너무 짧아 재기 어려우므로, 무작위로 만든 큰 표를 직접 짠 가우스 소거법에 넣어 n을 수십~백까지 키워 따로 재고, 두 축을 로그로 그려 기울기가 3에 다가가는지(O(n³)) 살펴본다(numpy 같은 최적화 라이브러리는 이 규모에서 기울기가 3보다 낮게 나온다). 정확도는 예측한 V₁ − V₂와 측정값의 차이를 불확도와 견주어 정리한다. (수치는 실제 측정으로 채운다 — 여기서는 축과 개형만.)
결과의 의미
마디 수가 10 이하인 동안에는 총 시간이 거의 전부 입력에 쓰이고, 계산 시간은 사실상 0으로 보일 것으로 예상된다. 마디가 10개면 표에 채울 값이 최대 45쌍(90개)인데, 풀 연립방정식은 9×9여서 가우스 소거법의 곱셈·나눗셈은 대략 240회((n−1)³/3 남짓)뿐이기 때문이다. 그러니 원문이 품질 기준으로 삼은 입력부터 출력까지의 시간은, 이 크기의 문제에서는 알고리즘이 아니라 입력 인터페이스가 좌우한다는 뜻이 된다. 알고리즘의 O(n³)은 n을 수백까지 키워야 비로소 시간으로 드러난다. 한편 프로그램의 예측과 측정이 불확도 안에서 맞아떨어진다면, 전지를 기전력과 내부 저항으로 나타낸 모형과 키르히호프 법칙이 함께 옳다는 확인이 된다. 어긋난다면 내부 저항이 전류·잔량에 따라 변하는지, 접촉 저항이 끼어들었는지 따지는 것이 이 탐구의 알맹이다.
더 탐구하기
-
전지 하나의 r을 0으로 두고 돌려 보자. ε/r이 무한대가 되어 마디 해석법이 무너지는데, 시뮬레이터가 전류를 미지수에 함께 넣은 수정 마디 해석법(MNA)을 쓰는 이유가 이것이다.
-
전지를 빼고 저항만 남긴 뒤, 한 마디로 전류를 넣고 다른 마디로 빼내어 두 마디 사이의 등가 저항을 구하도록 고쳐 보자. 격자를 키울수록 이웃한 두 마디 사이 저항이 어떤 값에 다가가는지 살펴보자.
-
입력 방식을 표 타이핑·CSV 읽기·회로도 그려 넣기로 나눠 만들어, 총 시간을 재고 원문의 품질 기준으로 어느 쪽이 나은지 가려 보자.
-
모든 저항을 1 Ω으로(곧 모든 컨덕턴스를 1로) 둔 뒤, 컨덕턴스 행렬에서 기준 마디의 행과 열을 지운 행렬의 행렬식을 구해 보자. 이 값은 그 회로의 신장 트리 개수와 같아진다(키르히호프의 행렬-트리 정리). 저항을 1 Ω이 아닌 값으로 두면 그 개수에 컨덕턴스의 거듭제곱이 곱해지니, 왜 그런지도 따져 보자.
연결 주제
‘등전위선’(2022 문제 8)과 앞뒤로 맞물린다. 그쪽은 물속 여러 지점의 전위를 멀티미터로 하나씩 재고, 이쪽은 마디마다의 전위를 한꺼번에 계산한다. 연속된 도체를 잘게 나눠 저항으로 이으면 같은 꼴의 마디 방정식이 나오므로, 프로그램의 마디 수를 키우면 그 수조의 전위 분포를 예측해 측정한 등전위선에 겹쳐 볼 수 있다. ‘비접촉 물성 측정’(2024 문제 6)과는 회로 모형으로 답을 끌어내는 전략을 공유한다.
참고문헌
[학생] 위키백과 ‘키르히호프의 전기회로 법칙’(마디 법칙·고리 법칙) / Spinning Numbers ‘Node voltage method’(Willy McAllister; 마디 법칙으로 연립방정식을 세워 푸는 절차를 전지 예제로 보여 준다) / 팔스타드 Circuit Simulator, falstad.com/circuit(무료 시뮬레이터 — 회로를 그려 마디 전위를 확인) / numpy.linalg.solve 공식 문서(LAPACK의 _gesv 루틴) / 영상·검색어 “node voltage method”, “Kirchhoff’s circuit laws” / [심화] G. Kirchhoff, “Ueber die Auflösung der Gleichungen, auf welche man bei der Untersuchung der linearen Vertheilung galvanischer Ströme geführt wird,” Annalen der Physik 148(12), 497–508 (1847) (DOI 10.1002/andp.18471481202; 포겐도르프판 제72권. 회로망의 연립방정식을 푸는 길을 연 원전이며, 행렬-트리 정리도 여기서 비롯한다) · M. Kagan, “On equivalent resistance of electrical circuits,” Am. J. Phys. 83(1), 53–63 (2015) (DOI 10.1119/1.4900918; arXiv:1507.01873. 마디 전위법을 휘트스톤 브리지로 보이고, 컨덕턴스 행렬이 그래프의 라플라시안과 같은 방식으로 얻어짐을 밝힌다) · C.-W. Ho, A. Ruehli, P. Brennan, “The modified nodal approach to network analysis,” IEEE Trans. Circuits Syst. 22(6), 504–509 (1975) (DOI 10.1109/TCS.1975.1084079; 마디 해석법이 이상적인 전압원을 못 다루는 한계를 전류를 미지수에 넣어 푼 MNA, SPICE2에 채택됐다). ※ 문헌은 마디 해석법·컨덕턴스 행렬·MNA·O(n³)까지 이 원고의 수학과 물리를 덮지만, 세 곳은 덮지 못한다. 첫째, 입력부터 출력까지의 시간을 재고 견주는 표준이 없어, 공정한 비교 규칙(같은 회로·같은 불러 주는 사람·같은 컴퓨터)을 팀이 스스로 정해 밝혀야 한다. 둘째, 1988년 당시 어떤 계산 환경을 전제했는지는 원문에 없다 — 오늘날의 관점으로 다시 읽었을 뿐, 출제 의도를 확인한 것은 아니다. 셋째, 건전지의 내부 저항은 전류·잔량에 따라 변해 ‘알려진 r’이라는 전제와 어긋날 수 있어, 저항기를 직렬로 달아 r을 아는 값으로 만드는 이 설계가 학교 장비에서 얼마나 맞는지는 파일럿 미수행의 개방 지점이다.