2013년 2월 2일 토요일

코사인 적분(Cosine Integral)

[경고] 아래 글을 읽지 않고 "코사인 적분"을 보면 바보로 느껴질 수 있습니다.
1. 지수 적분
2. 사인 적분


[그림 1] 코사인 적분(출처: wikipedia.org)

식 (1)에 있는 사인 적분(sine integral)의 정의를 이용해 식 (2)의 코사인 적분 $\text{ci}(\cdot)$(cosine integral)을 새롭게 만들어 보자.

                       (1)

                       (2)

식 (1)의 사인 적분은 다음과 같은 미분 방정식(differential equation)을 만족했다. 코사인 적분도 동일한 미분 방정식을 만족할까?

                       (3)

사인 적분에 대한 미분 방정식 증명과 마찬가지로 코사인 적분도 여러 번 미분을 해서 관계식을 만들어보자.

                       (4)

식 (4)에 의해 코사인 적분도 사인 적분과 동일하게 아래 미분 방정식을 만족한다.

                       (5)

식 (1), (2)와 같은 정의는 적분의 점근식(asymptote)을 유도할 때 유용하다. 따라서, 코사인 적분의 경우에도 사인 적분 유도 때와 동일한 방법으로 점근식을 만들어보자.

                       (6)

그러면 최종 점근식은 다음처럼 표현된다.

                       (7)

식 (2)처럼 코사인 적분 구간을 $x$에서 무한대로 정의할 수도 있지만, 0에서 $x$까지로도 정의할 수 있다. 하지만 $x$가 0 가까이로 가면 발산하는 문제가 있다. 이 특성은 다음처럼 증명할 수 있다.

                       (8)

그래서 0에서 $x$까지 가는 적분으로 코사인 적분을 정의하려면 특별한 조치가 필요하다. 이 과정을 위해 먼저 아래 지수 적분(exponential integral)을 생각하자.

                      (9)

                         (10)

                         (11)

식 (10)으로 인해 전체 복소 평면(complex plane)에서 지수 적분은 로그 함수의 특이성을 가지므로 아래와 같은 가지 자름(branch cut)을 정의해야 한다.

[그림 2] 로그 함수를 위한 가지 자름

그러면 복소 평면에서 지수 적분은 다음으로 표현할 수도 있다.

                         (12)

신기하게도 복소 영역에서 지수 적분은 사인 적분(sine integral)과 코사인 적분의 합으로 표현된다. 식 (12)의 정의식을 식 (10)에 대입해 정리해보자.

                         (13)

여기서 $x > 0$이다. 만약 $x < 0$인 경우는 식 (13)과 비슷하게 증명해서 $E_1(ix)$ = $-\operatorname{ci}(x) - i \operatorname{si}(x)$를 얻을 수 있다.
그러면 코사인 적분은 다음처럼 새롭게 정의될 수도 있다.

                         (14)

식 (14)처럼 코사인 적분이 0에서 $x$로 정의된 경우는 소문자가 아닌 대문자를 이용해 $\text{Ci}(\cdot)$로 표현한다. 특히 식 (14)에 있는 적분을 강조하여 코사인 적분 $\text{Cin}(\cdot)$(Cosine integral)을 다음처럼 표현하기도 한다.

                         (15)

                         (16)

코사인 적분을 표현하는 이름이 $\text{ci}(x), \text{Ci}(x), \text{Cin}(x)$와 같이 다양함도 꼭 기억하자.


   1. 기본(basics)   

[대칭성(symmetry)]

                         (1.1)

                         (1.2)

여기서 $x > 0$이다.

[증명]
식 (16)과 [그림 2]에 있는 로그 함수의 가지 자름을 고려해서 다음처럼 유도한다.

                         (1.3)
______________________________


[참고문헌]
[2] J. D. Mahony, "On alternative evaluation of the integrals $\text{Cin}(z)$ and $\text{Si}(z)$," IEEE Antennas Propag. Mag., vol. 56, no. 2, pp. 156–160, April 2014.

2013년 2월 1일 금요일

사인 적분(Sine Integral)

[경고] 아래 글을 읽지 않고 "사인 적분"을 보면 바보로 느껴질 수 있습니다.
1. 적분법의 의미
2. 테일러 급수
3. 미분 방정식의 의미
4. 지수 적분


