[제로베이스] CH2. 기초 수학 - 계차수열, 피보나치, 팩토리얼

정해성·2023년 6월 17일
0

제로베이스

목록 보기
12/36
post-thumbnail

계차수열

계차수열이란 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열을 의미한다. 아래 수열로 예시를 들어 보겠다.

ana_{n} = 1, 3, 10, 22, 39 .....

ana_{n}에서 규칙을 찾기가 힘들다... 여기서 각 항의 차이를 bnb_{n} 수열로 나열 해보겠다.

bnb_{n} = 2, 7, 12, 17....

여기서 bnb_{n}은 공차가 5인 등차 수열이다.

이와 같은 경우 bnb_{n}ana_{n}의 계차 수열이라 할 수 있다.

계차수열 일반항

  1. ana_{n}일반항을 구하기 위해 먼저 ana_{n}bnb_{n}관련 식으로 정리 한다.

    a1a_{1} = a1a_{1}
    a2a_{2} = a1a_{1} + b1b_{1}
    a3a_{3} = a1a_{1} + b1b_{1} +b2b_{2}

    ana_{n} = a1a_{1} + b1b_{1} +b2b_{2} .... + bn1b_{n-1}
  1. 수열 b의 일반항을 구한다.
    수열 b는 등차 수열이므로 으로 나타낸다.
  1. 위 식에서
    b1b_{1} +b2b_{2} .... + bn1b_{n-1} 부분은 수열 b의 n-1 항까지 등차수열의 합 이므로
    bnb_{n} 일반항을 구하고
    n-1 까지의 등차수열 합 공식을 사용해 n과 관련된 식으로 나타낸다.
  1. 1번에 나타난
    ana_{n} = a1a_{1} + b1b_{1} +b2b_{2} .... + bn1b_{n-1}
    식에 대입해 정리하면 ana_{n}의 일반항이 나온다.

계차수열 파이썬

# 수열을 받고 규칙을 찾은뒤 n번째 항 값 출력 하기
list_a = [3, 7, 13, 21, 31, 43, 57]
n = int(input('n 입력 : '))

b1 = list_a[1] - list_a[0]
b2 = list_a[2] - list_a[1]
d = b2 - b1
print(f'계차 수열 b의 공차(d) = {d}')

b = 0
an = list_a[len(list_a)-1]

for i in range(n):
    b += d
    if ( i < len(list_a) ):
        print(f'b{i+1}번째 항 : {b}')
        print(f'    a{i+1}번째 항 : {list_a[i]}')

    else:
        print(f'b{i+1}번째 항 : {b}')
        an += b    
        print(f'    a{i+1}번째 항 : {an}')

피보나치 수열

피보나치 수열 관한 내용은 다른 포스트에 게시했다.
https://velog.io/@wjdgotjd135/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%8B%A4%EC%9D%B4%EB%82%98%EB%AF%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

팩토리얼

1부터 양의 정수 n까지의 정수를 모두 곱한 것을 의미한다.

0! = 1 (약속이다)
1! = 1
2! = 2 x 1
3! = 3 x 2 x 1
4! = 4 x 3 x 2 x 1

팩토리얼 파이썬

팩토리얼은 대표적인 재귀함수 문제이기도 하다. 재귀함수는 다른 포스트에서 다루도록 하겠다.

def Factorial(n):
    if ( n == 1 or n == 0):
        return 1

    else:
        return n*Factorial(n-1)
        
print(Factorial(5))
profile
코린이 공부중

0개의 댓글