구글링 도중 갑자기 화면이 깨지면서 "you ... our language" 어쩌고 하더니, code challenge 해보겠냐고 물어봄.


구글이 easter eggs 나 prank (가령, recursion 을 검색한다던가) 를 많이 심어놓은 건 익히 알아서, 이건 또 뭔가 하고 클릭해봄.


갑자기 page 가 linux 스러운 terminal 로 변함.


무슨 창작 우주 동화같은 스토리가 좀 나오더니, 다음과 같이 문제가 나옴.





둥그런 케이크의 테두리를 M&Ms 로 둘러서 장식했는데,

M&Ms 에 알파벳 소문자가 써있고,

M&Ms 의 놓인 모양이 모두 똑같은 케잌 조각으로 나누어 먹으려고 함.


M&Ms 알파벳들이 놓인 전체 string s 로 부터,

최대로 나눠먹게을수 있는 케잌 조각수를 구하는 함수 answer(s) 를 작성하라는 내용.


가령,

'abccbaabccba' 인 경우, abccba / abccba 이므로 2

'abcabcabcabc' 인 경우, abc / abc / abc / abc 이므로 4


파이썬이나 자바로 풀라고 함. 다른 언어는 지원 안하는 듯


파이썬 버전은 어떤거 쓰나 궁금해짐.

문제 푸는데는 차이가 없을거 같았지만 그래도 궁금해서 보니까

문제의 제한조건등은 다음과 같이 볼 수 있음.





파이썬은 2.7 임. (3.x 는 언제쯤 널리 쓰일런지 ...)


암튼, 풀면 어떻게 되나 궁금해서 (문제가 만만해 보이기도 하고?) 일단 풀어봄.

알고보니 레벨 1 이라 ㅎㅎㅎ


코드를 작성하는 법은,

디렉토리 안에 solution.py 가 있는데,

edit solution.py 라고 커맨드를 치면,

vi 같은 text editor 가 화면 오른쪽에 생김.


editor 안에는 이미 함수 definition 이 시작되어 있고,

comment 로 여기다 코드를 치라고 나옴.

거기에 코드를 치면 됨.


저장하기랑 나가기가 있음. 다쓰고 저장하고 나간다음,

verify solution.py 라고 치면, 코드를 테스트 해 볼수 있음.


test case 들로 테스트를 돌려주는 거 같음.

모든 테스트 케이스에 대해 패스하면, 다음과 같이 녹색으로 메시지가 뜸.

이 때 submit solution.py 로 제출하면 되는듯.






제출 했더니 다음과 같은 화면이 나옴.




참고로, 저 토끼는 막 뛰어다님.


일단 초대를 받으면, google 로 로그인한 상태에서는 google.com/foobar 로 들어갈 수 있는 거 같음. 들어가니까 계속 이어서 나옴.


검색해보니, level 5 까지 다 풀면 무슨 구글에서 인터뷰 초대(?) 같은게 온다는 전설의 레전드가 있는 모양이던데, 그냥 낚시라는 얘기들도 있음.

아니면 엄청 impressive 한 방법으로 풀어야 연락이 오나 ㅋㅋㅋ 근데 그 많은 사람들의 코드를 창의성까지 따져가며 리뷰할 확률이 ...


진짜든 장난이든 확실히 구글스러움.

다음 레벨들도 궁금해서 시간날때 한번씩 풀어보고 싶긴 한데... 늘 그렇듯 시간이...


암튼, 재미있은 경험이었음.


신고

문제

출처: Facebook 수학 그룹



HTML


JavaScript








신고

앞서 [어린이를 위한 미적분학] 테일러 급수 에서, 1변수 테일러 급수를 어떻게 구하는지 살펴보았다.


이번에는 같은 논리를 2변수로 확장해보자.


일단, 2변수에서 테일러 급수를 논하기위해서는, 다변수 함수의 미분에 대해 짚고 넘어가지 않을 수 없지만, 일단 여기서는 필요한 모든 조건이 성립한다는 가정하에서, 테일러 급수의 계수를 구하는데만 초점을 맞추도록 한다. (다변수 함수의 미분에 관해서는 Calculus on Manifolds - M. Spivak 를 추천)


어떠한 2변수 함수 f = f (x,y) 가 (x0, y0) 을 지나고, 가령 무한번 미분 가능성 등의 조건들을 만족해, 어쨌든 다음과 같이 2변수 멱급수로 전개 가능하다고 하자.




계수의 첨자는 a_m,n 이라고 할때, m 은 x의 차수, n은 y의 차수랑 대응된다.

[ ] 는 첨자의 합이 0, 1, 2, ... 이런식으로 되도록 묶은것이다.

( 이런걸 weight 가 같다고 했던듯, 그래서 심지어는 isobaric 하다고 했던 거 같기도... -_-; )


암튼, 1 변수때와 마찬가지로, 계수만 결정하면 되는데, 기억을 되살려 보면...

우리의 메인 아이디어는, 미분과 대입을 통해, 구하고자 하는 계수만 빼고 전부다 날려버리는 것이었다.


a_0,0 부터 구해보자.


(x_0, y_0) 의 대입으로, a_0,0 를 제외한 나머지 모든 항은 사라진다. 따라서...


이제 a_1,0 과 a_0,1 을 구해보자. 어차피 (x0,y0) 를 대입할 것이므로, x 텀이든 y 텀이든 하나라도 살아있으면, 모두 0 으로 날아간다.

x 의 차수만 하나 떨어뜨리는 것은 x 로 편미분을 하면 되고, y 의 차수 하나만 떨어뜨리는 것은 y 로 편미분 하면 된다.


가령, x 로 한번 편미분 한 후에, (x0,y0) 를 대입하면, x 를 아예 포함하지 않는 항들은 기본적으로 모두 0 이 되고,

x 를 2차 이상으로 포함하는 항들은 (x-x0) 가 남아서, xo,yo 가 대입될때 모두 0 으로 사라진다.

결과적으로 (x-x0) 의 1차식만 가지고 있고, y항은 없는, a_1,0 의 항만 살아남는다. 따라서...




2차 까지만 더 해보자.


a_2,0 을 구하기 위해서, x로 두번 미분하고, x0,y0 를 대입하면 된다. x로 두번 미분하는 과정에서, x의 차수가 2차보다 낮은항들은 모두 사라지고, x의 차수가 2차보다 높거나, (y-y0) 를 가지고 있는 항들도 모두 사라진다.

단, 이때, (x-x0) 차수가 낮아지는 과정에서, 2! 이 앞으로 튀어나옴에 주의하자.


a_1,1 을 구하기 위해서는 x, y 한번씩 미분해주면 된다. 나머지항들은 x0,y0 대입하면 모두 사라진다. 

마찬가지로, a_0,2 를 구하기 위해서는 y 로 두번 미분해주면 된다.



이쯤되면, 감이 와야 정상이다.

x로 미분할때마다, x항의 차수가 앞으로 나오고, y로 미분할때마다 y항의 차수가 앞으로 나오므로...




보통의 사람이라면 다음을 유추한다.




이것으로 2변수 테일러급수는 다 구한거지만, 좀더 간결하게 써보자.


우선, 맨처음에 대괄호를 이용해서 표현했던 급수식은, 대괄호단위로 묶어서 생각하고, 다시 각 대괄호 안의 내용을 서메이션으로 표현하면, 다음과 같이 쓸수있다.






계수는 앞에서 구한 식에다 p 대신 k-m, q 대신 m 을 넣으면 되므로, 다음을 얻는다.











예제를 풀어보자.












하나 더 풀어보자.




같은 방식으로, n 변수로 확대하는 것도 어렵지 않다.


다음번에는 '테일러급수와 근사(approximation)' 에 대해서 살펴보도록 하자.




신고

스무드하고 연속인 곡선에 대한 직관적인 이해는, 다음의 정리들을, 적어도 직관적으로는, 상당히 straightforward 하게 느껴지게 만든다.


중간값 정리 (Intermediate Value Theorem)부드럽고 연속인 곡선이 중간에 수평선을 자르고 지나지 않을 수 없음


