신프신은 두신코...(A)
신마신은 두코신...(B)
코프코는 두코코...(C)
코마코는 마두신신...(D)
갑자기 마두신신이라는 단어가 떠올라 올려 본다. 나는 저걸 외운 적이 없는데, 시험에 나올 때마다 유도해서 풀었기 때문에...;
요새는 마지막 문장은 코막고 만두실신이라고 외우기도 한다고(...)
실신하는 김에 sin+sin=2syncope/씽커피/...(A)
무엇보다 암기법이 별로 의미 없는 이유는, 좌변과 우변의 각이 다르고(A, B 대 \({A+B}\over{2}\), \(\frac{A-B}{2}\) 그나마 암기법으로 기억해 낸 공식이 중간 단계 정도라서 바로 적용할 수 있는 경우는 별로 없기 때문이었던 거 같다.
삼각함수 공식은 어떻게 외워도 거지 같다.
유용한 '감'은 sin은 sin/cos이 교차되는 꼴로 나타나고, cos은 cos/cos 또는 sin/sin 꼴로 나타난다는 것 정도.
유도를 하려면 덧셈정리 (1), (2) 딱 두개만 외우면 된다.
\(\sin\left( A+B \right) = \sin A \cos B + \cos A \sin B\cdots\cdots\left(1\right)\)
\(\cos\left( A+B \right) = \cos A \cos B - \sin A \sin B\cdots\cdots\left(2\right)\)
\(\sin\left( A-B \right) = \sin A \cos B - \cos A \sin B\cdots\cdots\left(3\right)\)
\( \cos \left( A - B \right) = \cos A \cos B + \sin A \sin B \cdots \cdots \left( 4 \right) \)
B 대신 -B를 대입해서 (1)에서 (3)을 얻고, (2)에서 (4)를 얻는다.
그리고 이 네 식을 적절히 더하고 빼서 다음을 얻는다.
\( \sin \left( A + B \right) + \sin \left( A - B \right) = 2 \sin A \cos B \cdots \cdots \left( 5 \right) = (1) + (3) \)
\( \sin \left( A + B \right) - \sin \left( A - B \right) = 2 \cos A \sin B \cdots \cdots \left( 6 \right) = (1) - (3) \)
\( \cos \left( A + B \right) + \cos \left( A - B \right) = 2 \cos A \cos B \cdots \cdots \left( 7 \right) = (2) + (4) \)
\( \cos \left( A + B \right) - \cos \left( A - B \right) = -2 \sin A \sin B \cdots \cdots \left( 8 \right) = (2) - (4) \)
이것이 마두신신의 정체다(...)
애초에 이 공식(5, 6, 7, 8)을 만든 이유는 삼각함수의 곱을 합으로, 합을 곱으로 전환하는 데 있기 때문에, (1) ~ (4)를 더하고 빼는 모든 조합이 필요하지 않다.
곱을 합으로 만드는 목적에 충실하기 위해서는 양변을 2로 나눠야 할 텐데, 그러면 (5) 같은 경우
\( { 1\over 2 } \left( \sin \left( A + B \right) \right) + \sin \left( A - B \right) = \sin A \cos B \)
와 같은 모양이 될 것이다. 나머지는 알아서...
이제 (5)~(8)의 역방향의(!) 공식을 유도해 보자.
\( \alpha = A+B, \beta = A-B \)
이 치환 아이디어는 (1)~(4)에서 (5)~(8)을 얻어낸 것과 본질적으로 같기 때문에 생각해내기가 어렵지는 않을 것 같다(함수를 우함수와 기함수로 분리할 때도 비슷한 트릭이 쓰인다.).
\( \sin \alpha + \sin \beta = 2 \sin {{\alpha + \beta}\over 2} \cos {{\alpha -\beta} \over 2} \cdots \cdots \left( 9 \right) \)
\( \sin \alpha - \sin \beta = 2 \cos {{\alpha + \beta}\over 2} \sin {{\alpha -\beta} \over 2} \cdots \cdots \left( 10 \right) \)
\( \cos \alpha + \cos \beta = 2 \cos {{\alpha + \beta}\over 2} \cos {{\alpha -\beta} \over 2} \cdots \cdots \left( 11 \right) \)
\( \cos \alpha - \cos \beta = -2 \sin {{\alpha + \beta}\over 2} \sin {{\alpha -\beta} \over 2} \cdots \cdots \left( 12 \right) \)
이걸 잘 쓰면 적분하기 어려운 꼴이 치환적분이나 부분적분이 가능하게 되는 신기한 경험을 할 수 있다.
쓰는 김에 좀 더 보충하면,
(배각 공식)
\( \sin 2x = 2\sin x \cos x \cdots \cdots\cdots \cdots\cdots \cdots\cdots \cdots\cdots \cdots\cdots \cdots (13):\) (1)에서 \(A=B=x \)
\( \cos 2x = \cos^2 x - \sin^2x =1-2\sin^2x = 2\cos^2x -1 \cdots \cdots (14):\)
(2)에서 \(A=B=x\) 그리고 \(\sin^2x + \cos^2x=1\)
\( \begin{equation} \begin{split}
\tan 2x &= {\sin 2x \over \cos 2x} = {2\sin x \cos x \over \cos^2 x - sin^2 x}
={2\sin x \over \cos x - \sin x \tan x } \\
&= {2\tan x \over 1- \tan^2 x} \cdots \cdots (15) \\
&= {1 \over 1-\tan x} - {1 \over 1+ \tan x}
\end{split} \end{equation}\)
(15)까지가 tan의 배각공식이고 그 밑엣줄은 그냥 써 봤다(...)
사실 좀 더 일반적인 형태인 tan의 덧셈정리에다가 그냥 A=B를 대입해도 된다.
\(\cos 2x\)는 cos에 대한 식으로도, sin에 대한 식으로도 변형할 수가 있는데,
아래 3배각 공식은 sin은 sin에 대한 식으로, cos은 cos에 대한 식으로 정리한 것이다.
(3배각 공식)
\( \begin{equation} \begin{split}
\sin 3x&=\sin\left(x+2x\right)=\sin x \cos 2x + \sin 2x \cos x \\
&=\sin x-2\sin^3x+2\sin x(1-\sin^2x) \\
&=3\sin x - 4\sin^3x \cdots\cdots\cdots (16)
\end{split}
\end{equation}
\)
\(
\begin{equation}
\begin{split}
\cos 3x&=\cos\left(2x+x\right)=\cos 2x \cos x -\sin 2x \sin x \\
&= (2\cos^2x-1)\cos x-2\sin^2 x \cos x = 2\cos^3 x - \cos x -2\cos x + 2\cos^3 x\\
&= 4\cos^3 x - 3\cos x \cdots\cdots (17)
\end{split}
\end{equation}
\)
(반각 공식): 배각 공식의 역이 아니라, cos에 대한 배각공식에서 나온다.
\(\sin^2 {x \over 2} = {1-\cos x \over 2}\cdots\cdots (18))\)
\(\cos^2 {x \over 2} = {1+\cos x \over 2}\cdots\cdots (19)\)
\(\tan^2 {x \over 2} = {1-\cos x \over 1+\cos x} \cdots\cdots (20)=(18)/(19)\) 다음 포스트(csc 적분)에 등장한다.
3배각 공식에서 \(F(x)=\sin x, G(x)=\cos x\)라 하면
\(F(3x)=3F(x)-4{F(x)}^3, G(3x)=4{G(x)}^3-3G(x)\)
\(y=e^{ax}\)꼴이면 뭔가 쓸모 있어 보이지 않는지...?
Saturday, August 24, 2013
Friday, August 23, 2013
엑셀 연번 매기기 (자동으로 입력되는 일련번호)
요약
=IF(ROW()=1, [시작번호], OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1,0)+1)
재료
- if: if(조건, then절, else절)
- offset: offset(기준 셀, y_offset, x_offset)
- indirect: indirect("$A$27 같은 절대주소 문자열")
- address
- row: 현재 셀의 행번호를 얻는다.
- column: 현재 셀의 열번호에 대응되는 수를 얻는다. 예를 들어 C열은 3이다.
설명
간단히는 상대주소를 써서 다음과 같이 쓸 수도 있다(현재 주소가 B6인 경우를 예로 듦).=if(isblank(b5
또는 isblank 대신 숫자인지 여부를 이용해서
=if(isnumber(
Note
ADDRESS()로 얻는 값은 절대주소(절대참조)를 나타내는 문자열이다.한계
없음.
Graphics 초기화 오류 시
지난 번 포스트 후 몇 달(?)이 지났다.
이제는 이벤트 핸들러 없이 일일이 redraw해주기가 불가능하게 되었으므로
(규모로도 그렇고 로직으로도 그렇고)
지난 번 포스트의 문제점을 해결해야만 하게 되었다.
해결책은 간단하다.
이벤트핸들러를 등록해 주는만큼 해제도 해 줘야 한다.
창을 닫고 나서도 계속 등록된 상태라면 Graphics 객체 초기화에 오류가 발생한다.
Closed나 Closing 이벤트에 핸들러를 등록하고, 그리기 핸들러를 -= 연산자로 해제해주는 코드를 작성하면 된다.
Referer를 만들 때 +=, 없앨 때 -=,
편집창을 열 때 +=, 닫을 때 -=
이렇게 쌍을 유지하는지 감시(?)해야 한다.
이제는 이벤트 핸들러 없이 일일이 redraw해주기가 불가능하게 되었으므로
(규모로도 그렇고 로직으로도 그렇고)
지난 번 포스트의 문제점을 해결해야만 하게 되었다.
해결책은 간단하다.
이벤트핸들러를 등록해 주는만큼 해제도 해 줘야 한다.
창을 닫고 나서도 계속 등록된 상태라면 Graphics 객체 초기화에 오류가 발생한다.
Closed나 Closing 이벤트에 핸들러를 등록하고, 그리기 핸들러를 -= 연산자로 해제해주는 코드를 작성하면 된다.
Referer를 만들 때 +=, 없앨 때 -=,
편집창을 열 때 +=, 닫을 때 -=
이렇게 쌍을 유지하는지 감시(?)해야 한다.
Tuesday, August 6, 2013
Scheme의 define 키워드
SICP (structure and interpretation of computer programs)를 다시 읽어보고 있는데 define이란 키워드에 문제가 좀 있는 것 같다. 또 C류에 익숙한 사람에게는 이 책이 설명하는 방식(또는 순서)이 오해를 부를 수 있을 것 같다.
(define x 1)
이건 C로 따지면
int x=1;
이라 할 수 있을 것 같은데,
(define (square x)
(* x x))
와 같이함수프로시저 선언을 하는 경우 define의 기능이 너무 다양한 게 아닌가 생각하게 된다. 하나는 인스턴스화된 객체고 다른 하나는 그냥 선언인데 말이지...
물론 이라 할 수도 있고
(define x 1)을
int x() { return 1; }
에 가깝다고 해석할 여지도 있긴 하지만 그런 경우 lambda를 쓰는 게 더 정확한 거 아닌지.
책에서, substitution model에서 environment model로 evaluation model을 바꿀 때가 되어서야 (필요에 의해서) formal parameter가 포함된 define은 syntactic sugar일뿐이라는 것을 밝히는데, 처음부터 그런 syntactic sugar를 자제했으면 앞부분에 나오는 make-xxx류의 이해가 더 쉬웠을 것이다.
예를 들어
(define make-withdraw
(lambda (balance)
(lambda (amount)
(set! balance (- balance amount))
balance)))
이렇게 쓰는 것이 lambda가 두 번 등장하기 때문에 아래처럼 쓰는 것보다 의도가 더 명확해진다.
(define (make-withdraw balance)
(lambda (amount)
(set! balance (- balance amount))
balance))
프로시저, 묶인다(binding), referentially transparent 등 좋은 개념들이 많이 나오지만 스크립트 언어를 자작하지 않는 한 대부분의 사람에게 읽고자 하는 의욕이 안 생기게 하는 책일 것 같다. ㅋ
지금 알고 있는 걸 그때도 알았더라면...
(define x 1)
이건 C로 따지면
int x=1;
이라 할 수 있을 것 같은데,
(define (square x)
(* x x))
와 같이
물론 이라 할 수도 있고
(define x 1)을
int x() { return 1; }
에 가깝다고 해석할 여지도 있긴 하지만 그런 경우 lambda를 쓰는 게 더 정확한 거 아닌지.
책에서, substitution model에서 environment model로 evaluation model을 바꿀 때가 되어서야 (필요에 의해서) formal parameter가 포함된 define은 syntactic sugar일뿐이라는 것을 밝히는데, 처음부터 그런 syntactic sugar를 자제했으면 앞부분에 나오는 make-xxx류의 이해가 더 쉬웠을 것이다.
예를 들어
(define make-withdraw
(lambda (balance)
(lambda (amount)
(set! balance (- balance amount))
balance)))
이렇게 쓰는 것이 lambda가 두 번 등장하기 때문에 아래처럼 쓰는 것보다 의도가 더 명확해진다.
(define (make-withdraw balance)
(lambda (amount)
(set! balance (- balance amount))
balance))
프로시저, 묶인다(binding), referentially transparent 등 좋은 개념들이 많이 나오지만 스크립트 언어를 자작하지 않는 한 대부분의 사람에게 읽고자 하는 의욕이 안 생기게 하는 책일 것 같다. ㅋ
지금 알고 있는 걸 그때도 알았더라면...
Subscribe to:
Posts (Atom)
창 핸들을 만드는 동안 오류가 발생했습니다
System.ComponentModel.Win32Exception was unhandled MyForm w = new MyForm IntPtr handle = wnd.Handle; // Exception occurs here class MyFo...
-
텍스트박스에서 엔터를 치면 자동으로 입력되게 하려고 keyup 이벤트 핸들러를 등록했다. 잘 동작하는 듯했는데 alert창을 닫아도 닫아도 계속 열리는 것이다. 크롬이어서 다행이지 IE였으면 무한히 열렸을 거야...스페이스바로 눌러보길 잘했...
-
진짜 되는 건 아니고 흉내낼 수는 있다. 새 창을 누르면 아무 것도 안 변한 것 같지만 PowerPoint 창 제목이 바뀌어 있다: 프레젠테이션1:2에서 :2 부분이 같은 파일을 연 창 여러 개 중 2번째라는 뜻이다('프레...
-
MathJax è Word MS Word 2007부터는 MathML을 문서에 바로 붙여넣을 수 있다. 이 블로그의 거의 대부분의 수식은 MathJax로 작성되어 있는데, 오른쪽 버튼 클릭하고 메뉴에서 MathML 또는 TeX 형식으로 ex...