2023년 4월 23일 일요일

차분 방정식(差分方程式, Difference Equation)

[경고] 아래 글을 읽지 않고 "차분 방정식"을 보면 바보로 느껴질 수 있습니다.


[그림 1] 함수 $f(x)$의 차분 모습(출처: wikipedia.org)

임의 수열 $f_n$의 차이를 이용해서 $f_n$ = $a f_{n-1} + b f_{n-2} + \cdots$ 등과 같은 형태로 표현한 수식을 차분 방정식(差分方程式, Difference Equation)이라 부른다. 차분 방정식의 대표적인 예는 등비 급수(geometric series)이다.

                  (1)

여기서 $f_0$ = $a_0$은 초기값(initial value), $r$은 공비(common ratio)이다. 식 (1)은 $f_n$을 기준으로 차분이 하나만 있어서 일계 차분 방정식(the first order difference equation)이 된다. 식 (1)을 확장해서 이계 차분 방정식(the second order difference equation)도 쉽게 생성할 수 있다.

                  (2)

여기서 $a, b$는 상수, $f_0, f_1$은 이미 주어진 초기값이다. 식 (2)를 풀기 위해, 식 (1)처럼 $f_n$ = $r^n$이라 가정한다. 그러면 차분 방정식은 통상적인 2차 방정식으로 간략화된다.

                  (3)

식 (2)의 해법인 식 (3)에 나온 오른쪽 식은 차분 방정식을 규정하는 특성 방정식(characteristic equation)이다. 식 (3)에 나온 특성 방정식을 풀어서 나온 공비를 $r_1$, $r_2$라고 하면, 식 (2)의 일반해(general solution)는 미분 방정식처럼 $r_1^n$과 $r_2^n$의 선형 결합으로 구한다.

                  (4)

여기서 $c_1, c_2$는 초기값으로부터 결정한다.
상미분 방정식(ordinary differential equation)처럼 다음과 같은 형태로 기술된 $m$계 차분 방정식($m$th order difference equation)은 해의 존재성과 유일성이 쉽게 증명된다[1].

                  (5)

여기서 ${\bf x}_{n-1}$은 $m$차원을 가진 수열 벡터(vector), $f_0, f_1, \cdots, f_{m-1}$은 이미 알고 있는 초기값, 초기값 벡터는 ${\bf x}_{m-1}$ = $[f_0~f_1~\cdots~f_{m-1}]$이다. 식 (5)에 초기값 벡터 ${\bf x}_{m-1}$부터 차례로 ${\bf x}_{m}, {\bf x}_{m+1}$ 등을 대입하면, 함수값은 $f_{m}$, $f_{m+1}$, $f_{m+2}$ 등으로 유일하게 나온다. 즉, 식 (5)에 ${\bf x}_{m+k-1}$을 넣으면, $f_{m+k}$가 출력되고 그 다음 입력 벡터 ${\bf x}_{m+k}$도 구성된다. 그러면 $n$ = $0, 1, \cdots, m+k$에 대해 $f_0, f_1, \cdots, f_{m+k}$를 출력하는 함수 $f(x)$를 다항 함수 보간(polynomial interpolation) 등으로 만들 수 있다. 여기서 $f_n$ = $f(x)|_{x=n}$은 $0 \le x \le m+k$에서 성립한다. 그 다음 단계로 $x$의 범위를 늘리기 위해, 이전에 생성한 $f(x)$를 식 (5)에 넣어서 $m+k \le x \le m+k+1$에서도 $f(x)$가 정의되게 한다. 여기서 이전 범위에서 변하는 $f(x)$를 ${\bf x}_{n-1}$의 성분에 대입해 연속으로 바꿈으로써 식 (5)의 좌변은 자동적으로 $m+k \le x \le m+k+1$에서 연속이다. 이 과정은 계속 될 수 있으므로, 식 (5)의 차분 방정식은 항상 해를 가진다. 식 (5)와 같은 차분 방정식의 해가 유일하다는 증명도 쉽다. 만약 $n$ = $k$부터 $f(k)$와 함수값이 다른 $g(k)$가 있다고 가정한다. 그러면 식 (5)에 따라 $g(k)$ = $F({\bf x}_{k-1})$ = $f(k)$가 되므로, $g(k)$는 $f(k)$와 다를 수 없어서 모순이다. 해의 존재성과 유일성으로 인해 차분 방정식을 다양한 방식으로 풀 수 있다. 예를 들어, 식 (2)를 풀 때에 Z 변환(Z-transform)을 써도 된다.

                  (6)