Rolle의 정리 (Rolle's Theorem) & 평균값 정리 (Mean Value Theorem)부드럽고 연속인 곡선은 중간에 평균기울기와 같은 기울기를 갖을 수 밖에 없음. 그려보면 당연하게 느껴진다.






물론, 당연하게 느껴지는 것들을 엄밀하게 증명하는 것은 수학의 중요한 일 중에 하나이다.

그리고, 간단한 (하지만 엄밀한) 증명을 통해, 위와같은 우리의 직관이 틀리지 않았음을 쉽게 확인할 수 있다. (텍스트북 참고)


그런데, 일반화된 평균값 정리 (Generalized Mean Value Theorem, Cauchy's Extended Mean Value Theorem 코시의 확장된 평균값 정리) 에 대해서는, 많은 텍스트북들이 직관적인 부분을 생략하곤 한다.


정리의 내용은, 간단히 말해, 다음과 같은 c 가 a 와 b 사이에 존재한다는 거다.




물론, 분모가 0 인 경우는 그냥 빼고, g 와 f 는 정하기 나름이므로, 바꿔써도 어차피 상관은 없다. f 를 identity function 으로 하고, g 대신 f 로 쓰면, mean value theorem 이 되므로, 확장된거 같긴 한데, mean value theorem 처럼 직관적으로 당연해 보이느냐고 물으면, 머뭇거리는 경우가 꽤 있다.







mean value theorem 은 y = f(x) 를 염두에 두면 상당히 직관적인데, 이번엔 다음과 같은 매개변수 그래프에 같은 직관을 적용해보자.



         







마찬가지로, 부드럽고 연속인 곡선에 대한 우리의 느낌은 다음과 같이 직선을 긋는것에 대해서도 당연하게 느껴지게 한다.






따라서, 다음과 같은 정리를 추측해 볼 수 있다.





매개변수 곡선에서 dy/dx 는 다음과 같으므로...





따라서, 우리는 원하던 추측을 얻는다. (평균값 정리에서와 마찬가지로, 증명은 보통 텍스트북에 나온다)






위와 같은 매개변수 곡선에서, f 와 g 에는 어떠한 차별도 없으므로, 굳이 f 가 분모로 가서 0이면 안되는 희생을 할 필요도 없고, g 도 마찬가지다. 


0이되면 안되는 상황을 제외시키는게 찝찝하면, 다음과 같이 써보자.



이렇게 적으면, 앞에서 제외시켰던 '분모가 0 이 되던 상황'은 f(b)=f(a) 인 경우라고 생각할 수 있고, 분자가 0이 아닌 경우, 매개변수 그래프에서 f(a)와 f(b)가 수직으로 놓인 경우가 된다.


매개변수 곡선에서는 괜찮지만, xy평면에서 y=f(x) 를 다룰땐, 기울기가 무한대가 되는 상황이다. 암튼, 분수꼴로 적지않은 식에서는 f '(c)=0 이 되게 만드는데, 이는 t가 변하는데도, x가 변하지 않는 상황으로 우리의 직관과 일치한다.


이처럼 우리는 엄밀한증명(from 텍스트북)과 함께 직관적인 느낌도 함께 가져가는 것이 좋다.



신고

Windows 8.1 로 업데이트 하면서, Taskbar 에 있는 explorer 의 경로 수정이 전보다는 귀찮아졌다.

이전에는 7 때와 마찬가지로 우클릭 properties 로 경로를 "explorer.exe /e, [원하는 경로, 생략시 내컴퓨터]" 로 바꿔주면 되었던거 같은데...


뭐 암튼, 일단 taskbar 에 있는 explorer 아이콘을 우클릭해서 정보를 보니, File Explorer.lnk 라는 shortcut 이다.


파일의 경로는, C:\Users\유저명\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\File Explorer.lnk 라고 나온다.





저 shortcut 파일을 다른 shortcut 으로 대체해주면 될듯?


explorer.exe 를 찾아서 shortcut 을 만든다.






생성된 shortcut 파일을 우클릭 properties 로 들어가서, target 을 변경해준다.



나는 거의 항상 C:\로 드가므로, 위와같이 설정했다. 위의 그림에서 네모로 보이는건 백슬래쉬(\) 이다.


변경사항을 저장하고, 파일의 이름을 File Explorer 로 변경해준다. 아까 File Explorer shortcut 이 있던 경로에 덮어씌워준다.

그리고, 다시 taskbar 의 file explorer 을 눌러보니, 바로 C:\ 로 들어간다. 굿.










신고

간단한 수학 퀴즈

Quizes2013.10.03 01:44 |

전체집합의 임의의 원소 a,b,c,d 에 대해...


기호 ☆ 는 다음과 같은 성질이 있다.

☆( a, b ) = ☆( b, a )
☆( a, ☆( b, c ) ) = ☆( ☆( a, b ), c )


기호 ♡ 는 기호 ☆ 에 대해 다음과 같은 성질이 있다.

☆( a, ♡ ) = a

♤( a, b ) 는  ☆( ♤( a, b ), b ) = a   을 만족하는 대상에 대한 이름(Naming) 이다.

다음을 증명하라.
☆( ♤(a,b), ♤(c,d) ) = ♤( ☆(a,c) , ☆(b,d) )

신고

한국어 IME 를 쓰는 경우에, 액세스에서 텍스트 필드로 들어가면 자동으로 한글로 바뀌는 경우가 있다.

뭐 간단하게 한국어 IME 를 지우면 한글로 바뀌는 현상을 방지할 수 있기는 한데... 그럼 한글을 써야할때 애로사항이 꽃피게 된다.

 

한국어IME의 영어로 작성된 엑셀파일 하나를 임포트 해보았다.

 

 

필드만 클릭하면 한글로 바뀐다. 영문입력을 하려면 매번 한/영 키를 눌러줘야 하는 번거로움이 따른다.

 

 

영문 키보드를 기본으로 설정해도, default editing language를 영어로 설정해도... 별 소용이 없다.

 

 

 

필드 속성을 보니, IME mode 가 한글(Hangul) 로 되어있다.

이걸 일일이 No Control 로 바꿔주면 되기는 하는데... 필드가 여러개일땐 상당히 번거롭다.

 

임포트 해오기 전에, 데이타 유효성 검사에서 IME 모드를 미리 세팅하면 되려나 해서 드가보았지만, IME mode 와 같은 탭은 있지도 않고...

(영문 윈도우즈/ 영문 오피스 라서 그런가...)

 

암튼 요따위 문제가 있을땐, 요따위 방법을 시도해보자.

 

       우선 파일탭으로 가서...

 

Options 항목을 선택한다.

 

 

     거기서 Client Settings 로 가서...

 

 

    Datasheet IME control 에 체크를 해준다.

 

 

액세스를 종료했다가 다시 실행시킨다.

아까 저장한 액세스 파일을 다시 열어서 필드속성을 보니까 여전히 IME mode 는 Hangul 로 되어있는데, 자동으로 한글로 바뀌는 현상은 없어졌다 :)

 

 

 

 

신고
인간이 발명한 무수한 인덱스들 가운데, 가장 널리, 가장 자주, 그리고 가장 중요시 사용되는 게 평균이 아닌가 싶다.

성적도 평균내고, 이익도 평균내고, 심지어 사람의 가치도 평균 내고...


일전에 산술평균과 기하평균편에서, 시퀀스의 중간항으로서의 평균을 살펴봤었다.

이번엔 산술평균의 개념을 일반적인 함수까지 확장해보도록 한다.


평균의 가장 원시적 이미지는 두 값의 중간쯔음에 해당하는 값이라고 할 수 있다.




샘플의 개수를 늘리면서 정의는 다음과 같이 확장된다.






이쯤 되면, 평균에 중간이라는 말을 쓰기가 좀 애매해진다.


우변의 분모에 있는 n을 좌변으로 이동시켜보자.

이와 같은 짓은 미분의 정의를 매니폴드로 확장할때도 볼 수 있다.


암튼 n을 옮기면...


요래 되고, 다음과 같이 된다.







결과적으로 (산술) 평균이라는 값은 샘플들에 대해 오바되는 총 값과 마이너스 되는 총 값이 같아지는 지점의 값이라고 할 수 있다.



이제 이 정의를 "특정구간에서의 함수의 평균"으로 확장해보자.

(사실 방금 한것도 함수였지만, 이제 연속의 개념을 넣자는 거다.)



함수가 어느부분이든 연속인 부분이 있다면, 샘플의 수는 무한개가 된다.

[a,b] 구간 내에서, 일단 유한하게 샘플링을 하자.




그러면 일단은, 앞에서 정의한 개념을 쓸 수가 있다.


함수가 무한개의 데이터 포인트를 가지고 있는 반면, 우리는 고작 유한개의 샘플링만을 했기 때문에, 일정간격으로 구간내의 샘플의 수를 계속 무한히 늘려나가면서 앞에서 정의한 평균의 개념을 적용한 값이 어디로 다가가는지를 보는 거다.




주어진 간격내에서 샘플링의 수를 무한히 늘려나가면, 등간격 샘플포인트들간의 간격은 좁아지게 된다.

x 에서의 샘플링간격을 일정하게 하기로 하고, 그 간격을 델타 x 라고 놓자.


위의 극한개념의 정의에서 분모,분자에 델타x 를 곱해보자. 분모 분자에 0 아닌 같은것을 곱했으므로 값의 변화는 없다. 샘플링의 수가 무한개로 늘어나면, 샘플링간격 델타x는 0으로 다가간다.




여기서   n 곱하기 델타x  는 구간의 길이와 같으므로 다음과 같이 쓸 수 있다.





여기서 fi 곱하기 델타x 는 델타x를 밑변으로 하고 fi 를 높이로 하는 가느다란 막대기의 면적이다.

샘플링수를 무한히 늘려가면, 막대기의 폭은 점점 좁아지고, 이러한 막대기들의 면적을 합한것은 점점 그래프의 밑면적으로 다가간다.


즉, 윗식의 분자는 요래된다.



따라서 다음을 얻는다.




구간길이를 좌변으로 넘겨보면, 구간길이를 밑변으로 하고 면적이 '그래프 아래넓이'와 같은 직사각형의 높이가 f의 평균값임을 알 수 있다.



그러므로, 평균값을 기준으로 위로 넘친 넓이와, 아래로 부족한 넓이가 같게 됨을 확인할 수 있다.


--------------------------------------------------------------------------------------------------------

저저번주 과외 내용 중...


저작자 표시 비영리 변경 금지
신고

글라스에 얼음넣고 술따라 마시다가 떠오른 문제 :)



그림과 같이 얼음이 물에 떠있다. 


얼음이 녹으면 수면의 높이는 ?

1. 올라간다
2. 변하지 않는다
3. 내려간다 

수식을 통해 증명하라.

(단, 대기압력, 온도 따위는 모두 일정하다고 가정하고, 표면장력따위는 고려대상에서 제외하여 수면은 평평한것으로 한다. 단순함을 위해, 그 밖에 외부적인 요소들도 고려하지 않는다.)

신고



나오기전에 마지막으로 연습했던 곡.

신고
폴라 트라이앵글은 1부에서 도입을 했는데, 여기서 좀 더 자세히 살펴보도록 하겠다.

