수열은 일정한 규칙에 따라 나열된 숫자들의 모임을 의미한다. 이때 각 숫자를 수열의 항(term)이라고 하며, 수열의 항은 보통 a1, a2, a3, ... 과 같이 숫자 아래에 작은 인덱스를 붙여서 표기한다.
인접한 두 항의 차이가 모두 같은 수열을 말한다. 간단하게 말해서, 한 항에서 다음 항으로 이동할 때마다 일정한 크기만큼 값이 증가하거나 감소한다. 이때 일정한 크기를 수열의 공차(common difference)라고 부른다.
등차수열 수식 :
여기서 은 수열의 번째 항, 은 수열의 첫번째 항, 는 공차, 은 수열의 항 번호를 의미한다. 즉, 수열의 번째 항은 첫 번째 항에 번 공차를 더한 값이다.
예를 들어, 와 같은 수열이 있다면 이 수열은 첫 항이 1이고, 공차가 3인 등차수열이다. 이 수열의 일반항을 구해보면 이 된다.
등차 수열에서 인접한 두 항의 평균값을 나타내는 수를 말한다. 등차 중항은 각 인접한 두 항의 합을 2로 나누면 구할 수 있다. 즉, 과 의 등차 중항은 다음과 같이 나타낼 수 있다.
항까지의 등차수열의 합
여기서 은 항까지의 등차수열의 합을 나타냅니다.
예를 들어, 와 같은 수열의 5항까지의 합을 구하려면, , , 이므로, 가 됩니다.
def arithmetic_sequence(a1, d, n):
# a1: 첫 번째 항, d: 공차, n: 항의 개수
seq = [a1 + (i-1)*d for i in range(1, n+1)]
return seq
def arithmetic_sequence_midterm(a, d, n):
return a + (n-1) * d / 2
def arithmetic_sequence_sum(a1, d, n):
# a1: 첫 번째 항, d: 공차, n: 항의 개수
return n * (2*a1 + (n-1)*d) / 2
def sum_of_arithmetic_sequence(a1, d, n):
Sn = (n/2) * (2*a1 + (n-1)*d)
return Sn
print(arithmetic_sequence(2,2,8))
print(arithmetic_sequence_midterm(2,2,8))
print(arithmetic_sequence_sum(2,2,8))
print(sum_of_arithmetic_sequence(5,4,7))
# 결과
# [2, 4, 6, 8, 10, 12, 14, 16]
# 9.0
# 72.0
# 119.0
등비 수열은 첫째 항이 a1이며, 둘째 항부터 이전 항에 공비 r를 곱한 수열을 말한다.
등비 수열의 일반항 :
예시1) a1 = 1, r = 2 -> 1, 2, 4, 8, 16, ...
예시2) a1 = 3, r = -2 -> 3, -6, 12, -24, 48, ...
등비 중항은 등비 수열에서 연속하는 두 항의 곱의 양의 제곱근으로 구할 수 있다. 등비 수열에서 두 항을 a_n과 a_m이라고 했을 때,
등비 중항 :
등비 수열의 합 :
import math
def geometric_sequence(a1, r, n):
# a1: 첫 번째 항, r: 공비, n: 항의 개수
seq = [a1 * r**(i-1) for i in range(1, n+1)]
return seq
def geometric_sequence_sum(a1, r, n):
# a1: 첫 번째 항, r: 공비, n: 항의 개수
if r == 1:
return a1 * n
else:
return a1 * (1 - r**n) / (1 - r)
def geometric_sequence_midterm(a1, r, n):
# a1: 첫 번째 항, r: 공비, n: 항의 개수
return a1 * r**((n-1)/2)
print(geometric_sequence(2,2,7))
print(geometric_sequence_sum(2,2,7))
print(geometric_sequence_midterm(2,2,7))
# 결과
# [2, 4, 8, 16, 32, 64, 128]
# 254.0
# 16.0