차분 방정식은 미분 방정식(differential equation)을 근사적으로 풀 때 매우 유용하다. 수학적 미분을 수치 미분으로 교체해서 미분 방정식을 차분 방정식으로 바꾸어 푸는 방식은 유한 차분법(finite difference method, FDM)이라 부른다. 유한 차분법에서는 해의 수렴성을 꼭 확인해서 풀어야 한다. 왜냐하면 수치 미분으로 인해 반복적인 연산이 들어가므로, 차분 방정식의 해가 미분 방정식의 해로 수렴한다는 확인이 꼭 필요하기 때문이다.

[참고문헌]
[1] S. Tauber, "Existence and uniqueness theorems for solutions of difference equations," Am. Math. Mon., vol. 71, no. 8, pp. 859–862, Oct. 1964.
[2] S. Elaydi, An Introduction to Difference Equations, 3rd ed., New York, USA: Springer, 2005.

[다음 읽을거리]

2023년 4월 16일 일요일

수치 미분(Numerical Differentiation)

[경고] 아래 글을 읽지 않고 "수치 미분"을 보면 바보로 느껴질 수 있습니다.


[그림 1] 여러 가지 차분 방법(출처: wikipedia.org)

미분 공식을 이용해서 어떤 종류의 함수든지 미분을 할 수 있지만, 컴퓨터를 사용해서 미분을 근사할 때는 다음과 같은 차분(差分, difference)을 사용한다.

                  (1)

여기서 $x$의 차분 $h$가 0으로 한없이 접근하면 차분은 미분이 된다. 식 (1)은 현재점 $x$를 기준으로 전방에 위치한 $x+h$의 함수값으로 차분을 구해서 전방 차분(forward difference) $\Delta_f$라 부른다. 이 차분과 $h$의 나눗셈은 차분 몫(difference quotient)이면서 미분의 근사 혹은 수치 미분(numerical differentiation)이 된다. 비슷하게 후방에 있는 $x-h$ 점에서 시작해 구한 차분은 당연히 후방 차분(backward difference) $\Delta_b$가 된다.

                  (2)

혹은 점 $x$의 앞과 뒤에 있는 함수값의 차분을 써서 중앙에서 구한 차분을 만들기도 한다.

                  (3a)

여기서 첫째식의 분자는 중앙 차분(central difference) $\Delta_c$, 둘째식의 분자는 대칭 차분(symmetric difference) $\Delta_s$로 이름 붙인다. 중앙 차분에서 중앙값 $y(x)$는 양쪽 끝값의 평균으로 근사하기도 한다. 이 근사를 쓰지 않으려면 함수 관계로 $y(x)$를 직접 계산하거나 문제 조건에서 $y(x)$를 예측해야 한다.

                  (3b)

반면에 대칭 차분은 $y(x)$를 이미 알고 있어서 식 (3b)가 필요없다. 왜냐하면 간격 $h$를 기준으로 $y(x-h)$, $y(x)$, $y(x+h)$는 이미 주어지기 때문이다.
전방 차분 몫의 오차는 테일러 급수(Taylor series)를 이용해서 쉽게 구할 수 있다.

           (4)

여기서 $y$ = $f(x)$, $h \ll 1$이다. 식 (4)는 일종의 근사라서 마음에 쏙 들지 않는다. 미분에 대한 평균값의 정리(mean value theorem)에서 출발해 식 (4)를 더 엄격하게 표현한다[1].

                  (5a)

                  (5b)