삼각형 ABC 가 있다고 할때, 다음과 같이 A'B'C' 을 결정하면 그것을 ABC의 극삼각형 이라고 부른다.

변AB 의 pole 중에서 C와 같은 반구에 있는 점 -> C'
변BC 의 pole 중에서 A와 같은 반구에 있는 점 -> A'
변CA 의 pole 중에서 B와 같은 반구에 있는 점 -> B'




이때, AA' , BB' , CC' 는 모두 90도 보다 작다.

가령, AA' 를 보면, A 는 BC 위에 있지 않고, A' 과 같은 반구에 있는데,
A' 이 pole 인 반구내에 A 가 있기 때문에 A' 으로부터의 거리가 90도보다 작게 된다.



폴라 트라이앵글의 듀얼리티
두 삼각형 ABC 와 A'B'C' 은 서로의 폴라 트라이앵글이다.

증명의 스케치는 다음과 같다.
1. A 가 B'C' 의 pole 이고
2. B'C'의 pole 중에 A 가 A' 과 가까운 pole 임

나머지에 대해서도 같은 논리가 적용되므로 이것으로 충분하다.

1)
B' 은 AC 의 pole 이므로, B'A 는 90 도 이다.
C' 는 AB 의 pole 이므로, C'A 는 90 도 이다.

B'A 와 C'A 가 모두 90 도 이므로, A는 B'C' 의 pole 이다.

2) AA' 이 90도 보다 작으므로, A의 반대편쪽 폴과 A' 사이의 거리는  90도 보다 크다. 즉, A가 A' 과 같은쪽에 있는 폴이다.


달리말하면,  ABC 각 꼭지점을 극점으로 하는 대원들에 의한 삼각형중에 ABC의 폴라 삼각형이 있다고 할 수 있다.



보각(supplement)

보(supplement) 라고 하면, 합쳐서 어떠한 값이 되는 녀석들을 일컫는 경우가 많은데,
평면도형에서 보각이라고 하면, 합쳐서 평각이 되는 각을 말하고, 또, 수론에서 보수라고 하면, 합쳐서 어떤 정해진 값이 되는 수를 말한다.

여기서도 보각을 합쳐서 180도가 되는 각으로 정하기로 하자.



극삼각형 보각정리

ABC 와 A'B'C' 을 서로 극삼각형이라고 하면,  A + B'C' = 180 도  이다.



증명)
역시, 간단한 스케치만 하도록 하자.

ABC 의 극삼각형을 A'B'C' 이라고 할때,
AB가 포함된 대원, AC가 포함된 대원이 B'C' 가 포함된 대원과 만나는 점을 각각 PQ 라고 하면

PQ는 B'C' 가 포함된 대원위의 호이고, 그것의 극점은 A 이므로...

A = PQ 가 된다.

또한, B' 은 AQ의 극점이므로, B'Q = 90도
        C' 은 AP의 극점이므로, C'P = 90도   가 된다.

그러므로,     B'Q + C'P = 180 도
               =  B'Q + C'Q + PQ = B'C' + PQ = B'C' + A          이 되어, 증명은 충분하다.




위의 정리를 이용하면, 구면삼각형의 내각의 합이 180도 보다 큼을 간단히 보일수 있다.

A + B'C' = 180
B + C'A' = 180
C + A'B' = 180

∴    B'C' + C'A' + A'B' = 540 - ( A + B + C )

그런데, 구면삼각형의 세변의 합은 360보다 작다는 것은 이미 알고 있다. ( 360도가 되면, 대원이 되어버린다. -_-)

∴  0 < B'C' + C'A' + A'B' < 360

∴    0   <   540  -   ( A + B + C )  < 360

∴   -540 <  -  (A + B + C )   < - 180

∴   180  <   A + B + C  <  540





4부에서는 구면삼각형에 대한 삼각함수 법칙들을 살펴보도록 하겠다.
신고
Milhaud - Suite op.157b
Performed by Ensemble Incanto




I. Ouverture : Vif et gai
II. Divertissement : Animé
III. Jeu: vif
IV. Introduction et Final: Moderé / Vif
신고
지구를 대충 구라고 가정하면, 우리의 삶은 그냥 구면기하 자체라고 할 수 있다.
실제로 많은 문제에서 지구를 구로 가정하여 단순화시켜서 푸는데, 그래서 이번 글에서는 쉬어가는 페이지로다가,
지구를 구라고 가정하고 그에 따른 몇 가지 용어들에 대해 살펴보도록 한다.

노티컬 마일 ( nautical mile , geographical mile, 해리, sea mile )
노티컬 마일(=해리) 은 대원(great circle)상의 1분 ( = 60분의1도 ) 을 뜻하고, nautical mile 을 줄여서 nmil  따위의 기호를 사용한다.
바닷일(?) 하는 사람들은 그냥 '마일' 이라고 하면 보통 노티컬 마일을 말하는 경우가 많댄다.


노티컬 마일은  보통의 마일 ( land mile , statute mile ) 보다 약간 더 긴데, 대략 1.15 마일 정도 이다.


노트(knot)
노트는 nautical mile per hour ( nmil / h )  를 말한다.  우리말로 하자면,  1 노트는 '시속 1 해리' 이다.

지구를 구라고 가정하면, 적도는 대원이므로, 적도상에서의 1도는 60 해리가 된다. 따라서, 태양이 적도위를 한시간에 대략 15도 이동한다고 치면,
적도표면에서 태양의 속도는 900 노트 정도라고 할 수 있다. 참고로, 문무대왕함의 최고속도가 29 노트라고 하니까, 두시간정도 전속력으로 달리면 적도에서 1도 정도 이동할 수 있겠다.


남북극(south pole and north pole) 과 적도 (equator)
남극과 북극은 지구의 자전축이 지구면과 만나는 두 점으로, 자전을 오른나사 회전으로 볼때, 나사의 진행방향이 북극을 가리킨다.


남북극을 두 pole 로 하는 대원(great circle)을 적도(equator) 라고 부른다.


자오선(meridian)
북극과 남극을 양 끝점으로 하는 half great circle ( 반 대원 ) 을 자오선(meridian) 이라고 한다.



특히, 영국의 옛 그리니치 천문대를 지나는 자오선을 본초자오선(prime meridian) 이라고 하고, 경도의 기준으로 정했다.


경도 (longitude) 와 시차 (time difference)
자오선을 포함하는 반원사이의 면간각을 경도라고 하는데, 본초자오선을 0 도로 정하고, 그로부터 서쪽은 W 로 동쪽은 E 로 표시한다.
따라서, 경도는 동서의 간격을 나타내고, 15도가 1시간의 시차를 나타낸다.

가령, 서울이 대략 동경 127도이고, 뉴욕이 서경 74도 정도이므로, 총 201 도 정도가 차이가 나고, 대략 13시간 30분 정도 차이가 난다고 할 수 있다.
그런데 이것은 실제의 체감 시차이고, 공식적으로는 15도 간격으로 정해진 표준시라는 것을 채택하기 때문에 공식 시차하고는 좀 차이가 있다.
한국 표준시는 얼추 일본의 교토를 지나는 동경 135도를 기준으로 하고, 뉴욕은 서경 75도를 기준으로 삼기 때문에, 서울과 뉴욕의 공식적인 시차는 14 시간 이다.

태양이 동쪽에서 서쪽으로 이동하기 때문에, 두개의 근접한 지역에 대해 동쪽의 지역이 서쪽의 지역보다 아침이 먼저 온다고 생각할수 있다.
그런 개념으로 동쪽이 서쪽보다 시각이 앞서도록 세팅하는데, 문제는 시각이 빠르다와 느리다가 경도 180도에서 충돌하는것. 그래서 그 자오선을 날짜변경선(date-line) 이라고 한다. ( 실제로는 편의상 약간의 수정을 하는데, 기본적인 컨셉은 저런것이다. )


위도(latitude) 와 위선(parallel of latitude)
어떤 점의 위도는 그 점을 지나는 자오선에 대해, 적도 부터 그점까지의 중심각을 말한다. 적도를 기준으로 북반구쪽에 대한 위도를 북위, 남반구쪽 위도를 남위라고 한다.


등위도가 이루는 소원을 위선(parallel of latitude) 또는 위도선이라고 부른다. 위선들은 모두 자전축에 수직인 평면상에 놓이고, 서로 모두 평행하다. 적도를 제외한 모든 위선들은 소원들이다.

위도가 적도에서 그점에 이르는 각도라면,  여위도(colatitude) 는 북극점에서 해당 점에 이르는 각도이다.
북위를 + , 남위를 - 로 놓으면, 그냥 90도에서 위도값을 빼주면 나온다.





퀴즈.
섬 A는 동경 110 도, 북위 60도에 있고,   섬 B 는 동경 170도, 북위 60도에 있을때, 두 섬사이의 거리위선상거리 는 각각 몇 해리 인가?

(참고. 거리는 대원상에서 이동하는것이고, 위선상거리는 위도선을 따라 움직이는 것이다. )
신고
Prokofiev - Piano Concerto No.1

 
 

1악장



2악장


3악장

신고
Bach -  Concerto No. 1 in F major, BWV 1046

  1. 1
  2. 2
  3. 3

트레버피녹이나 톤쿠프만에 비해 아웃스탠딩하게 탁월함.


악장별로 듣기

1악장 
  1. 1

2악장
  1. 2

3악장 ★
  1. 3

 
윈앰프가 flac 포맷을 지원안하는줄 알았는데, 오늘써보니 flac 도 재생되네 푸헐...
flac 으로 바로 재생하니까 mp3 변환한거랑 확실히 차이가 나긴나는구나 -_- ;

