정보과학_파이썬

Python. 파이썬 - 피보나치 수열과 황금비간의 관계 탐색 그래프 [이지로봇학원]

이지로봇학원 2020. 11. 9. 14:41

Python. 파이썬 - 피보나치 수열과 황금비간의 관계 탐색 그래프 [이지로봇학원]

 

제 목 : Python. 파이썬 - 피보나치 수열과 황금비간의 관계 탐색 그래프 [이지로봇학원]

피보나치수열 (1,1,2,3,5...)에서 현재항의 값은 이전 두개의 항의 합이된다

즉 현재항 i는 (i-2) + (i-1)의 합이다

이러한 수열에서 연속위치한 숫자는 흥미로운 관계를 보여주게 되는데

연속한 숫자쌍의 비율은 거의 동일하게 되고 이를 황금비 (Golden Ratio)라고 한다

수치적으로 황금비는 1.618033.. 이며 음악, 건축, 자연등에서 폭넓게 연구되는 주제이다.

피보나치 수열이 황금비에 접근한다는 것을 입증하기 위해 n 개의 피보나치수열을

구하여 출력하고 이를 그래프로 그려 그관계를 탐색하여 보자

아래 소스코드에서는 그래프 출력을 위하여 matplotlib를 사용하였으며

라이브러리가 설치되어 있지않은 경우 명령창에서 pip install mapplotlib 명령을 실행하여

설치하여야 한다.

https://ratel35.tistory.com/349

 

<설명 및 소스코드>

fibo() 함수를 작성하고, 구할 전체항의 갯수를 입력하면

각 피보나치수열항의 값이 출력되고

for i in range(n-1):

ratio.append(rr[i+1]/rr[i])

반복문을 이용하여 다음항의 결과값을 현재항의 값으로 나누어서 ratio 리스트에 추가한다

이후

plt.plot(range(n),ratio)

plt.show()

명령코드에 의하여 관계그래프가 작성된다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

import matplotlib.pyplot as plt

 

def fibo(n):

if n==1:

return [1]

if n==2:

return [1,1]

# n>2

a=1

b=1

series=[a,b]

for i in range(n-2):

c=a+b

series.append(c)

a=b

b=c

return series

try:

n=int(input('피보나치 수열을 몇 항까지 만들까요?:'))

print(fibo(n))

except ValueError:

print('잘못된 입력입니다. 프로그램을 종료합니다.')

else:

rr=fibo(n)

ratio=[0]

for i in range(n-1):

ratio.append(rr[i+1]/rr[i])

print('피보나치 수열=',rr)

plt.plot(range(n),ratio)

plt.xlabel('No.')

plt.ylabel('Ratio')

plt.title('Ratio between consecutive Fibonacci numbers')

plt.axis([0,len(ratio),1.0,2.2])

plt.show()

 

<실행결과>

피보나치 수열과 황금비간의 관계 탐색 그래프 [이지로봇학원]

카톡 플러스친구 : @이지로봇학원

이게시판 은 수원이지로봇학원의 정보과학 Python(파이썬) 학습자료 입니다.

교육상담: 031-293-6355 https://www.easyrobot.co.kr

=========================================================

수원파이썬학원,수원코딩학원, 수원프로그래밍학원, 수원컴퓨터학원, 수원C언어학원

스크래치, 엔트리, 파이썬, C언어등의 정보과학 기초 학원입니다. 수원 이지로봇 과학학원

우리학원은 전자 및 아두이노의 교육과 C언어, 프로세싱 소프트웨어를 연동하여

사물인터넷(IOT)관련, 아두이노와 프로세싱을 이용한 자유학기제 동아리활동을 지원합니다.