여기서 $x \le \xi \le x+h$이다. 식 (5a)의 결과는 제1차 잉여항(remainder term)을 포함한 테일러 급수(Taylor series)와 동일하다. 비슷한 방식으로 대칭 차분 몫의 오차도 공식화된다.

                  (6)

테일러 급수를 이용한 분석에 따라, $y$ = $f(x)$가 부드럽게 변하는 경우에 중앙이나 대칭 차분 몫이 전방이나 후방 차분 몫보다 훨씬 더 미분값에 가깝다.

[그림 2] 차분 $h$에 대한 수치 미분 오차의 변화(출처: wikipedia.org)

이 시점에서 고민할 부분은 $h$의 선택이다. 미분 정의에 가까우려면 가능한 한 $h$를 작게 택해야 한다. 하지만 현실에서 $h$를 얼마나 작게 할 수 있을까? 여기서 말하는 현실은 컴퓨터로 계산할 때이다. 수치 계산에는 기계 엡실론(machine epsilon)이라는 나름 창의적인 개념이 있다. 0이 아닌 양수인 기계 엡실론 $\varepsilon$은 수치 계산 관점에서 $1+\varepsilon$과 $1$을 다르게 만드는 가장 큰 실수이다. 수학에서는 당연히 $1+\varepsilon$과 $1$이 다르지만, 컴퓨터는 유한한 유효 숫자로 이진수를 만들어서 계산하므로 컴퓨터 구조마다 고유한 기계 엡실론이 존재한다.

[그림 3] 이중 정밀도의 비트 분포(출처: wikipedia.org)

예를 들어, 요즘 사용되는 컴퓨터는 실수 계산을 할 때에 기본적으로 이중 정밀도(double precision)인 64 비트(bit)를 사용한다. 예전에는 단일 정밀도인 32 비트를 주로 사용했다. 이중 정밀도의 비트 분포는 [그림 3]에서 볼 수 있다. C 언어의 실수 자료형(data type)에서 단일 정밀도는 float, 이중 정밀도는 double로 칭한다. [그림 3]에 따라 컴퓨터가 쓰는 이중 정밀도 실수가 가진 유효 숫자(有效數字, significant figure)는 52 비트를 가진다. 이 52 비트는 항상 1.으로 시작하는 이진 소수의 유효 숫자라서 가장 낮은 소수 자리수는 소수점 이하 52번째이다. 그래서 지수(exponent)가 0인 이중 정밀도 실수에서, 1과 가장 가까운 이진수는 1.0000000000000000000000000000000000000000000000000001이 된다. 따라서 이중 정밀도의 기계 엡실론은 $\varepsilon$ = $2^{-52}$ =  2.22044604925031$\cdots \times 10^{-16}$이다. 그러면 $h$ = $\varepsilon$인 경우가 가장 최적의 수치 미분을 얻게 하는가? [그림 2]의 결과를 보면, 우리 예상과는 다르게 $\varepsilon$보다 훨씬 큰 $h$를 선정해야 한다. 수치 미분의 오차를 최대로 줄이는 $h$를 구하기 위해, 컴퓨터로 함수를 계산할 때에 필연적으로 나타나는 반올림 오차(round-off error)를 기계 엡실론 개념으로 근사화한다.

                  (7)

여기서 $\varepsilon_1$ = $\varepsilon_1(x)$, $\varepsilon_2$ = $\varepsilon_2(x, h)$,  $\widetilde{f}(x)$는 $x$에서 계산한 반올림 오차를 반영한 함수값, $f(x)$는 정확한 함수값이다. 식 (7)을 식 (1)에 대입해서 반올림 오차를 가진 수치 미분을 구한다[1].

                  (8)

여기서 $h$는 매우 작아서 $f(x+h)$ $\approx$ $f(x)$이다. 식 (8)을 다시 식 (5b)에 넣어서 수치 미분의 오차 $E (h)$와 최대 오차 $E_{\max}(h)$를 표현한다.

                  (9)

여기서 $|\varepsilon_2 - \varepsilon_1| \le 2 \varepsilon$, $\varepsilon$는 이중 정밀도의 기계 엡실론, $f(\xi)$와 $f^{(2)}(\xi)$는 $x \le \xi \le x+h$에서 거의 상수이면서 0은 아니라고 가정한다. 식 (9)의 둘째식을 미분해서 0이 되는 값이 바로 최적의 $h$인 $h_\text{opt}$이다[1].

                  (10)