p.s.  정말 오랫만에 음악을 올려보는거 같다.
        짱박아 뒀던 음악파일들을 이제야 노트북으로 옮겨와서...
 

 

 
신고
great circle (대원) 과 small circle (소원) 
구면은 한 점으로 부터 거리가 같은 모든 점들의 집합이다. 중심으로 부터 구면까지의 직선거리를 반지름(radius) 라고 부른다.
중심을 지나는 직선과 구면이 만나는 두점사이의 거리를 지름(diameter)이라고 부른다.

평면과 구가 만나서 생기는 원에 대하여, 평면이 구의 중심을 지날때 생기는 원을 그레이트 써클 (great circle, 대원) 이라고 부르고,
그렇지 않은 경우에 대해서 스몰 써클 ( small circle, 소원 ) 이라고 부르기로 한다.


보는 바와 같이, 그레이트 써클의 반지름은, 구의 반지름과 같고, 스몰서클의 반지름은 구의 반지름보다 작다.

지구를 구라고 하면, 적도나 경도선들은 그레이트서클을 이루고, 적도를 제외한 위도 선들은 스몰 서클을 이룬다.
따라서, 동이나 서쪽에 있는 지점으로 이동할때, 위도선을 따라, 정동, 정서 방향으로 이동하는 것은 최단거리로 가는 방법이 아니다.

가령, 정동진이 광화문기준으로 정 동쪽에 있다고 치자. 그럴때, 광화문에서 정동진으로 가는 최단경로는 정확히 동쪽으로 쭈욱 가는것이 아니라,
가면서, 약간 북쪽으로 올라갔다가 내려오는 경로를 택하는 것이 최던경로가 된다는 뜻이다.

pole (극)
그레이트 서클에 수직인 중심을 지나는 직선이 구면과 만나는 점을 그 그레이트 서클의 pole 이라고 부른다.
그레이트 서클이 주어지면, 폴 두개가 정해진다. 반대로 어느점이든 그점을 폴로 잡으면, 그 순간 반대편 건너에 또다른 폴이 정해지고, 대응되는 그레이트 서클도 정해진다.



지구를 구로 볼때, 남북극(south & north pole)에 대응되는 great circle 은 적도 ( equator ) 이다.



spherical distance ( 구면거리 )
구면상의 두점을 잇는 거리는, 구면상의 최단거리로, 두점을 지나는 그레이트서클의 호 중에 짧은 쪽이다.
( 길지않은쪽이라고 말해야 더 맞지만, 문맥상 뜻이 통하면 그냥 느낌이 더 오는 표현을 쓰도록 하겠다. )

구면거리는 평면에서의 선분에 대응된다.


반지름이 고정되면, 구면상의 거리는 각도로 측정된다. 간단히 반지름을 1 로 놓으면, 거리의 단위가 각도의 단위가 된다.

예를들어, 어떤 점 P 를 pole 이라고 할때, 그 폴에서 대응되는 great circle 상의 임의의 점 A 까지의 거리는 90 도 ( π/2 rad ) 이다. 



spherical angle ( 구면각 ) 과 dihedral angle ( 이면각 )
구면각은 그 점에서의 접선사이의 각을 말한다.


이것은 두 대원 사이의 이면각과 같다. 즉, 두 대원면이 만드는 각.




구면삼각형 (spherical triangle )
평면삼각형의 각 변이 선분으로 이루어진것과 유사하게, 구면삼각형의 각 변은 그레이트 서클의 호로 이루어진다.


항상, 염두에 두어야 할 것은,  세 변 a , b , c  이 비록 변이라고 부르고 있지만, 모두 그레이트 서클의 중심각이라는 것이다.




삼각부등식 (triangle inequality)
구면 삼각형에 대해서도 삼각부등식은 성립한다. 즉, 두변의 길이의 합은 나머지 한변도다 항상 크다. 왜냐면, 구면의 변도, 두점사이의 최단거리이기 때문이다.


세변의 합
구면삼각형의 세변의 합은 360도 보다 작다. 세변의 합이 360도를 만들어보면, 그 삼각형은 그레이트 써클이 되어버린다.



극삼각형 (polar triangle)

주어진 구면삼각형 ABC 에 대하여, 각 대변을 a , b , c 라고 할때,

a 가 속한 그레이트 서클의 두 극점 중 A 쪽 반구에 있는 극점을 A ' , 마찬가지로, b 에 대해서 B' , c에 대해서 C'  을 정하면, A'B'C' 을 ABC 의 극삼각형 (polar triangle) 이라고 한다.