[그림 1] 사인 적분(출처: wikipedia.org)

피적분 함수가 사인 함수(sine function)로 구성된 적분(integration) 중에서 가장 유명한 적분은 아마 다음의 사인 적분 $\text{Si}(\cdot)$(Sine integral)이다.

                       (1)

사인 적분이 중요한 이유는 피적분 함수가 표본화 함수(sampling function) $\text{Sa}(x)$이기 때문이다.

                       (2)

사인 적분의 의미를 찾기 위해 표본화 함수로 만든 다음 적분을 고려한다.

                       (3)

                       (4)

여기서 $\operatorname{rect}(\cdot)$는 구형 함수(rectangular function) 혹은 사각 함수, $\mathfrak{F}[f(t)]$는 $f(t)$의 푸리에 변환(Fourier transform)이다. 식 (3)과 (4)처럼 표본화 함수의 적분 구간이 무한대이면 적분값을 정확히 구할 수 있다. 다만 식 (3)의 증명에는 고급 개념인 푸리에 변환의 쌍대성(duality)이 필요하다. 만약 적분 구간이 식 (1)처럼 유한하다면 어떻게 될까? 여기에 대한 답이 바로 식 (1)의 사인 적분이다. 식 (1)의 적분값은 사인 함수의 테일러 급수(Taylor series)를 이용해 쉽게 구할 수 있다.

                         (5: 삼각 함수의 합차 공식)

                       (6)

식 (6)은 사인 함수에 대한 적분 결과이므로 식 (6)의 무한 급수(infinite series)는 모든 영역에서 수렴한다. 하지만 이 부분은 수학적으로만 맞는 말이고 실제 수치 계산에서는 맞지 않다. $x$가 커지면 무한 급수의 항이 빠르게 커져 매우 많은 항을 합쳐 주어야 수렴하게 된다. 그래서 수치 계산을 효율적으로 하려면 사인 적분의 점근식(asymptote)이 필요하다. 사인 적분의 점근식을 구하기 위해 식 (4)와 부분 적분(integration by parts)을 이용한다.

                       (7)

식 (7)의 과정을 계속 반복하면 다음 결과식을 얻을 수 있다.

                     (8)

다음으로 사인 적분이 만족하는 미분 방정식(differential equation)을 찾아본다. 찾는 법은 비교적 간단하다. 사인 적분을 미분하여 계수를 서로 비교하면 쉽게 관계되는 미분 방정식을 만들 수 있다.

                       (9)

세 번 미분한 관계식을 한 번과 두 번 미분한 관계식과 연립할 수 있어서 다음 미분 방정식의 해는 사인 적분이 된다.

                       (10)

어차피 적분해서 식 (2)의 표본화 함수가 나오면 식 (10)의 미분 방정식을 만족하므로, 새로운 사인 적분을 다음처럼 정의할 수 있다.

                       (11)

식 (7)을 참고하면 식 (11)의 정의는 점근식 유도에 매우 유용하다. 사인 적분 간의 관계식은 다음과 같다.

                       (12)

식 (4)에 소개한 이상 적분(improper integral)은 신기하게도 수렴한다. 하지만 아래 절대값을 가진 적분은 발산한다[2]. 식 (4)와 (5)의 예는 절대값 유무에 따라 적분값이 수렴 혹은 발산하는 좋은 예이다.

                       (13)

식 (13)의 증명은 의외로 간단하다. 식 (13)의 적분 구간 일부를 다음과 같은 수열로 표현한다.

                (14)

수열 $a_n$은 조화 급수(harmonic series)의 항보다 항상 크고 조화 급수는 발산하므로 식 (13)은 발산한다.


   1. 기본(basics)   

[대칭성(symmetry)]

                         (1.1)

                         (1.2)

[증명]
식 (11)에서 적분 구간을 바꾸면 다음과 같다.

                         (1.3)
______________________________


   2. 특정값(specific value)과 극한(limit)   

[표본화 함수(sampling function)]
사인 적분의 피적분 함수인 표본화 함수의 영점(zero)은 $x$ = $0$을 제외한 $\sin(x)$ = $0$에서 구한다.

                         (2.1)

