이쁜왕자 만쉐~~

주기가 있는 수열을 하나의 식으로 표현하는 방법. 본문

퍼즐판

주기가 있는 수열을 하나의 식으로 표현하는 방법.

이쁜왕자 2012. 8. 7. 22:22
예를 들어 1,2,3,1,2,3,1,2,3,1,2,3, ... 이 반복되는 수열이 있다고 치자.

이를 수식으로 나타내면 이렇게 된다.

 
그런데, 이렇게 각각을 분류해서 나타내는 걸 원하지 않고, 하나의 식으로 나타내길 원하는 사람이 있기 마련이다.

이럴때는 주기가 있는 함수를 사용하여 조합하면 가능하다. 예를 들어 (-1)^n 은 2의 주기로 1과 -1을 반복하므로, 이를 살짝 변형하여 ((-1)^n + 1) / 2 라는 식을 만들면, 0 과 1을 반복하는 식이 된다. 아니면 전통적인 주기함수인 삼각함수를 이용해도 된다. sin(x) 는 2*pi 를 주기로 0, 1, 0, -1 이 반복되므로, 이 식을 살짝 변형하여 | sin(x*pi/2) | 라는 식을 만들면 1과 0 이 반복되는 식을 만들수 있다.

다만, 이런 함수는 임의의 주기를 가지는 함수를 만들려면 조금 복잡해 지는 문제가 있다.

여기서는 floor 함수를 이용해서 임의의 주기의 함수를 만드는 방법을 설명한다.

예를 들어 3의 주기를 가지며, 1,0,0 을 반복하는 함수 P_3,1 (n) 을 다음과 같이 정의한다.


역시 3의 주기를 가지며, 0,1,0 을 반복하는 P_3,2(n) 과  0,0,1 을 반복하는 P_3,3(n) 은 다음과 같의 정의한다.


이 주기 함수의 일반 형태는 다음과 같이 표현할 수 있다. q 는 주기이고, r 는 그중 r번째 수는 1, 그외는 0 임을 나타낸다. 위의 함수의 약간 다르긴 하지만, floor 함수의 특성을 생각해 보면, 결국 같은 함수임을 확인 할 수 있다.


이제 이 3개의 주기 함수의 주기 값을 조합하면 다음과 같은 수식을 만들 수 있다.


이 식은 3의 주기를 가지며, 1,2,3 이 반복되는 주기 함수(또는 주기 수열)이다. 1,2,3 을 변경하면, 임의의 값을 가지는 수열을 만드는 것도 가능하며, 저 주기 함수를 변형해서 원하는 길이의 주기를 만드는 것도 가능하다.

- 이쁜왕자 -
- Valken the SEXy THief~~ ^_* -
 
728x90
반응형
Comments