신고
개인적으로 가장 추천하는 미적분 교재는 토마스의 캘큘러스 (Thomas' Calculus) 이다. 스튜어트꺼도 괜찮은데, 토마스꺼보다는 약간 빠진 내용도 많고, 얼렁뚱땅 넘어가는 부분도 많다. 암튼 얘네들 살 때 보면, 여러가지 버전들이 있고, 그중에 오리지날 버전하고 Early Transcendentals 라는 버전, 이 두가지를 많이 쓰는거 같은데, 대체 뭔 차이가 있는지 궁금했던적이 있다.

제목에 초월함수 따위가 들어간거 봐서 무슨 심화버전 같은건가?  라고 생각하다가도,  얼리(early) 를 보건데 더 어려운건 아닌거 같다는 느낌도 들었었고... 그러다, 목차를 보면 챕터의 순서가 약간 다르다는 차이를 발견했었는데, 그게 무얼 의미하는지는 모르겠더라.

그렇게 그냥 몇년을 잊고 있다가, 오늘 대청소한다고 집이 난장판이 된 와중에, 책을 한 20권은 버린거 같은데, 쳐박아둔 미적분학책들 중에 early transcendentals 가 눈에 띄어서, 다시 급 궁금해졌다.



ask.com 에서 찾아보니, yahoo answers 에 답변들이 좀 있는데, 대부분이 네이버처럼 ㅋㅋㅋ 코메디다.

그중 기억에 남는 재밌는 답변

" 초월수(transcendental number) 는 무리순데, 알제브레익 넘버는 아니다.        <----    -_- 초월수 얘기하는데 무리수가 왜나옴?
  보통, 복소수가 그렇다.                                                                            <----     복소수가 왠 초월수 ?
  e 도 초월순데, 무리수라서 그렇다. ..."                                                       <----     ㅋㅋㅋ 미치겠네 -_-;;;


여기서 잠깐. 초월적(transcendental) 이  " 대수적(algebraic)" 의 반대개념인건 맞다. 근데, 많은 사람들이 여기서 말하는 '대수적' 이라는 표현을 잘 못 알고 있는것 같다. ( 물론, 내가 잘못알고 있을 가능성도 있다. 모든가능성은 항상 존재하니까... 그래서 우린 항상 겸손해야한다. )

암튼, 자세한건 Fraleigh , Abstract Algebra 를 참조하면 좋을듯 싶은데, 난장판이라 지금 찾아보긴 좀 그렇고, 기억하기로는, 어떠한 수가 초월적이다 라는 말은, 즉, 초월수는, 유리계수의 경우를 ( transcendental over Q ) 말한다.

간단히 말해, 유리계수 다항 방정식의 해가 되면 알제브레익 넘버라고 하고, 그렇지 않으면 초월수라고 한다. 

예를 들어보자.
2 + 1 = 0    은 정계수 방정식이므로, 당근 유리계수 방정식이다.   i 는 이것의 해 이므로, 따라서 i 는  알제브레익 넘버이지, 초월수가 아니다.
2 - 2 x + 2  = 0  를 풀어보면,  해는  1 + i  와 1- i  이다.   따라서 둘다 복소수이지만 초월수는 아니다.
2 -2  = 0   ,   루트2 는 무리수이지만 초월수는 아니다.

무리수든, 복소수든 그 자체는 초월수랑 관계가 없다.

음, 나중에 대수학 포스팅 차근차근히 해서, e 가 초월수임을 보이는 글을 써보도록 해야겠다.
대수학 배운지 좀 돼서 지금은 기억이 안남. 책 봐야됨.



답변글들을 보다보니, 와중에 그럴싸한 답변이 있었다.

오리지날 버전의 경우, 미적분의 기본적인 이론을 다룬후에, y = e x 나 로그함수가 등장하는데, 얼리 트랜센덴탈스 버전의 경우, 얘네들이 좀더 일찍(early) 등장시키고, 이후에 편하게 그것을 사용한다는 것이다.

오리지날 버전에서는 이론만으로 체계를 빌드하고자 하는데, 굳이 그럴필요를 못느낄때, 가령 '미적분의 사용' 에 촛점을 맞춘다거나.. 
그럴때는 좀더 편한방법으로 논의를 전개하려고 y = e x 를 일찍 등장시킨다는 것이다.

이 설명이 맞다면, 오리지날 버전이 좀 더 수학과 스럽다면, 얼리 트랜센덴탈 버전은 약간 공대스러운 방식이라고 할 수 있겠다.
신고
number-theoretic function (수론함수) 또는 arithmetic function (산술함수) 은 정의역이 자연수인 함수를 말한다.

어떤 수론함수가 다음의 성질을 만족할 때, multiplicative (승법적) 라고 부르기로 한다.


보통, multiplicative 라고 하면, f(xy) = f(x) f(y) 를 말하는데, 수론함수의 경우,  x, y 가 서로소인경우에만 저러면 되므로, 훨씬 더 약한 조건이라고 할 수 있다.


어떤 멀티플리케이티브 수론함수 f 가 , 항상 값이 0 인 함수가 아니라면,  간단히 f(1) = 1 임을 보일수 있다.

f ( n ) = f ( n * 1 ) ,    n 과 1 은 서로소,  그러므로,   f ( n ) = f (n ) * f (1 )    ,   f ( n ) 이 항상 0 인것은 아니므로, 0 아닌 f ( n ) 이 존재하게 되고,
따라서, 그때의 f(n) 으로 나누면, f ( 1 ) = 1 을 얻는다.



뫼비우스 변환 ( Möbius Transform : summation over all divisors )

수론에서는 서메이션이나 프로덕트를 약수에 대해서 수행하는 경우가 많다. 
즉, 다음과 같은 것이다.

특히 왼쪽의 것을 f 의 뫼비우스 변환(Möbius Transform) 이라고 부른다.   ( 여기서 | 는 나누어떨어짐(divisibility) 의 기호이다. )
( 주의:  복소에서의 Möbius Transformation 과는 다른것이다. )


d 가 n 의 약수일때,   d d' = n  이고, d'  =  n/d  도 역시 n 을 나누기 때문에, 다음이 성립한다.


( 사실, 이것은 서메이션이나 곱 뿐 만 아니라, 다른 지시적 기호에 대해서도 마찬가지이다. )



뫼비우스 변환의 예로 약수개수 함수 τ 와  약수총합 함수 σ 를  들수 있다.



즉, 약수개수함수는 f(k)=1 의 뫼비우스 변환이고, 약수총합함수는 f(k)=k 의 뫼비우스 변환이다.



참고로,  타우함수에 대한 다음의 정리가 성립한다.


즉, 모든 약수의 곱은, 그수에 약수의 개수를 거듭제곱한후에 루트를 씌우면 된다.

일단, 테스트를 해보자.
12 의 약수는 1 , 2, 3, 4, 6 , 12   이고, 모두 곱하면...   1728 이다.
약수의 개수는 6 개 이므로, 12 에 3승 을 하면 1728 이 된다. 


증명은 다음과 같다.





뫼비우스 변환의 multiplicativity 보존

"  어떤 수론함수가 멀티플리케이티브이면,  그것의 뫼비우스 변환도 멀티플리케이티브이다. " 



증명.

즉, 서로소가 곱해진걸 누가 나눈다면, 각각 나누는 녀석들이 필요하다는 뜻. 
아무튼, 그러므로 다음과 같이 된다.





이 정리를 사용하면, 타우함수와 시그마 함수도 멀티플리케이티브임을 아주 쉽게 보일 수 있다.


이 정리는 역도 성립하는데, 우리는 다음에 뫼비우스 반전공식을 사용하여, 역이 성립함을 증명할 것이다.
신고
네트워크로 자료를 공유해서 사용할 경우에, 네트워크 작업을 자주 한다면, 접근이 잦은 네트워크 폴더에 로컬 드라이브 문자를 할당해서 사용하면 편리하다.

예를들면, 도스명령어 cd 가 UNC ( Universal Naming Convention ) path 를 디렉토리로 지원하지 않아서, cd로 접근이 안되지만,
드라이브 문자를 할당하면, cd 로 접근이 된다. 


드라이브 문자를 할당하는 방법은, 해당 네트워크 폴더에 접근하여 탐색기 상에서 우클릭하면 아래와 같이 네트워크 드라이브를 맵핑하는 메뉴가 뜬다.


여기서 할당 문자를 지정해주면 된다.



다음과 같이 커맨드라인에서 해도 된다.

net use [drive letter to assign:][UNC path] [password] [/user:username] [ /persistent:[yse | no] | /delete ] 

drive letter to assign 부분에 할당할 문자를 써주고,
UNC path 부분에, 연결할 네트워크 폴더의 UNC 경로를 써준다.
password 에는 접근암호를 써준다.
username 부분에는 접근계정을 써준다.
/persistent: 를 yes 로 하면, 로그온시 리커넥트 한다. 즉, 그 드라이브문자를 그대로 할당한다.
/delete 는 기존의 연결을 끊는다.


신고
정의(definition), 집합론(set theory), 문장(statements)

앞에서도 밝혔듯이, 문장의 관계를 따지는 일에는 필연적으로 의미를 따질수 밖에 없다. 어떠한 용어를 개념적으로 정의하는 거은 쉽지가 않다.
특히 "~은 무엇인가" 를 연쇄적으로 적용하다 보면 더이상 정의 불가능한 무정의 용어에 이르게 되기 마련이다.

예를 들어, '인간' 을 정의한다고 할때, 인간이 아닌 다른 모든것으로 부터 확실히 구별되는 인간의 특성을 요구하게 되는데, 이는 분명 어려운 일이다. 누군가가 "인간은 지적존재이다" 라고 했을때, 지적인것의 정의를 재 요구하게 되며, 또한, 그것만으로 인간을 다른 것으로 부터 구별짓는데 충분한가라는 의문이 따르게 되고, "지적존재인데 외형이 개처럼 생겼다면 그것은 인간인가?" 따위의 공격을 받게 된다.

집합론을 이용하면 이러한 어려움을 '언발에 오줌누듯' 마치 피할수 있는 것처럼 보이게 할 수가 있는데, 정의하고자 하는 대상들을 모두 그리고 정확히 그 대상들만 포함하는 집합을 생각하는 것이다. 이것은 일단은 문제될것이 없어 보이는게, 단지 대상을 선택하거나 그렇지 않거나의 문제이기 때문이다.

집합이름을 일단 인간의 집합이라고 놓은후, 모든 '대상'을 후보로 놓은후, 하나씩 심사를 한다. 그 집합에 넣으면 인간인거고 , 이새킨 머야 꺼져 하고 안넣으면 인간이 아닌거다. 어떤 특성에 의한 구분이 아니라 그냥 넣으면 인간, 안넣으면 인간이 아닌것이다. 따라서, 이 집합에 넣고 빼는것 자체가 인간의 정의가 된다.

어찌됐건, 우리는 그것이 정확히 특성적 정의와 일치하기를 바란다.
그리고, 이것은 정의를 "개념과 특성(characteristics) 사이의 대응" 에서, "개념과 대상들(집합)사이의 대응"으로 바꿔준다.
그것이 정확히 일치하는가 그렇지 않은가는 철학의 문제이지 논리학의 문제는 아니다. 걔들이 알아서 머리를 싸맬것이다.

암튼, 이러한 방식을 활용하면, 문장을 형식화 하는데, 집합도 사용할수가 있다.

가령, H 를 인간들의 집합이라고 하면, "소크라테스는 인간이다" 라는 문장의 형식화를  " 소크라테스 ∈ H  " 로 할 수 있다.

이것은 다소 말장난 같고, 순환논리처럼 보일수도 있지만, 형식화라는 측면에서는 분명 의미가 있다.
문장의 진위여부를 따지는 것 또한  ∈ 인가 아닌가로 표현되어, 역시 형식화 되었다고 할 수 있다.

이것은 사실 수학에서 자주 사용되는 방법이다.

" x 는 실수이다" 라는 표현을   x ∈ R  와 같이 쓰는 것이 그 예이다.



프레게의 논리주의(Logicism)와 러셀의 역설(Russell's Paradox)

프레게(Frege)는 수학의 모든 참인 명제와 법칙은 논리적 참과 논리 법칙으로 부터 도출된다고 주장했다. 즉, 수학은 결과적으로 논리학으로 환원된다는 것이다.

수학을 논리학으로 환원시키기 위해, 우선 집합론으로 환원시키는데, 수학을 집합론으로 환원시키려면,
첫째, 수체계가 집합론으로 환원되어야 하며, 둘째, 명제가 집합론으로 환원되어야 한다.

수체계가 집합론으로 환원되는 것은, 자연수가 집합론으로 환원되는 것만 보여도 충분하다.
왜냐면 다른 수학체계들은 모두 자연수체계로 부터 빌드해 나갈수 있기 때문이다.

다음은, 집합론의 '무한집합 존재공리' 를 그대로 사용하여 '자연수' 가 '집합론' 으로 환원되는 예를 보인것이다. ( φ 는 공집합이다.)


0 은  φ 와 대응시킨다.
1 은 { φ }  으로 대응시키고,          ( 즉, { 0 } )
2 는 { φ , { φ } }  으로  ,                ( 즉, { 0 , 1 } )
3 은 { φ , { φ } , { φ , { φ } } } 으로,           ( 즉, { 0, 1, 2 } )
...
위와같이 하면, 수를 전혀 사용하지 않고 집합만으로, 자연수 체계와 똑같은 시스템을 구성할수 있다.



수학의 명제를 집합론으로 환원시키기 위해, 프레게는 우리가 위에서 집합을 통해서 정의를 하는것과 유사한 방식을 채택하여,
다음과 같은 공리를 채택한다.

어떠한 술어 Px 에 대해서도, Px 를 만족하는 것들로만 이루어진 집합 { x |  Px }  가 존재한다.

즉, 이 공리가 말하는 바는, 어떠한 명제도 그 명제를 만족시키는 대상들의 집합으로써 표현 가능하다는 것이다.
그 명제를 만족시키는 대상이 하나도 없는, 즉 항상 거짓인 경우라면, 대응되는 집합은 공집합이 될 것이다.

이것은 앞에서 우리가 인간이라는 특성을 정의해야 할때, 그러한 특성을 만족하는 대상들을 모두 모아서 집합 H 로 놓고, ' H 에 들어가는녀석이 인간이다' 라고 한것과 일맥상통한다.


이에 대해, 쇼펜하우어와 더불어, 희대의 불평분자, 러셀은 프레게에게 편지한통을 보낸다. ( 그렇다고 러셀이 프레게의 반대편에 선것은 아니었다.)
아무튼, 러셀이 프레게에게 보낸 편지에는 대충 다음과 같은 내용이 있다.



예를 들면, Nx 를 " x는 착하다 " 라고 하면, 이건 1항 술어(predicate) 이고, Lxy 를 " x는 y를 사랑한다" 라고 하면 2항 술어  이런식이다....
가령,  Lx 를 "x는 x를 사랑한다" 라고 하면 이것은 1 항 술어이다.  즉, 술어의 행위가 주어 자신을 가리켜도 문제가 없다.

1항술어 Px 를  " x 는 x 에 속한다 "  라고 해보자.  그리고 이것을 집합론으로 환원시켜보자.


어떠한 집합 A 가 술어 Px 를 만족한다고 치자.

그러면, A ∈ A   이므로,    A = {  A   , ...  }   일 것이다. 따라서,...
A = { A , ... }  =  { {A, ...} , ... } =  {  {  {A, ...} , ... } , ... }   = ...     뭐 이딴식으로 될 것이다.
 
프레게의 공리에 따르면, 이러한 술어 Px 에 대해,  집합  { x | Px }  가 존재하므로,
위의 A 와 같은 녀석들을 다 모은 집합 { x | x ∈ x }  가 존재한다.

저런 녀석이 있는지 없는지 모르겠지만, 내가 못찾았다고 해서 없다고 할 수는 없는거니까 일단 냅두기로 하고...
이번엔,  Px 를  "x 는 x 에 속하지 않는다" 라고 해보자. 그러면,  프레게의 공리에 따라, X = { x | x ∉  x  } 가 존재한다.

그러면, 위의 A와 같지 않은, 그러니까 우리가 생각할수 있는 대부분의 집합들은 아마 X 에 속하게 될 것이다.
가령, 공집합도 φ ∉  φ   이므로, X 에 속한다.

아무튼, 그러한 집합들을 원소로 같는 집합 X 도 집합이므로, 
X 에 속하거나, X 에 속하지 않는다.

∈ X  일 경우,    ∈ { x | x    x }   이므로,   X ∉ X  이다.     그러므로, 모순.
∉ X  일 경우,   X 는 Px 를 만족하므로,  X X  이다.   그러므로, 모순.

따라서, X 의 존재는 모순을 유발한다.



즉, 프레게의 " 모든 술어에 대하여, 그 술어를 만족하는 대상들로 집합을 만들수 있다" 는 공리에 반례를 제시하였고, 이를 본 프레게는 러셀에게 
" 님 때매 나 망함 OTL, 그래도 님 좀 짱인듯" 이라고 편지를 쓴다. 러셀은 그래도 마음속으로 프레게를 지지하였기 때문에, 이러한 문제를 집합의 계층을 도입해서 넘어간다. 멱집합과 농도, 알레프널 뭐 그런거랑 관련있는 뭐 그런거다.


신고
철학(philosophy) 과 논리학(logic)

철학이 개념자체를 탐구하기 위해서 애를 쓴다면, 
논리학은 각각의 개념이나 개별문장의 진위에는 관심이 없고, 그것들 사이의 관계에 관심을 갖는다고 할 수 있다. 물론, 문장들사이의 관계를 따지기 위해서는, 문장의 의미를 파악해야 할때가 많고, 따라서, 문장에 포함되는 개념들로 부터 자유로울 수가 없기 때문에, 논리학은 철학에 종속되거나 브랜치라고 할 수도 있다. 그럼에도 불구하고, 논리학이 종종 철학으로 부터 자유로울수 있는 것은 우리의 '가정하는 능력'  때문이다.




논증(arguments)

이전의 근거가 되는 문장들을 각각 '프레미스(premise , 전제 )' , 새로운 문장을 '컨클루전 ( conclusion , 결론 )' 이라고 하고,
프레미스와 컨클루전을 합쳐서 '아규먼트(argument , 논증 )' 이라고 한다.


예를들어, 다음의 논증을 보자.


모든사람은 죽는다.
소크라테스는 사람이다.
----------------------------
그러므로 소크라테스는 죽는다.


앞의 두 문장은 전제이고, 마지막 문장은 결론이다.

우리의 주제가 철학이라면, 위의 논증을 보고, 첫번째 문장에서, '사람 이란 무엇인가? ' 라는 문제부터 시작을 할 것이다. 그리고, '죽는다는 것은 무엇인가' 도 논의를 해야한다. 그리고 나서, 어떠한 사고과정을 거친뒤, 마지막 문장을 지지하는 것이 합리적인지 그렇지 않은지를 따져보게 될 것인데, 논리학은 이부분에만 초점을 맞추게 된다.

즉, 이미 '사람이 무엇인지' , '죽는다는것은 무엇인지' 에 관해서는 이미 일종의 상호합의가 된 상황이라고 가정한다.
물론, 이러한 가정이 항상 유효한 것은 아니다. 왜냐하면, 그것이 결론에  크리티컬하게 작용할때가 너무 많기 때문이다.
따라서, 그럴때에는 어쩔수 없이, 각종 철학적 논의를 거쳐 합의점에 이르는 수밖에 없다.



기호(symbols)와 형식화(formalization)

문장을 구성하는 성분들은 유한하거나 무한한데, 설령 그것이 유한하다고 하더라도, 만들수 있는 문장은 무한하다. 왜냐면 문장성분을 무한이 이어붙여서 얼마든지 긴 문장을 생성해 낼 수 있기 때문이다.

문장을 연구하는데 있어, 대상을 지칭하고, 같은 대상의 지칭이 반복될 때마다, 해당 문장을 계속해서 쓰는 일은 여간 번거롭고 귀찮은 일이 아니다. 
따라서 기호를 도입하고 그것을 형식화 하는 일은 커다란 효용을 주며 동시에 사고의 효율성에도 크게 기여한다. 이 사고의 효율성은 단지 긴 문장을 간단한 기호로 치환함으로써만 얻어지는 것은 아니다. 일상언어의 모호성과 애매성을 제거하고 명료하게 만들어주기도 하는데, 우리는 이러한 예를 나중에 quantifier 에서 자세히 살펴볼 것이다.


기호를 도입하거나 형식화 하는 것은 사실 임의대로 할수 있다. 어떻게 사용하는지, 무엇을 상징하는지만 오해가 없도록 선언해준다면 말이다.

예를 들면 다음과 같은 식이다.

R: 비가내린다.
∧ : 그리고
n: 철수
m: 영희
Lxy : x 는 y 를 사랑한다.

비가내리고, 철수는 영희를 사랑한다.   :    R  ∧   Lnm


형식화는 사고의 효율성 이외에도, 인간언어의 기계적 해석에 한발 다가간다는 측면에서도 의미가 있다.



모든것을 임의의 기호로 치환하고, 치환된 기호를 본래의 대상과 동등하게 생각하는 것 또한 "가정하는 능력" 에 기인한다. 기호와 형식화는 그 안에서 일관된 방식으로 사용되어야 하며, 우리의 사고를 왜곡하거나 제한해서는 안된다. 즉, 모든 상상가능한 문장들에 대해서도 형식화가 가능해야 한다.

예를 들면, 다음의 문장도 형식화 가능해야 한다.  직접해보는 것도 좋을 것이다.

" 모든 존재하지 않는 것들의 세계에서는, 존재하지 않는 것이 존재한다. "
신고
대부분의 교재에서, 페르마의 작은정리에 이어서 꼭 등장하는 정리다.

정리는 다음과 같다.


소수 p 에 대해서,  (p-1) !   을   p 로 나누면 나머지가 p-1 이다.


다음은 같은 말이다.

소수 p 에 대해,  (p-2) !  을   p 로 나눈 나머지는 1 이다.



테스트부터 해보자.
7 은 소수다.    5 !  = 120   을 7 로 나누면,  몫은 17 이고, 나머지는 1 이다.


일단 정리를 합동식 형태로 쓰고 증명을 해보자.


증명. ( p 가 2, 3 일땐 트리비얼 하므로, 5 이상이라고 가정하자. )


p가 소수이면  A = {1 , 2 , ... , p-1 } 에 대하여, A 의 모든 원소들은 p 와 서로소이다.

A 의 각 원소들의 mod p 에 대한 역원을 찾아보자.


즉, A 의 원소 x 에 대해,   x x' ≡ 1 ( mod p )  인 x' 를  찾는것이다.   (  참고 : 선형 합동식 )

우선, x 는 A 의 원소이므로,  p 와 서로소이다. 따라서, 임의의 x 에 대해, 역원 x' 은 항상 유일하게 존재한다.

역원은 당연히 0 일 수 없고,  A는 0 아닌 모든 나머지를 포함하므로, x 에 대한 역원은 반드시 A 내에 들어있다.


(참고 :  x 에서 x' 으로 가는 대응은 일대일이다. 다른 x 에 대해 같은 역원을 가질수 없음은 쉽게 보일수 있다. )


역원이 자기 자신이 되는 경우에는 다음과 같이 쓸 수 있다.

x 2 ≡ 1 ( mod p )


정의에 따라,   p | x 2 -1   이고,  따라서,  p | (x+1)(x-1)   인데,    p 가 소수이므로,  x-1 , x+1 과 모두 서로소이다.

따라서, p | x+1  이거나   p | x-1   이다.    즉,   x ≡ 1 (mod p )   이거나   x ≡ -1 (mod p )


A 내에 이를 만족하는 수는  각각  1 과  p-1 이다. 


따라서,  A에서 1 과 p-1을 제외시킨 집합 B =  { 2 , 3 , ... , p-2 } 는  자신의 인버스와 짝을 지을 수있다.

( 참고 : p 는 5 이상이 가정되었기 때문에, A 는 짝수개의 원소를 갖고, 따라서, B 도 짝수개의 원소를 갖는다 .)

 

B 내에서 각각의 원소와 그 인버스를 짝지어서 곱하면, 정의에 의해  1 과 합동이므로, B 의 모든 원소를 곱한것은 1 과 합동이다.

따라서,   2 × 3 × ... × p-2 ≡ 1 (mod p)   ,     즉,  따라서 (p-2)! ≡ 1 (mod p)

여기서 양변에 p-1 을 곱하면...   (p-1)! ≡ p-1  (mod p)   즉,  (p-1)! ≡ -1 (mod p)



윌슨의 정리는 역이 성립한다. (증명은 생략) 즉, 어떤 a 에 대해, ( a-1 ) ! ≡ -1 (mod a )   이면 a 는 소수이다.

따라서, 윌슨의 정리는 소수 판별에 사용할수 있다. 그러나 팩토리얼이 너무 빠르게 증가하는 탓에 좋은 판별법은 아니다.



윌슨의 정리는, 영국 수학자인 워링이 1770 년에 자신의 책에서 소개했다. 그의 학생이었던 윌슨이 숫자계산해보다가 발견했다며...
그러나 워링도 윌슨도 증명을 하진 못했다. 워링은 '난 이거 증명 죽어도 못할듯?'  이라고 한다.

워링의 예상에도 불구하고, 라그랑지는 1771 년에 낼름 증명을 한다. 이때, '윌슨의 정리' 라고 칭한다. 역도 같이 증명한다.
그런데, 이미 그것보다 약 100 년 전쯤에, 라이프니츠가 증명을 했으나 찌질한 정리쯤으로 여겼는지 출판을 안한다.

라이프니츠 :  " 이런것도 정리라고 하기엔 제 이름이 부끄럽지 말입니다. "
라이프니츠가 윌슨의 정리의 출판과 라그랑지의 증명을 보았다면,   " 저러구 있다 ㅉㅉㅉ " 라고 했을 것이다.

신고
다음은, 중등부 수학경시를 준비해본 사람이면 누구나 친숙한 페르마의 정리 중 하나이다. 나는 뒤늦게 중3때에서야 피타고라스 정리에 뻑이 간 후 수학에 재미를 붙인 케이스라, 그 수학경시에 나가보진 못했다. 기억하기로 재능교육인가에서 김옥경인가? 암튼 이름만 들으면 동네아줌마스러운 아줌마가 쓴 책이 상당히 인기였던걸로 기억한다.  고딩때 친구가 보는걸 잠깐 봤었는데, 상당히 흥미로운 내용이 많았던걸로 기억된다.

암튼, 이 정리는, 페르마의 마지막정리라고 불리는 무지막지한 악명에 눌려, 소정리로 불린다. 그것은 일단 말로쓰면 다음과 같다.




어떤 정수 a 에 대해, 그것이 어떤 소수(prime number) p 로 나누어 떨어지지 않는다면,   a p-1  을 p 로 나눈 나머지는 1 이다.




테스트 부터 해보자.

소수로 우선 13 을 선택하고...   피제수로 6 선택하자. 그러면 6 은 13 으로 나누어떨어지지 않으니까, ..   위의 주장 대로라면,
6 의 12 승을 13 으로 나눈 나머지는 1 이어야 한다.

실제로 6 의 12 승은     2176782336    이고,  13 으로 나누면, 몫이 167444795 이고 , 나머지가 1 이다.




증명.

증명방법은 여러가지가 있다. 합동이론, 군론, 수학적귀납법 등등...
여기서는 합동이론으로 증명하도록 한다. 합동에 대한 간단한 개념은 여기를 참조한다. =>  http://sciphy.tistory.com/363


우선 다음의 보조정리 (lemma ) 부터 증명하자.

lemma)  ca ≡ cb ( mod p )  에서,    소수 p 가 c 를 나누지 않으면,  a ≡ b ( mod p )  이다.
lemma 의 증명)  c(a - b) = pk  와    p 가 c 를 나누지 않으면, p 가 소수이므로, p 와 c 는 서로소이다.  즉, 어떤 x , y 에 의해, px + cy = 1 이다.
                        c(a - b) = pk 의 양변에 y 를 곱하면...      cy(a-b) = pky = (1-px)(a-b) = (a-b) - px(a-b)
                        그러므로,          (a-b) = p [ ky + x(a-b) ]           따라서,  p |  (a-b)    , 즉,  a ≡ b ( mod p )    이다.



이제 원래의 정리를 증명해보자.

1 부터 p-1 까지의 집합   A =    { 1, 2,  ... ,  p-1 }  를 생각하자.
여기서,  모든 원소에 a 를 곱한 집합  B =  {  a ,  2a ,   ...   ,   (p-1) a   }   를 생각하자.

이제, 이 집합의 원소들이 p 에 대해 모두 서로 다른  0 아닌 나머지를 갖는 다는 것을 보인다면,
B의 원소를 전부곱한것의 p 에 대한 나머지가 전부곱한것의 나머지가  A 의 원소를 모두 곱한 나머지와 같게 될 것이다.

그러면  a p-1  (p-1)!  ≡  (p-1)!     (mod p ) 가 되고,    (p-1)! 은 p 로 나누어떨어지지 않으므로,
lemma 에 의해 양변을 , (p-1)! 로 약분하면,   원하는 정리  a p-1   ≡  1   (mod p )    를 얻는다.


따라서, 우리에게 남은 일은 집합 B 의 모든 원소들이 p 에 대해 모두 서로다른 0 아닌 나머지를 갖는다는 것을 보이는 것이다.
이는 귀류법으로 간단히 증명된다.

A 의 서로다른 두 원소를 r , s 라고 하자.    그러면,   r 과 s 는 p 에 대해 서로 다른 나머지를 갖는다 .
만약 그에 대응되는 B 의 두원소 ra 와 sa 가 같은 나머지를 같는다면,    ra ≡  sa  ( mod p ) 이고,   p 가 a를 나누지 않는다고 했으므로,
lemma 에 의해,   r ≡  s  ( mod p )  이 된다.  이는 r 과 s 가 p 에 대해 다른 나머지를 갖는다고한 가정에 모순이다.  따라서 증명이 완료된다.




그러므로...





신고
차례.

1. 정의
2. 상수수열
3. 생성함수의 합(sum) 과 곱(product)
4. 수열 1, 2, 3, 4, 5, ...
5. 이항계수 수열
6. 중복조합 수열
7. 피보나치 수열



1. 정의.

어떠한 수열의 생성함수는 그 수열을 계수로 하는 멱급수이다.


이것은 포말한 데피니션으로 급수의 수렴여부는 관심밖이라고 할 수 있다. 마치 수렴하는 것처럼 생각하기로 한다.

(수열) 생성함수라는 용어의 의미는 이 함수 G(x) 를 멱급수전개시 그 계수가 수열을 주기 때문에 붙여진 이름이다.
따라서, 함수에서 계수로 가는 맵 (즉, 펑셔널) 에 의해 본래의 수열로 돌아올 수 있다.



2. 첫번째 예제. 상수수열

상수수열의 생성함수는, 수열 1 , 1, 1, 1, 1, ...  의 생성함수를 구하는 것으로 충분하다. 어차피 상수배 하면 되니까...



따라서, 상수수열 a, a, a, a, a, ... 의 생성함수는  a / ( 1-x )  이다.


이제 다시 G(x)  =  1 / (1-x)  에서 원래의 수열 1, 1, 1, ... 로 돌아가는 것은 다음과 같이 하면 된다.




3. 생성함수의 합(sum) 과 곱(product)

수열 {an} 과 {bn} 의 생성함수 G1 과 G2 가 있을때, 두 생성함수의 합 G1+G2 는 ( 항별 덧셈을 가정하면 ) 새로운 수열 {cn }  의 생성함수인데, 여기서 cn = an + bn  이다.

두 생성함수의 곱 G1G2 는, 새로운 수열 {cn} 의 생성함수가 되는데, 이때 cn 은 다음과 같다.




4. 수열 1, 2, 3, 4, 5, ...

이를 이용하면, 앞에서 구했던, 수열 1,1,1,1,1,...   의 생성함수  1 / ( 1-x ) 의 제곱이, 수열 1,2,3, ... 의 생성함수가 됨을 간단히 알 수 있다.



따라서, 자연수 수열 1,2,3, ... 의 생성함수는 1 / (1-x)^2   이다.



5. 이항계수 수열

실수범위까지 확장된 이항계수는 다음과 같다.


( 윗쪽 숫자는 실수이고, 아랫쪽 숫자는 음아닌 정수이다. )

위의 이항계수를 수열 an 으로 하는 생성함수는, 이항정리에 의해 바로 제공된다. ( 참조 : 테일러 급수, 이항계수 )






6. 중복조합 수열

중복조합의 수란, n 개의 종류에서 중복을 허용해서 k 개를 뽑는 경우의 수를 말한다. ( 각, 항목의 준비된 개수는 항상 충분하다 )

이것은  ( 1 + x + x^2 + ... ) ^ n  의 전개식에서 x^k  의 계수를 구하는 것과 같다.



그런데, 1 + x + x^2 + ...  이   1 / 1-x   이므로...



이 결과는 앞의 이항정리로 얻을수도 있다.




7. 피보나치 수열

피보나치 수열 :   an =  an-1  +   an-2    ( n >= 2 )   ,   a0 = 0 ,    a1 = 1



신고

[중학 정수론] 합동

Quizes2011.01.05 18:40 |

a 와 b 는 m 으로 나누어도 나머지가 같고, n 으로 나누어도 나머지가 같다면,
lcm ( m, n ) 으로 나누어도 역시 나머지가 같음을 보여라.
신고

가속기와 국방

Misc.2011.01.05 12:11 |
페르미연구소의 첫 소장 로버트 윌슨은 1969년에 의회의 원자력에너지위원회에 출석해서 페르미연구소의 엄청난 예산 사용에 대해 증언을 해야했다. 이 자리에서 존 패스토어 상원의원은 페르미연구소의 가속기가 국방과 어떤관련이 있는지를 물었다. 윌슨이 아무런 관련이 없다고 하자 의아해진 상원의원은 다시 질문했다. 이때 윌슨은 다음과같이 답했다. "이 가속기는 우리가 서로에게 관계를 맺는 방식, 인간의 존엄성, 문화에 대한 우리의 사랑과 관련이 있습니다. 이 가속기는 우리나라에 좋은 화가, 좋은 조각가, 좋은 시인이 많다는 것과 관련이 있습니다. 달리 말하면, 이 가속기는 우리가 우리나라를 존중하고 우리나라에 대해서 애국심을 느끼게 하는 그 모든것과 관련이 있습니다. 이 가속기는 우리 조국을 수호할 가치가 있는 나라로 만들어준다는 점에서 국방과 관련이 있지만, 그 외에는 국방과 전혀 관련이 없습니다. "
- 홍성욱, 과학에세이
신고

DO 는 루프문이다.  구문은 다음과 같다.

DO [ index_variable = index_start, index_end [,index_increment ]]
   ...

END DO

카운팅 루프를 위한 [ ]  부분은 옵션이다. [ ] 부분을 생략할 경우, DO ~ END DO 는 기본적으로 무한루프이다.
이경우, 반드시 루프 탈출을 위한 문장이 루프내부에서 실행되어야 한다.

탈출을 위해서 EXIT 를 사용할 수 있다.
IF 로 탈출조건을 제시하며 탈출하면 원하는 바를 수행하는데 용이하다.
즉, 루프내부에 다음과 같은 줄을 추가하는 것이다.

IF ( exit condition ) EXIT

물론, 탈출을 위한 IF , EXIT 가 위와 같이 한줄 IF 여야할 필요는 없다.
다음과 같이 블럭 IF 로 들어가도 된다.

IF ( exit condition )
  ...
  EXIT
END IF

또한, 루프바디 내부에 탈출을 시도하는 부분이 여러개여도 무방하다.




카운팅 루프를 위한 부분을 살펴보면, 첫번째 항은 루프변수의 시작값, 두번재항은 종료값, 세번째 값은 증가치이다.

루프변수는 정수타입이어야 한다. ( 이전버전에서는 실수타입도 사용가능했으나 95 에서는 제거되었다. )

index_start, index_end [,index_increment ]  부분은 상수일수도 있고, 변수일수도 있고, 수식일수도 있다.
다만, 루프시작전에 그 값들을 평가한다.

실행순서는 다음과 같다.
일단 루프시작시 카운팅제어 부분에 대한 평가가 실행된다.

루프변수의 시작값을 배정하는 부분이 우선 실행되고, 종료값과 비교하여 바디를 실행하거나 건너뛴다.
바디가 실행되면, 바디실행후, 증분만큼 증가 ( 값이 음수이면 감소) 시키고, 다시 비교하여 바디를 실행하거나 넘어간다.
바디를 실행시 위의 과정이 반복된다.

즉, 다음과 같은 구조일때,

DO expr 1 , expr 2 , expr 3
... body
END DO

1 -> 2 -> body -> 3 -> 2 -> body -> 3 -> 2 -> body -> 3 -> 2 -> ...    와 같은 순서이다.



루프변수와 종료값의 비교에 의한 바디 실행조건은, 증분값이 양수이냐 음수이냐에 따라 다르다.
양수인경우, 루프변수는 증가하고, 따라서 상식적으로 루프변수가 종료변수 이하일때 바디가 실행된다.
음수인경우, 루프변수는 감소하고, 따라서 루프변수가 종료변수 이상일때 바디가 실행된다.

증가분 부분이 생략되는 경우, 1로 간주한다.



루프변수도 역시 변수인 관계로, 루프 내부에서 조작 및 참조가 가능하다.
단, 루프변수를 루프내부에서 조작시, 루프 전체를 변화시키므로 주의가 요구된다.

루프종료시 루프변수의 값은 신뢰할 수 없다.
많은 컴퓨터/컴파일러 들이 루프종료후에도 루프변수값을 보존하지만, 포트란의 표준은 이에대해 보장하지 않는다.
따라서, 루프종료후의 코드가 루프변수를 참조한다면, 이식성에 문제가 생길수있으므로 주의를 요한다.



EXIT 가 루프자체를 완전히 탈출시킨다면,  CYCLE 은 컨트롤을 expr 3 으로 이동시킨다.

DO expr 1 , expr 2 , expr 3
... body
END DO

결과적으로 루프1회를  ( 하던데까진 하고, CYCLE 만난부분 부터..) 건너뛰는 기능을 한다.

EXIT 와 CYCLE 은 C의   break , continue 와  같다고 할 수 있다.



루프문에도 네이밍이 가능하다. 이는 앞의 IF 나 SELECT CASE 에서 처럼 네스티드 구조일때 상당한 효용을 제공한다.

name : DO
     ...
     ...  CYCLE [name]
     ...  EXIT  [name]
...
END DO name

DO 에 네이밍했으면 END DO 도 매치되는 네이밍을 요구한다.
CYCLE 과 EXIT 에 대해서는 네이밍은 옵션이지만 네이밍 할경우, 대응되는 루프의 네임과 매치되어야 한다.
신고
포트란의 다중분기는 SELECT CASE 에 의해 이루어진다. C언어의 SWITCH 문과 비슷하다.

기본 구문은 다음과 같다.

SELECT CASE ( case expression )
CASE ( case selector 1 )
    ...
CASE ( case selector 2 )
   ...
...
CASE DEFAULT
   ...

END SELECT


case expression 부분에 들어가는 내용의 평가값은 정수형, 문자형(문자열포함), 논리형 이 가능하다.
case selector 는 case expression 의 평가값이 포함될 범위나 특정 값을 나타낸다.
case expression 의 평가값이,  case selector 들에 대해, 동시에 두개이상을 만족시켜서는 안된다.

case selector 가 특정값일 때는, 괄호안에 그 값을 써주면 된다.

특정값들의 목록일 경우에는 콤마(,) 를 이용하여 나열해준다.

범위일때는 콜론 (:) 을 이용한다. a : b   는  ' a 이상 b 이하 '  를   나타낸다.  
또한,   : b   는  'b 이하' 를 나타내고,    a :   는  'a 이상' 을 나타낸다.


( SELECT CASE 도 IF 와 마찬가지로 네이밍이 가능하다. )



신고
기본자료형으로 복소수형을 제공하고, 게다가 실수와 믹스트모드 연산이 자유롭게 가능하므로,
이차방정식의 근을 구하는 프로그램을 몇줄로 간단히 짤 수 있다.

뭐, 이런저런 안내문을 집어넣으면 늘어나겠지만, 암튼 정말 간결하게 만들수 있다.

다음은 2차방정식의 근을 구하는 예제 코드이다.


다음은 실행결과의 예이다.


허수부가 0 으로 나오면 그건 실근인거고, 두근이 완전히 똑같게 나오면 중근인거다.

예를들어,    i  x^2   +   ( 1 + i ) x   + 1  =    0    을 풀어보면, 다음과 같이 된다.


따라서, 두 근은  x = -1  과    x = i   이다.

실행파일. 

qdeq.exe



신고
조건 분기문 IF 의 구문은 다음과 같다.

IF (logical expression) THEN
        statements
END IF

IF 와 END IF 사이의 블락은 logical expression 의 논리값이 참일 경우에만 실행된다.

IF 문에 의해서 실행되는 문장이, 하나밖에 없을때에는, THEN 과 END IF 를 생략하고, 같은줄에 다음과 같은 형식으로 쓸 수 있다.

IF (logical expression) statement

END IF 로 블락을 묶어서 쓰는 IF 를 block-IF, 한줄IF 를 logical-IF 라고 부르기도 한다.



IF 를 사용한 다중분기는 ELSE 와 ELSE IF 를 이용한다.

구문은 다음과 같다.

IF (logical expr1) THEN
       statements
ELSE IF (logical expr2) THEN
       statements
ELSE IF ...
       ...
ELSE
       statements
END IF
    



라인 넘버링에 의한 레이블링 이외에, 포트란의 IF 문 또는 ELSE IF 문은 또다른 레이블링을 지원하는데, 이것은 특히, 네스티드(nested) IF 문의 경우에 어떤 ELSE IF 가 누구꺼인지, 어떤 END IF 가 어떤 IF 랑 대응되는지등을 표시할때 유용하다. 물론, 보통의 경우 인덴테이션으로도 충분하지만, 대형 프로그램의 경우 그렇지 않은경우도 있다.

레이블링 구문은 다음과 같다.

name: IF ( ... ) THEN
      ...
ELSE IF ( ... ) THEN [name]
     ...
...
ELSE [name]
     ...
END IF name

IF 문에 네이밍을 하면, END IF 문에도 똑같은 네이밍을 해야된다. 어떠한 IF 랑 짝인지를 보려고 하는거니까...
[ ] 로 표시한 부분은 optional 이다. 동일한 레벨의 IF 블락에 대해서는 같은 이름이 사용되어야 한다.
nested 된 경우에는, 부모IF 와 자식IF 가 당연히 다른 이름이 사용되어야 한다.
신고

티스토리 툴바