비슷하게 표본화 함수의 극값이 나오는 극단점(極端點, extreme point or local extremum point)은 다음과 같다.

                         (2.2)

[표 2.1] 표본화 함수의 극단점, $p_m$(출처: wolframalpha.com)
극단점, $p_m$극단점의 계산값
$p_0$0
$p_1$4.49340945790906417530788092728032208222$\cdots$
$p_2$7.72525183693770716419506893306298662638$\cdots$
$p_3$10.9041216594288998271487027901886838721$\cdots$

표본화 함수의 극단점은 $x$ = $0$을 제외하고는 쉽게 구할 수 없어서, 수치 해석으로 근 찾기(root searching or finding)를 해야 한다. 우함수(even function) 특성으로 인해 극단점은 $x$ = $\pm p_m$에서 생긴다. 또한 $x$가 커짐에 따라 $p_m$ = $\pi/2 + m \pi$에 수렴한다.

[그림 2.1] 표본화 함수의 제곱이 1/2(출처: wolframalpha.com)

표본화 함수의 제곱이 1/2로 나오는 $x$값은 공학 분야에 빈번하게 쓰인다.

             (2.3)

예를 들면, 안테나의 복사 패턴을 수치로 보여주는 빔폭(beamwidth) 정의에 식 (2.3)이 유용하게 사용된다.


   3. 이상 적분(improper integration)   

[표본화 함수(sampling function)]

                         (3.1)

[증명]
부분 적분을 먼저 적용한 후에 식 (4)를 가져온다.

                         (3.2)
______________________________

표본화 함수는 특이하게도 자기 자신의 적분과 제곱한 적분의 결과가 서로 동일하다.


[참고문헌]
[2] Andrés Caicedo, "175 - The sine integral," Teaching Blog, 2008.
[3] J. D. Mahony, "On alternative evaluation of the integrals $\text{Cin}(z)$ and $\text{Si}(z)$," IEEE Antennas Propag. Mag., vol. 56, no. 2, pp. 156–160, April 2014.

[다음 읽을거리]
1. 코사인 적분

2013년 1월 30일 수요일

다이폴 안테나의 복사 저항(Radiation Resistance of a Dipole Antenna)

[경고] 아래 글을 읽지 않고 "다이폴 안테나의 복사 저항"을 보면 바보로 느껴질 수 있습니다.
1. 가장 쉬운 안테나 이론
2. 안테나의 복사저항
3. 헤르츠 다이폴
4. 다이폴 안테나
5. 코사인 적분

[확인] 본 페이지는 exp(jωt) 시간 약속을 사용하고 있습니다.


[그림 1]에 있는 다이폴 안테나(dipole antenna)입력 임피던스(input impedance)을 규정하는 중요한 양이 복사 저항(radiation resistance)이다. 안테나의 복사 저항을 구하려면 먼저 원역장(far-field) 복사 패턴을 구해야 한다.

[그림 1] 다이폴 안테나

다이폴 안테나(dipole antenna)의 복사 패턴(radiation pattern)은 헤르츠 다이폴(Hertz dipole)전자기장(electromagnetic field) 복사식을 이용해서 다음처럼 구한다.

                       (1)

                       (2)

여기서 $l$은 다이폴의 길이이다. 식 (1)의 복사 패턴을 이용해 다이폴 안테나의 복사 전력(radiated power)을 구하자.

                       (3)

식 (3)은 수치 적분(numerical integration)을 통해 구할 수도 있지만 반파장 다이폴 안테나(half-wave dipole antenna)인 경우는 간단하게 적분할 수 있다. 반파장 다이폴 안테나의 복사 패턴인 식 (4)를 식 (3)에 대입해서 복사 전력에 대한 적분을 얻는다.

                       (4)

                   (5)

식 (5)에는 특수 함수인 식 (6)의 코사인 적분(cosine integral)이 등장한다.

                       (6)

따라서 반파장 다이폴 안테나의 복사 전력은 다음처럼 표현된다.

                        (7)

식 (7)의 관계식을 통해 복사 저항을 구해보면 다음과 같다.

                       (8)

