계차 수열(Difference sequence)

밤비나·2023년 3월 15일

기초수학 w/python

목록 보기
6/14

계차 수열(Difference sequence)

계차 수열은 연속하는 두 항의 차이가 일정한 수열이다. 이 때의 차이를 공차(common difference)라 하며, 일반적으로 dd 로 표현한다. 예를 들어, 계차 수열 ana_n 에서 nn번째 항과 (n+1)(n+1)번째 항의 차이는 일정하다.

계차 수열의 첫 항을 a1a_1 이라고 하면, 다음 항의 값은 아래와 같이 구할 수 있다.

a2=a1+da_2 = a_1 + d
a3=a2+d=a1+2da_3 = a_2 + d = a_1 + 2d
a4=a3+d=a1+3da_4 = a_3 + d = a_1 + 3d
\cdots

일반항을 ana_n 으로 나타낼 때, 이 식에서 계차 dd 가 일정하므로 ana_n은 다음과 같이 표현된다.

an=a1+(n1)da_n = a_1 + (n-1)d

등차수열과 비슷한 성질을 가진다. 예를 들어, 계차 수열의 합도 등차수열과 비슷한 식으로 구할 수 있다.

또한, 계차 수열에서 두 항의 차이는 일정하므로, 뒤에서부터 앞으로 가면서 각 항들을 빼는 것으로도 계차를 구할 수 있다. 이 때는 일반항이 아니라, 다음과 같은 식으로 계차를 구한다.

d=anan1d = a_{n} - a_{n-1}

예를 들어, 계차 수열 3, 7, 11, 15, 19, ... 에서, 첫 항 a1a_1 은 3이고, 공차 dd는 4이다. 다섯 번째 항인 a5a_5 는 어떻게 구할 수 있을까?

a5=a1+(51)d=3+4×4=19a_5 = a_1 + (5-1)d = 3 + 4 \times 4 = 19

따라서, 계차 수열 3, 7, 11, 15, 19, ... 의 다섯 번째 항은 19이다.


어떤 수열 a1,a2,a3,,ana_1, a_2, a_3, \cdots, a_n의 계차 수열 b1,b2,b3,,bn1b_1, b_2, b_3, \cdots, b_{n-1}을 구하는 방법을 알아보자.

우선 an+1a_{n+1}에서 ana_n을 뺀 값을 dd라고 하자. 이 값은 고정된 상수이다. 그러면 계차 수열 bnb_nan+1ana_{n+1} - a_n으로 구할 수 있다. 이를 식으로 나타내면 다음과 같다.

bn=an+1anb_n = a_{n+1} - a_n

따라서 계차 수열 b1,b2,b3,,bn1b_1, b_2, b_3, \cdots, b_{n-1}은 다음과 같이 구할 수 있다.

b1=a2a1b_1 = a_2 - a_1
b2=a3a2b_2 = a_3 - a_2
\cdots
bn1=anan1b_{n-1} = a_n - a_{n-1}

이렇게 계차 수열을 구하면, 이후에는 이 계차 수열을 이용해서 원래 수열의 특정 항을 구할 수 있다. 예를 들어, a1=1a_1 = 1, b1=2b_1 = 2, b2=3b_2 = 3인 경우를 생각해보자. 이 경우 a2a_2부터 ana_n까지의 값을 구할 수 있다.

a2=a1+b1=1+2=3a_2 = a_1 + b_1 = 1 + 2 = 3
a3=a2+b2=3+3=6a_3 = a_2 + b_2 = 3 + 3 = 6
\cdots

이렇게 계차 수열을 이용하면, 원래 수열에서 어떤 패턴을 찾거나, 항을 구하는 데 도움이 될 수 있다.


파이썬 코드

inputAN1 = int(input('a1 입력: '))
inputAN = int(input('an 입력: '))

inputBN1 = int(input('b1 입력: '))
inputBD = int(input('bn 공차 입력: '))

valueAN = inputAN1
valueBN = inputBN1
an_list = [inputAN1]
bn_list = [inputBN1]
for n in range(2, inputAN+1):
    valueAN = valueAN + valueBN
    an_list.append(valueAN)

    valueBN = valueBN + inputBD
    bn_list.append(valueBN)

print('an의 항 리스트: {}'.format(an_list))
print('bn의 항 리스트: {}'.format(bn_list))

# a1 입력: 3
# an 입력: 4
# b1 입력: 4
# bn 공차 입력: 2

# an의 항 리스트: [3, 7, 13, 21]
# bn의 항 리스트: [4, 6, 8, 10]
profile
씨앗 데이터 분석가.

0개의 댓글