함수 $f(x)$마다 $h_\text{opt}$는 다르지만, 편하게 근사하기 위해 보통 $h_\text{opt}$ $\approx$ $2 \sqrt{\varepsilon}$ $\approx$ $3 \times 10^{-8}$으로 생각한다. 이 결과는 [그림 2]에 보이는 $h_\text{opt}$를 잘 설명한다.


   1. 기본(basics)   

[정의]

                  (1.1)

독립 변수 $x$의 차분인 $h$가 같은 간격으로 변하는 경우의 차분을 정의하기 위해 식 (1.1)을 빈번하게 사용한다.

[선형 사상(線型寫像, linear mapping)]

                  (1.2)

모든 종류의 차분에 대해 선형 사상이 항상 성립한다.

[곱의 차분]

                  (1.3a)

                  (1.3b)

여기서 $f_{m+0.5}$ = $(f_m + f_{m+1})/2$, $f_{m-0.5}$ = $(f_{m-1} + f_{m})/2$이다.

[증명]
함수 곱을 식 (1.1)에 넣고 정리해서 식 (1.3)을 증명한다. 나머지 차분도 동일하게 접근할 수 있다.

                  (1.4a)

                  (1.4b)
______________________________

식 (1.3b)의 마지막식은 차분 연산에 빈번하게 쓰이는 유용한 공식이다. 다만 좌변과 완벽히 같지는 않기 때문에, $h$가 0에 매우 가깝다는 조건이 필요하다.


[참고문헌]
[1] K. Mørken, Chapter 11. Numerical Differentiation, Numerical Algorithms and Digital Representation, University of Oslo, Norway, Nov. 2010. (방문일 2023-04-16)
[2] F. B. Hildebrand, Introduction to Numerical Analysis, 2nd ed., New York, USA: Dover Publications, 1987.

[다음 읽을거리]

2023년 3월 13일 월요일

자기 회로(Magnetic Circuit)

[경고] 아래 글을 읽지 않고 "자기 회로"을 보면 바보로 느껴질 수 있습니다.


[그림 1] 자성체로 구성한 자기 회로의 예시(출처: wikipedia.org)
B: 자성체 내부, C: 자성체 외부, G: 공극(air gap), $B_L$: 누설 자속 밀도(leakage flux density), $B_F$: 가장자리 자속 밀도(fringing flux density)

금속 도선에 전압을 가해 전류를 만들어서 제어하는 전기 회로(electrical circuit)와 유사하게 자속(magnetic flux)을 자성체(magnetic material) 속에서 통제하는 회로를 자기 회로(magnetic circuit)로 부른다. 전기 회로의 전류를 전압원이 만드는 것처럼, 자기 회로에서 [그림 1]에 보인 초록색 자속은 빨간색 전류 다발을 생성한다. 전류 다발의 공식 명칭은 암페어-횟수(ampere-turn)[단위: A⋅t]이다. 암페어-횟수의 단위는 A⋅t이지만, CGS 단위인 길버트(gilbert, Gb)도 가끔씩 쓰인다. 길버트는 자기장과 길이의 CGS 단위인 외르스테드(oersted, Oe)와 cm로 정의한다.

                        (1)