반파장 다이폴 안테나의 복사 저항은 실무 차원에서 매우 중요한 의미를 가진다.

   
[그림 2] 동축선(출처: wikipedia.org)

실험에 많이 쓰이는 [그림 2]의 동축선을 보자. 실무에 사용하는 동축선의 특성 임피던스(characteristic impedance)는 주로 50 혹은 75 Ω을 가진다. 만약 동축선의 특성 임피던스를 75 Ω으로 택하면, 임피던스 정합 회로(impedance matching circuit)가 없더라도 반파장 다이폴 안테나를 거의 반사(reflection)없이 동축선과 연결할 수 있어 전체 회로 구조가 매우 단순해진다.

2013년 1월 26일 토요일

Postcript 파일 읽는프로그램

수학자들이 좋아하는 문서 편집 프로그램인 LaTex은 기본적으로 포스트스크립트(PS: postscript) 파일을 생성한다. LaTex이 공짜인 것처럼 PS 파일 보기 프로그램(GSview)도 공짜이다. 자신의 OS에 맞게 Ghostscript를 깐 후 GSview를 깔면 PS 파일을 볼 수 있다.

2013년 1월 21일 월요일

32비트 코드를 64비트로 변환(Code Conversion from 32-bit to 64-bit)

윈도우7이 인기를 끌면서 64비트 프로그래밍(64-bit programming)은 거스를 수 없는 대세가 되었다. 아래 정보를 확인해 이전에 짜둔 Visual Studio의 32비트 코드를 64비트로 바꾸어 보자.

[64비트용 솔루션 플랫폼(solution platform) 생성]
1. “구성 관리자 -> 활성 솔루션 플랫폼 -> 새로 만들기”에서 ‘x64’를 추가함

2. “활성 솔루션 구성”에 “Debug x64”, “Release x64”를 추가하고 플랫폼을 모두 ‘x64’로 바꿈: "활성 솔루션 플랫폼"을 'x64'로 바꾸면 모든 솔루션이 x64로 바꾸므로 플랫폼 항목만을 바꾸자.

현재 컴파일러가 64비트 모드에서 동작 중인지 확인하려면 '_WIN64' 정의 여부를 확인하면 된다. 이걸로 확인이 안된다면 "구성 속성 -> C/C++ -> 전처리기 -> 전처리기 정의"에 'WIN64'를 추가하면 해결된다. 한가지 조심할 것은 '_WIN32'이다. 이 정의는 32비트와 64비트 모두에서 사용되기 때문에 '_WIN32'를 이용해 32비트 유무를 판별해서는 안된다. 반드시 '_WIN64'를 써야 한다.

[데이터 변환]
  • int -> INT64, __int64, long long
  • long -> LONG64, __int64, long long
  • unsigned int -> UINT64, usigned __int64, unsigned long long
  • unsigned long -> ULONG64, usigned __int64, unsigned long long
  • INT_PTR, UINT_PTR, LONG_PTR, ULONG_PTR처럼 ..._PTR로 끝나는 변수는 컴파일러가 32비트 모드인지 64비트 모드인지에 따라 선언되는 변수 종류가 자동으로 달라짐
  • int 상수 1 -> 1i64
  • long 상수 1L -> 1LL
  • unsigned int 상수 1 -> 1ui64
  • unsigned long 상수 1UL -> 1ULL 
double에 대해서는 변경할 것이 없다. long double이든지 double이든지 컴파일러는 동일한 코드를 만든다.

[참고문헌]

2013년 1월 1일 화요일

NEC-2의 문법(Grammar of NEC-2)

[경고] 아래 글을 읽지 않고 "NEC-2의 문법"을 보면 바보로 느껴질 수 있습니다.
1. 계산용 전자파 코드: NEC


NEC-2(Numerical Electromagnetic Code)는 포트란(Fortran: IBM 수학 공식 번역 체계, The IBM Mathematical Formula Translating System) 언어를 기반으로 만들었기 때문에, 문법 구조도 포트란과 매우 유사하다. 요즘은 포트란 사용자가 거의 없어서 포트란은 프로그래밍계의 라틴어에 해당한다. 하지만 우리 선배들이 이루어 놓은 방대한 포트란 코드로 인해, 수치 해석을 할 때는 어쩔 수 없이 포트란을 사용해야 하는 경우가 있다. NEC-2를 사용할 때 주의 사항은 아래와 같다.
  • 길이 단위는 단위 표준인 미터(meter)이다.
  • 주파수 단위는 Hz가 아닌 MHz이다. 
