항의 개수(몇 번째 항까지 구할지)를 입력하고 ‘계산’을 누르세요. 피보나치 수열(1, 1, 2, 3, 5, 8, …)의 앞부분 항, 제n항, 첫째항부터 제n항까지의 합을 한꺼번에 계산합니다.
이 페이지에서 할 수 있는 것
- 항의 개수(몇 번째까지 구할지) 하나만 넣으면 피보나치 수열(1, 1, 2, 3, 5, 8, 13, …)의 제\(n\)항과 첫째항부터 제\(n\)항까지의 합을 한꺼번에 구할 수 있습니다
- ‘피보나치 수열의 20번째 수는? 20번째까지 모두 더하면 얼마?’ 같은 문제에 그대로 쓸 수 있습니다
- 제1000항(209자리 수)까지 한 자리도 빠짐없이 정확한 값으로 계산합니다
- ‘바로 앞의 두 항을 더하면 다음 항이 된다’는 피보나치 수열의 늘어나는 모습을 계산 결과와 함께 그래프로도 확인할 수 있습니다
- 공식(점화식)의 쉬운 해설과 Excel·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 모아 두었습니다
이 계산은 어디에 쓰일까요?
피보나치 수열은 ‘앞의 두 항을 더한다’는 단순한 규칙이어서, 프로그래밍 입문에서 반복문과 재귀(자기 자신을 호출하는 함수)를 배우는 단골 예제입니다. 같은 답이라도 코드를 어떻게 쓰느냐에 따라 걸리는 시간이 크게 달라지므로(단순한 재귀로는 제50항까지 가는 데 엄청난 횟수의 호출이 필요합니다) 알고리즘 수업에서도 자주 다룹니다.
이름을 딴 자료 구조(피보나치 힙)와 탐색 방법(피보나치 탐색)도 있어 컴퓨터 과학의 기본 소재 중 하나입니다.
피보나치 수열의 이웃한 두 항의 비(뒤 ÷ 앞)는 항이 진행될수록 황금비 \(\varphi = 1.618\cdots\)에 가까워진다는 것이 증명되어 있습니다. 실제로 \(55 \div 34 \fallingdotseq 1.6176\), \(89 \div 55 \fallingdotseq 1.6182\)로, 제10항 근처에서 이미 소수 둘째 자리까지 일치합니다.
황금비는 균형 잡힌 비로 디자인에 쓰이기도 하며, 예를 들어 신용카드의 가로세로 비가 황금비에 가깝다고 자주 이야기됩니다. 정수를 더하기만 해서 만든 수열에서 황금비가 나타난다는 것이 피보나치 수열의 가장 아름다운 성질입니다.
피보나치 수열은 13세기 이탈리아의 수학자 피보나치의 책 ‘산반서(Liber Abaci)’에 나오는 문제에서 비롯되었습니다. ‘갓 태어난 토끼 한 쌍은 태어난 지 2개월이 지나면 매달 새끼 한 쌍을 낳는다. 토끼 쌍의 수는 달마다 어떻게 변할까?’ 매달의 쌍의 수는 1, 1, 2, 3, 5, 8, …로 늘어나 12개월째에는 144쌍이 됩니다.
물론 실제 토끼가 정확히 이렇게 늘어나지는 않고, 어디까지나 단순화한 모형입니다. 그래도 ‘조금 전의 양에 따라 다음 양이 정해지는’ 늘어나는 방식을 수열로 나타내는 출발점이 되었습니다.
애자일 소프트웨어 개발에서는 1, 2, 3, 5, 8, 13, …처럼 피보나치 수열을 바탕으로 한 수로 작업량을 추정하는 일이 흔합니다(스토리 포인트라고 합니다).
수가 커질수록 간격이 넓어지는데, 이것이 ‘큰 작업일수록 정확히 추정하기 어렵다’는 현실과 잘 맞습니다. ‘8이냐 9냐’ 같은 의미 없는 세세한 논쟁도 피할 수 있습니다.
해바라기 씨앗이 그리는 나선(예를 들어 한쪽 방향으로 34개, 반대 방향으로 55개)이나 솔방울·파인애플 비늘의 나선처럼, 나선의 개수가 피보나치 수(8, 13, 21, 34, 55, …)인 예가 많이 보고되어 있습니다. 새로운 싹이나 씨앗이 이미 있는 부분과 겹치지 않는 방향으로 생기는 식물의 자라는 방식으로 설명됩니다.
다만 모든 식물·모든 개체가 그런 것은 아니며, ‘피보나치 수가 되는 예가 많다’는 경향으로 알려져 있습니다. 가까이에 있는 식물의 나선을 세어 보면 이 수열을 만날 수 있을지도 모릅니다.
공식과 그래프
용어·기호 해설
기호
| \(n\) | 엔 | 항의 개수. 몇 번째 항까지 생각하는지를 나타내는 양의 정수입니다. ‘제10항까지’라면 \(n = 10\)입니다. |
| \(a_n\) | 에이 엔 | 제\(n\)항. 수열의 \(n\)번째 수입니다. 오른쪽 아래의 작은 글자(첨자)가 ‘몇 번째인지’를 나타냅니다. 피보나치 수열에서는 \(a_1 = 1,\ a_2 = 1,\ a_3 = 2,\ a_4 = 3, \cdots\)입니다. |
| \(a_{n-1}\) | 에이 엔 마이너스 일 | 제\(n\)항의 바로 앞의 항(1개 앞의 항). 제10항에 대해서는 제9항입니다. 첨자 안의 뺄셈은 ‘번호가 하나 앞’이라는 뜻입니다. |
| \(a_{n-2}\) | 에이 엔 마이너스 이 | 제\(n\)항의 2개 앞의 항. 제10항에 대해서는 제8항입니다. |
| \(a_{n+2}\) | 에이 엔 플러스 이 | 제\(n\)항의 2개 뒤의 항. 제10항에 대해서는 제12항입니다. 첫째항부터 제\(n\)항까지의 합은 이 항에서 \(1\)을 뺀 값과 같습니다. |
| \(S_n\) | 에스 엔 | 첫째항부터 제\(n\)항까지의 합. \(a_1 + a_2 + \cdots + a_n\)을 한데 묶어 나타낸 기호로, 영어 sum(합)의 첫 글자입니다. |
| \(\varphi\) | 파이 | 황금비를 나타내는 기호. 값은 \(\varphi = \dfrac{1 + \sqrt{5}}{2} = 1.618\cdots\)이고, 피보나치 수열의 이웃한 두 항의 비(뒤 ÷ 앞)는 항이 진행될수록 이 값에 가까워집니다. |
| \(\cdots\) | 점점점(말줄임표) | ‘같은 규칙으로 계속된다’는 것을 나타내는 기호. 1, 1, 2, 3, 5, 8, …이라고 쓰면 ‘이 뒤로도 바로 앞의 두 항을 더하는 규칙으로 계속된다’는 뜻입니다. |
용어
| 수열 | 수를 한 줄로 차례대로 늘어놓은 것. 늘어놓은 수 하나하나를 항이라고 합니다. 고등학교 ‘대수’(2015 개정 교육과정에서는 ‘수학 I’)에서 배우는 단원입니다. |
| 피보나치 수열 | 처음 두 항을 1, 1로 하고, 그 뒤로는 ‘바로 앞의 두 항을 더하면 다음 항이 된다’는 규칙으로 이어지는 수열(1, 1, 2, 3, 5, 8, 13, 21, …). 13세기 이탈리아의 수학자 피보나치가 책에서 소개한 ‘토끼 쌍이 늘어나는 방식’ 문제에서 비롯되었습니다. 수열의 수 하나하나를 피보나치 수라고 합니다. |
| 항 | 수열을 이루는 수 하나하나. 처음부터 차례로 제1항, 제2항, …이라고 부릅니다. |
| 첫째항 | 수열의 맨 처음 항, 즉 제1항입니다. 피보나치 수열(이 페이지의 세는 방법)에서는 1입니다. |
| 점화식 | ‘앞의 항으로 다음 항을 정하는 규칙’의 꼴로 수열을 나타낸 식. 피보나치 수열의 점화식은 \(a_n = a_{n-1} + a_{n-2}\)입니다. 고등학교 교과서에서는 ‘수열의 귀납적 정의’라는 이름으로 배웁니다. |
| 초기 조건 | 점화식과 함께 주는 ‘처음 항의 값’에 대한 약속. 피보나치 수열에서는 \(a_1 = 1,\ a_2 = 1\)이 초기 조건이고, 이것이 없으면 점화식만으로는 수열이 정해지지 않습니다. |
| 황금비 | \(1 : \dfrac{1 + \sqrt{5}}{2}\)(약 \(1 : 1.618\))인 비. 예로부터 조화로운 비로 여겨졌고, 기호 \(\varphi\)(파이)로 나타냅니다. 피보나치 수열의 이웃한 두 항의 비는 항이 진행될수록 황금비에 가까워진다는 것이 수학적으로 증명되어 있습니다. |
| 일반항 | 제\(n\)항을 \(n\)에 대한 식으로 나타낸 것. 피보나치 수열에도 황금비 \(\varphi\)를 쓴 일반항(비네 공식이라고 합니다)이 있지만 \(\sqrt{5}\)가 들어간 조금 복잡한 식이므로, 값만 구할 때는 점화식으로 차례로 더해 나가는 편이 확실합니다. |
| 등차수열 | 이웃한 두 항의 차가 항상 같은 수열. 5, 8, 11, 14, …(매번 3을 더함) 같은 수열입니다. ‘정해진 수’를 더하는 것이 등차수열, ‘바로 앞의 두 항’을 더하는 것이 피보나치 수열입니다. |
| 등비수열 | 이웃한 두 항의 비가 항상 같은 수열. 3, 6, 12, 24, …(매번 2를 곱함) 같은 수열입니다. 피보나치 수열은 등비수열이 아니지만, 항이 진행되면 ‘약 1.618배씩’이라는 거의 일정한 비율로 늘어나 등비수열에 가까운 모습을 보입니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
막히면 이 표의 내용으로 돌아가 복습하는 것이 지름길입니다.
| 자연수의 덧셈과 세로셈(초등학교 2~3학년, 7~9세) |
|
| 규칙 찾기·규칙과 대응(초등학교 4~6학년, 9~12세) |
|
| 문자와 식(중학교 1학년, 12~13세) |
|
| 수열의 기호(고등학교 대수, 주로 2학년, 16~17세) |
|
Excel로 계산하는 방법
| 제1항 | 1 |
| 제2항 | 1 |
| 제3항 | =B1+B2 |
| 제4항 | =B2+B3 |
| 제5항 | =B3+B4 |
| 제6항 | =B4+B5 |
| 제7항 | =B5+B6 |
| 제8항 | =B6+B7 |
| 제9항 | =B7+B8 |
| 제10항 | =B8+B9 |
| 제1항 | 1 |
| 제2항 | 1 |
| 제3항 | =B1+B2 |
| 제4항 | =B2+B3 |
| 제5항 | =B3+B4 |
| 제6항 | =B4+B5 |
| 제7항 | =B5+B6 |
| 제8항 | =B6+B7 |
| 제9항 | =B7+B8 |
| 제10항 | =B8+B9 |
| 첫째항부터 제10항까지의 합 | =SUM(B1:B10) |
첫 번째 표는 B10에 55(제10항), 두 번째 표는 B11에 143(제10항까지의 합)이 표시됩니다. 더 뒤의 항을 구하려면 맨 아래의 ‘=B8+B9’ 셀을 선택하고 오른쪽 아래의 작은 네모를 아래로 끌어내리면 같은 규칙이 이어집니다(‘바로 앞의 두 항을 더한다’는 점화식이 그대로 셀의 수식이 됩니다).
Google 스프레드시트로 계산하는 방법
| 제1항 | 1 |
| 제2항 | 1 |
| 제3항 | =B1+B2 |
| 제4항 | =B2+B3 |
| 제5항 | =B3+B4 |
| 제6항 | =B4+B5 |
| 제7항 | =B5+B6 |
| 제8항 | =B6+B7 |
| 제9항 | =B7+B8 |
| 제10항 | =B8+B9 |
| 제1항 | 1 |
| 제2항 | 1 |
| 제3항 | =B1+B2 |
| 제4항 | =B2+B3 |
| 제5항 | =B3+B4 |
| 제6항 | =B4+B5 |
| 제7항 | =B5+B6 |
| 제8항 | =B6+B7 |
| 제9항 | =B7+B8 |
| 제10항 | =B8+B9 |
| 첫째항부터 제10항까지의 합 | =SUM(B1:B10) |
Python으로 계산하는 방법
number_of_terms = 10 # 항의 개수(몇 번째 항까지 구할지)
# 피보나치 수열: 처음 두 항은 1, 그 뒤로는 바로 앞의 두 항을 더한 값
fibonacci = [1, 1]
while len(fibonacci) < number_of_terms:
fibonacci.append(fibonacci[-1] + fibonacci[-2])
fibonacci = fibonacci[:number_of_terms]
nth_term = fibonacci[-1] # 제n항
sum_of_terms = sum(fibonacci) # 첫째항부터 제n항까지의 합
print(f"앞부분 항: {fibonacci[:10]}")
print(f"제{number_of_terms}항: {nth_term}")
print(f"첫째항부터 제{number_of_terms}항까지의 합: {sum_of_terms}")
LaTeX 등 수식 언어로 쓰는 법(복사 가능)
aₙ = aₙ₋₁ + aₙ₋₂
a_n = a_{n-1} + a_{n-2} \quad (n \geq 3,\ a_1 = a_2 = 1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msub>
<mo>+</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>−</mo><mn>2</mn></mrow></msub>
</mrow>
</math>
a_n = a_(n-1) + a_(n-2)
a[n] == a[n - 1] + a[n - 2]
a(n) := a(n - 1) + a(n - 2);
a(n) = a(n - 1) + a(n - 2);
a_n = a_(n-1) + a_(n-2)
Sₙ = aₙ₊₂ − 1
S_n = a_{n+2} - 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>S</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>n</mi><mo>+</mo><mn>2</mn></mrow></msub>
<mo>−</mo>
<mn>1</mn>
</mrow>
</math>
S_n = a_(n+2) - 1
Fibonacci[n + 2] - 1
Sn := a(n + 2) - 1;
S_n = a(n + 2) - 1;
S_n = a_(n+2) - 1
ChatGPT 에게 물어서 계산하는 방법
당신은 피보나치 수열 계산 도우미입니다. 다음 계산을 Python 코드를 실제로 실행해서 하고, 실행 결과의 수치만을 근거로 답해 주세요(암산이나 추측으로 답하지 마세요). 피보나치 수열은 a_1 = 1, a_2 = 1, a_n = a_(n-1) + a_(n-2)(n ≥ 3)로 정의합니다. 합은 항을 실제로 더해서 구하고, S_n = a_(n+2) - 1이라는 성질과 일치하는지도 확인해 주세요. 1. 피보나치 수열의 제10항과 첫째항부터 제10항까지의 합 2. 피보나치 수열의 제20항과 첫째항부터 제20항까지의 합 3. 피보나치 수열의 제50항, 그리고 제50항 ÷ 제49항(황금비 1.6180…에 가까운지도 확인) 사용한 식과 실행 결과의 수치를 보여 주세요.
사용법
-
1숫자 입력계산하고 싶은 숫자를 입력란에 입력합니다
-
2계산‘계산’ 버튼을 누릅니다
-
3결과 확인계산 결과가 바로 표시됩니다. 계산의 원리와 공식 해설도 같은 페이지에서 확인할 수 있습니다
DataChef의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다