여기서 마지막에 등장한 t는 길버트가 감은 횟수(number of turns)를 포함함을 강조한다.
전기 회로의 KCL(키르히호프 전류 법칙, Kirchhoff Current Law)KVL(키르히호프 전압 법칙, Kirchhoff Voltage Law)처럼 자기 회로의 핵심 구성 요소인 자속 $\Phi$과 암페어-횟수 $NI$에 대한 법칙이 존재한다. 먼저 자기 회로의 자속 법칙(flux law)은 비오–사바르의 법칙(Biot–Savart's law)으로 유도한다.

                        (2)

여기서 $s$ = $\sum_{n=1}^N s_n$; $s_n$은 $s$를 상보적으로 형성하는 $n$번째 조각 표면적이다. 자기 회로의 암페어-횟수 법칙(ampere-turn law)암페어의 법칙(Ampere's law)에서 출발한다.

                        (3)

여기서 $c$ = $\sum_{n=1}^N c_n$; $U$는 전기 회로의 전압에 해당하는 자압(壓, magnetic pressure) 혹은 자위(磁位, magnetic potential)이다.
이번에는 전기 회로의 옴 법칙(Ohm's law)에 대응하는 자기 회로에 대한 롤런드의 법칙(Rowland's law)을 유도한다. 롤런드Henry Augustus Rowland(1848–1901)는 이 법칙을 1873년롤런드 25세, 조선 고종 시절에 제안했다[1]. 식 (3)에 나온 자기장 $\bar H$를 변형해서 자속 $\Phi$로 만든다.

                       (4a)

여기서 $\Phi$ = $B \cdot A$; $A$는 자속이 지나는 단면적, $\bar B$의 방향을 $d \bar l$과 일치되게 맞추며, 식 (2)의 자속 법칙에 따라 $\Phi$는 회로상에서 일정하다. 식 (4a)의 마지막식에 나온 항을 저항(resistance)처럼 생각해서 자기 저항 혹은 릴럭턴스(reluctance, magnetic resistance) $\mathcal{R}$[단위: t/H]로 정의한다.

                        (4b)

여기서 $l$은 자기 회로의 길이, $\mathcal{F}$는 전기 회로의 기전력(electromotive force, emf)에 대응하는 자기 회로의 자기장을 일으키고 유지하는 기자력(起磁力, magnetomotive force, mmf)이다.

[그림 2] 롤런드의 법칙에 대한 자압 $U$의 극성과 자속 $\Phi$의 방향 정의

다시금 저항에서 유추해서 자기 저항에 대한 자압 극성과 자속 방향을 정의한다. 전압이 높은 곳에서 낮은 곳으로 전류가 흐른다는 선택처럼 자압이 높은 지점에서 낮은 지점으로 자속이 형성되고 [그림 2]처럼 흐름을 만든다고 가정한다. 다만 저항과 자기 저항의 물리적 성질은 분명히 다르다. 저항은 열 손실을 만들기 때문에 저항이 있는 전기 회로는 전력을 항상 소비한다. 그러나 자기 저항은 자성체 내부에 자속 밀도를 특정 방향으로 만들 뿐이지 전력 손실을 만들지 않는다. 외부에서 공급한 기자력이 없어지면, 자화가 사라지며 용수철(spring)처럼 자기가 받은 에너지를 외부로 다시 돌려준다.
자기 저항의 역수는 자기 컨덕턴스 혹은 퍼미언스(permeance or magnetic conductance) $\mathcal{P}$[단위: H/t]로 정의한다.

                        (5)

자기 저항 $\mathcal{R}$은 저항 $R$과 너무 닮아있기 때문에 저항 공식처럼 자속 $\Phi$에 대해 직렬과 병렬로 된 자기 저항 공식이 존재한다.

[그림 3] 직렬로 된 자기 저항: $\Phi$는 일정, $U$는 변화 가능(그림 출처: wikipedia.org)

[직렬로 된 자기 저항]

                           (6)

[증명]
자기 회로가 직렬로 연결되어서 자기 회로를 지나는 자속 $\Phi$는 어디서나 같다. 그러면 암페어-횟수 법칙과 롤런드의 법칙에 의해 $\mathcal{F}$ = $U_1 + U_2 + \cdots + U_n$ = $\Phi \mathcal{R}_1 + \Phi \mathcal{R}_2 + \cdots + \Phi \mathcal{R}_n$ = $U_\text{eq}$ = $\Phi \mathcal{R}_\text{eq}$가 성립한다. 이를 $\mathcal{R}_\text{eq}$에 대해 정리하면 식 (6)이 얻어진다.
______________________________

[그림 4] 병렬로 된 자기 저항: $U$는 일정, $\Phi$는 변화 가능(그림 출처: wikipedia.org)

[병렬로 된 자기 저항]

                           (7)

[증명]
자기 회로의 마디(node)에서는 자속이 분배되므로, 자속 법칙을 이용하면 $\Phi_\text{eq}$ = $\Phi_1 + \Phi_2 + \cdots + \Phi_n$을 얻는다. 또한 병렬 자기 회로를 구성하는 폐로(loop)에는 기자력이 없어서 $\oint_c \bar H \cdot d \bar l$ = $0$이 성립하므로 자압이 어느 곳에서든 $U$로 같다. 이 결과에 롤런드의 법칙인 $\Phi_i$ = $U / \mathcal{R}_i$, $\Phi_\text{eq}$ = $U / \mathcal{R}_\text{eq}$를 대입해서 식 (7)을 유도한다.
______________________________

자기 회로 개념은 자성체 특성을 분석하기 편하게 도와준다. 예시로서 공극(air gap)이 존재하는 [그림 5]의 간단한 자기 회로를 고려한다.

[그림 5] 미세한 공극을 가진 자성체: 파란색은 자성체, 초록색은 공극(출처: wikipedia.org)

[그림 5]의 자기 회로는 회로상에서 자속이 유출되지 않고 곡선상에서 계속 연결되므로, 자속 $\Phi$ 기준으로 직렬이다. 넣어준 기자력을 $\mathcal{F}$ = $NI$로 두면 자성체를 돌고있는 자속은 식 (6)을 활용해 결정된다.

                       (8)

여기서 $\mathcal{R}_1$ = $l_1 \mathbin{/} (\mu A)$, $\mathcal{R}_2$ = $l_2 \mathbin{/} (\mu_0 A)$; 자성체와 공극의 단면적은 $A$로 동일하게 가정한다. 투자율이 $\mu \gg 1$인 강자성체(ferromagnet)인 경우, 자성체에 존재하는 자속 밀도와 자속은 기자력과 공극에 의해 거의 $B$ $\approx$ $\mu_0 NI \mathbin{/} l_2$, $\Phi$ $\approx$ $BA$처럼 정해진다.

[표 1] 자기 회로와 전기 회로의 비교
자기 항목자기 회로전기 항목전기 회로
자압
(magnetic pressure)
$U_{BA}$ = $U_B - U_A$ = $-\int_A^B \bar H \cdot d \bar l$전압
(voltage)
$V_{BA}$ = $V_B - V_A$ = $-\int_A^B \bar E \cdot d \bar l$
자속
(magnetic flux)
$\Phi$ = $\int_s \bar B \cdot d \bar a$전류
(electric current)
$I$ = $\int_s \bar J \cdot d \bar a$
자기 저항
(reluctance)
$\mathcal{R}$ = $\frac{l}{\mu A}$
- 자기 컨덕턴스(permeance):  $\mathcal{P}$ = $\frac{1}{\mathcal{R}}$
저항
(resistance)
$R$ = $\frac{l}{\sigma A}$
- 컨덕턴스(conductance): $G$ = $\frac{1}{R}$
롤런드의 법칙
(Rowland's law)
$\Delta U$ = $\Phi \mathcal{R}$옴의 법칙
(Ohm's law)
$\Delta V$ = $IR$
기자력
(magnetomotive force, mmf)
$\mathcal{F}$ = $NI$기전력
(electromotive force, emf)
$v_\text{emf}$ = $- \frac{d \Phi}{dt}$
자속 법칙
(flux law)
$\sum_{n=1}^N \Phi_n$ = $0$KCL
(Kirchhoff Current Law)
$\sum_{n=1}^N I_n$ = $0$
암페어-횟수 법칙
(ampere-turn law)
$\sum_{n=1}^N U_n -\mathcal{F}$ = $0$KVL
(Kirchhoff Voltage Law)
$\sum_{n=1}^N V_n -v_\text{emf}$ = $0$

[참고문헌]
[1] J. D. Miller, "Rowland's magnetic analogy to Ohm's law," Isis, vol. 66, no. 2, pp. 230241, Jun. 1975.