NEC-2의 예제는 [표 1]에 제시한다.

[표 1] NEC-2용 다이폴 안테나 예제
Example1.nec
CM Example 1 : Dipole in free space   ' Comment cards
CM See GetStarted.txt
CE    ' End of comment
'
GW 1 9 0 -.2418 0 0 .2418 0 .0001   ' Wire 1, 9 segments, halve wavelength long.
GE 0   ' End of geometry
'
EX 0 1 5 0 1 0   ' Voltage source (1+j0) at wire 1 segment 5.
'
FR 0 1 0 0 300 0   ' Set design frequency (300 Mc).
'
EN   ' End of NEC input


   1. 주석 처리(CM: CoMment)   

주석은 반드시 CM으로 시작해야 한다. 주석을 끝내려면 CE(Comment End)를 넣는다. 예를 들어 위에 있는 Example1.nec을 보자. 위 코드에 보이는 ' 표시는 그 다음 부분부터 무시하라는 뜻이다.


   2. 변수 정의(SY: SYmbol)   

변수 정의는 SY로 시작해야 한다. 문법은 아래와 같다.

[문법]
SY a = 1   ' a에 1을 대입
______________________________


   3. 금속 구조 입력(geometry)   

NEC-2는 아래처럼 여러 가지 구조를 입력할 수 있다. 구조 입력이 끝나면 GE(Geometry End)를 넣는다.

3.1. 선 구조 입력(GW: Geometry of Wire)

NEC-2에 금속 선을 넣는 명령은 GW이다.

[문법]
GW nTag nSegment x1 y1 z1 x2 y2 z2 rad   ' nTag번 금속 선에 nSegment개의 분할(segment) 생성, 금속 선은 좌표값 (x1, y1, z1)과 (x2, y2, z2)에 위치, 금속 선의 반지름은 rad
______________________________

금속 선 좌표값과 반지름의 단위는 모두 미터이다. 위에 있는 금속 선 번호(nTag)는 선 특성을 변경할 때 사용되므로 모든 선이 다른 번호를 가져야 한다.

3.2. 접지면(ground) 선택

접지면은 GE 다음에 오는 숫자를 이용해 다음처럼 정한다.
  • GE 0   ' 구조물이 자유공간에 있음
  • GE 1   ' 구조물이 접지면 위에 있음, 자세한 사항은 GN(GrouNd) 명령어로 정해야 함
  • GE -1   ' 구조물이 접지면 위에 있음, 자세한 사항은 GN(GrouNd) 명령어로 정해야 함
GE 1과 GE -1은 접지면이 있음은 동일하지만 금속 구조물이 접지면과 닿은 경우의 처리가 다르다. GE 1은 구조물이 접지면과 닿으면 구조물의 전류 분포를 바꾸어 구조물과 접지면이 붙게 한다. GE -1은 접지면과 닿은 부분의 구조물 전류 분포를 0으로 만들어 구조물과 접지면 연결을 사실상 끊는다.


   4. 원천 입력(EX: EXcitation)   

구조물 입력후에는 원천(source or excitation)을 넣어야 한다.

4.1. 전압원(voltage source)

[문법]
EX 0 nTag nSegment 0 real imag   ' 전압원을 nTag 번호를 가진 선 구조의 nSegment에 입력, 전압원의 복소수 입력값은 (real, imag)임
______________________________


   5. 주파수 입력(FR: FRequency)   

계산을 위한 다양한 주파수 입력은 아래처럼 한다. 주파수 단위는 MHz이다.

5.1. 단일 주파수(single frequency)

[문법]
FR 0 1 0 0 freq 0 ' 주파수 freq MHz로 계산
______________________________


   6. 끝내기(EN: ENd)   

NEC-2 입력을 끝내려면 EN을 넣는다.


[참고문헌]
[6] P. Knott, Wire Antenna Modelling with NEC-2, 2009.