파이썬에서 피보나치 수열 구현

게시 됨: 2023-02-23

Python은 인공 신경망의 구현을 용이하게 하고 자연어 처리, 딥 러닝, 안면 인식, 유전 알고리즘 및 기타 많은 최첨단 AI 기반 작업을 지원하는 강력하고 다재다능한 다목적 프로그래밍 언어입니다.

이 기사에서는 Python을 사용하여 피보나치 수열을 정확하게 생성할 수 있는 몇 가지 주요 방법을 살펴봅니다. 피보나치 수열은 그 자체로 유용할 뿐만 아니라 복잡한 작업을 수행할 수 있는 고급 프로그램을 구축하는 데 종종 기초가 되는 비교적 간단한 알고리즘의 좋은 예입니다. 인지 기능.

목차

피보나치 수열이란 무엇입니까?

피보나치 수열은 아마도 인류에게 알려진 수학적 수열 중 가장 단순하고 가장 초기에 알려졌으며 가장 유명한 것 중 하나일 것입니다.

피보나치 수열은 0과 1로 시작하여 다음과 같이 진행됩니다. 0, 1, 1, 2, 3, 5, 8, 13 , 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368 등.

0을 시작점으로 하여 피보나치 수열은 다음과 같이 양방향 방식으로 무기한 확장됩니다.
…610, -377, 233, -144, 89, -55, 34, -21, 13, -8, 5, -3, 2, -1, 1, 0, 1, 1, 2, 3, 5 , 8, 13, 21, 34, 55, 89, 144, 233, 377, 610… 0의 왼쪽에 있는 수열은 "negafibonacci" 수열로 알려져 있습니다.

무료 기술 과정을 확인하여 경쟁에서 우위를 점하십시오.

피보나치 수열은 수학적으로 다음과 같이 나타낼 수 있습니다.

N 0 1 2 4 5 6 7 8 9 10 11 12 13 14 15
엑스 0 1 1 2 5 8 13 21 34 55 89 144 233 377 610

여기서 n은 용어 번호이고 xn 용어 값입니다. 항 값 x n을 계산하는 공식은 다음과 같습니다.
xn = xn -1 + xn -2

예를 들어 용어 8의 값은 다음과 같습니다.

x 8 = x 7 + x 6

x 8 = 13 + 8

× 8 = 21

다음은 피보나치 수열과 관련된 사소한 정보입니다. 피보나치 데이는 11월 23일에 관찰됩니다. 날짜는 숫자 1, 1, 2 및 3으로 표시될 수 있으므로 숫자의 피보나치 수열에서 올바르게 시퀀스된 부분을 나타냅니다.

인기 있는 소프트웨어 엔지니어링 과정 살펴보기

LJMU 및 IIITB의 컴퓨터 과학 석사 Caltech CTME 사이버 보안 인증 프로그램
풀스택 개발 부트캠프 블록체인의 PG 프로그램
풀 스택 개발의 임원 PG 프로그램
아래에서 모든 코스 보기
소프트웨어 엔지니어링 과정

피보나치 수열의 역사와 기원

레오나르도 피사노 보골로(Leonardo Pisano Bogollo)는 피보나치(Fibonacci)로 널리 알려져 있으며 이탈리아어 구어체로 대략 '보나치의 아들'로 번역됩니다.

피보나치(Fibonacci)는 이 특별한 수열의 공식화에 공로를 인정받았고, 결과적으로 피보나치의 이름을 따서 명명되었습니다. 그는 13세기 초에 그의 획기적인 책인Liber Abaci를통해 서유럽의 주요 지역에 그것을 소개했습니다 .

그 시대의 가장 재능 있는 수학자 사이에서 널리 알려진 피보나치는 우연히도 유럽 전역에서 힌두-아라비아 숫자를 널리 채택한 공로를 인정받았습니다. 그때까지는 훨씬 더 번거로운 로마 숫자를 사용했습니다.

그러나 오늘날 피보나치 수열이라고 하는 것은 고대 인도에서 일찍이 기원전 3세기에 사용된 것으로 알려져 있습니다.

그것은 고대 인도의 존경받는 현인 Acharya Pingala와 Bharata Muni에 기인한 고대 인도 공연 예술에 관한 논문인 Natya Shastra뿐만 아니라 Sanskrit 운율에 대한 고대 논문인 Pingala-sutras에서 표현되었습니다.

시퀀스에 대한 가장 결정적인 설명은 CE 8세기 초 Virahanka의 작업에 나타납니다. 이 텍스트 자체는 추적되지 않았지만 CE 1135년 Gopala의 작업에서 참조되고 광범위하게 인용되었습니다. 공교롭게도 해당 연도의 숫자는 연속되는 피보나치 수열을 나타냅니다.

운율 리듬의 또 다른 인도 학자인 Acharya Hemachandra는 그가 1150년에 매우 자세하게 기술한 수열에 대해 친밀한 지식을 가지고 있는 것으로 알려져 있습니다. 이것은 피보나치의 작업보다 50년 이상 앞선 것입니다.

upGrad의 소프트웨어 개발 과정을 확인하십시오

비네의 공식

상수 계수가 있는 모든 상수 재귀 시퀀스와 마찬가지로 피보나치 수는 Binet의 공식으로 알려진 폐쇄형 표현식으로 표시될 수 있습니다. 19세기 초 프랑스의 저명한 수학자 Jacques Philippe Marie Binet의 이름을 딴 Binet의 공식은 다음과 같이 나타낼 수 있습니다.

Fn 이 n번째 피보나치 수 라고 가정하면 :

위의 공식에서 도출할 수 있는 것은 처음 몇 개의 숫자를 제외하고 피보나치 수열의 각 연속 숫자 쌍 사이의 비율이 황금 비율(1:1.618, 21번째로 표시됨)에 점진적으로 수렴된다는 사실입니다. 그리스 알파벳의 문자 – Φ(파이).

즉, 시리즈의 각 숫자는 뒤에 오는 피보나치 수의 0.6180339887이거나 각 연속 숫자는 피보나치 수열에서 앞에 오는 숫자의 1.6180339887배입니다.

주문형 소프트웨어 개발 기술

자바스크립트 강좌 핵심 Java 과정 데이터 구조 과정
Node.js 과정 SQL 과정 전체 스택 개발 과정
NFT 과정 DevOps 과정 빅데이터 강좌
React.js 강좌 사이버 보안 과정 클라우드 컴퓨팅 과정
데이터베이스 디자인 강좌 파이썬 과정 암호화폐 강좌

피보나치 수열과 황금 비율

피보나치 수열과 그 파생물인 황금 비율의 중요성은 본질적으로 엄청나게 빈번한 반복으로 인해 상당히 높아집니다. 이에 대한 가장 일반적인 예는 다음과 같습니다.

  • 꽃잎이 3개인 백합이든, 꽃잎이 5개인 버터컵이든, 꽃잎이 21개인 치커리 꽃이든, 꽃잎이 34개인 데이지든 꽃의 꽃잎 수는 거의 변함없이 피보나치 수입니다.
    흥미롭게도, 피보나치 수에 대한 이러한 철저한 일치는 다윈의 설계의 산물인 것으로 보입니다. 왜냐하면 과학자들은 이러한 특정한 꽃잎 배열이 이러한 모든 꽃이 햇빛, 습기 및 새와 곤충과 같은 수분 매개체에 최적의 노출을 얻도록 보장한다는 것을 발견했기 때문입니다. .
  • 황금 비율 또는 Φ는 해바라기의 씨앗 머리에서 전체 은하까지, 솔방울의 돌기에서 허리케인까지, 파인애플의 가시에서 염소 뿔의 곡률까지, 작은 꽃에서 자연적으로 발생하는 거의 모든 나선형 패턴에서 볼 수 있습니다. 콜리플라워에서 인간 지문의 소용돌이까지.
    노틸러스 껍질의 나선형 패턴은 "피보나치 나선"이라고 불리는 것을 특히 상징적으로 표현한 것으로 간주됩니다.
  • 나무의 가지와 뿌리 계통, 벌집에 있는 수컷과 암컷 벌 사이의 비율, 미생물에서 달팽이, 거북이에서 고래에 이르기까지 동물의 다양한 신체 부위는 모두 황금 비율을 따릅니다.
  • 인체 생리학의 측면 – 예를 들어 전체 신체 길이와 머리에서 손끝까지의 거리 사이의 비율 또는 팔뚝과 손의 길이 사이의 비율은 모두 Φ에 따라 설계됩니다.
    인간 귀의 달팽이관은 탯줄과 마찬가지로 피보나치 나선입니다. 우리는 무의식적으로 높이 대 너비 비율이 황금 비율에 가까운 얼굴에 끌린다고 믿어집니다.

본질적으로 수학은 모든 것의 패턴을 밝히는 탐구입니다. 대자연의 무릎에서보다 이러한 패턴을 찾기에 더 좋고 널리 퍼진 영역은 없습니다.

미생물에서 은하계에 이르기까지 피보나치 수열은 미시적 규모에서 우주적 규모에 이르기까지 다양한 자연 생리학 및 현상에 반영되어 있습니다. 여기에는 그럴만한 이유가 있습니다.

황금 비율 또는 Φ는 그것이 표현하는 모든 것에 미적 및 기능적 조화의 인체 공학적 균형을 부여합니다. 황금 비율이 신성한 비율이라고도 하는 이유가 바로 이 때문입니다.

그러나 피보나치 수열의 중요성은 자연계를 훨씬 넘어서 수학, 과학 및 예술 전반에 걸쳐 인간의 광범위한 노력에서 표현됩니다.

소프트웨어 개발과 관련된 인기 기사 읽기

Java에서 데이터 추상화를 구현하는 방법은 무엇입니까? Java의 내부 클래스는 무엇입니까? Java 식별자: 정의, 구문 및 예
예제를 통해 OOPS의 캡슐화 이해하기 C의 명령줄 인수 설명 2022년 클라우드 컴퓨팅의 10대 기능 및 특성
Java의 다형성: 개념, 유형, 특성 및 예 Java의 패키지 및 사용 방법? 초보자를 위한 Git 자습서: 처음부터 Git 배우기

Python을 사용하여 피보나치 수열 생성

피보나치 수열과 황금 비율은 다음과 같은 다양한 측면에 필수적입니다.

  • 대수학, 기하학, 통계학, 삼각법 - 다양한 경제 관행과 주식 시장 분석에 적용할 수 있습니다.
  • 생물학, 물리학 및 컴퓨터 과학 – 합성 생물학 및 유전학, 토목 및 기계 공학, 건축, 인테리어 디자인, 물론 컴퓨터 프로그래밍에 적용됩니다.
  • 예술과 그래픽 디자인, 시, 음악, 춤

이는 종종 위의 주제 및 그 이상과 연결된 다양한 유용한 응용 프로그램을 만드는 기본 단계입니다.

피보나치 수열은 다양한 프로그래밍 언어를 사용하여 생성할 수 있습니다. 앞에서 언급했듯이 Python은 가장 강력하고 다재다능한 것 중 하나입니다. 가장 최첨단 기술 솔루션을 개발하기 위해 여러 가지 방법으로 피보나치 수와 피보나치 수열을 사용하고 조작할 수 있습니다.

IIIT Bangalore에서 upGrad의 블록체인 고급 인증 프로그래머를 확인하십시오.

다음은 피보나치 수열을 생성하는 데 Python을 사용할 수 있는 몇 가지 방법입니다.

반복적 접근

이 방법에서 알고리즘은 다음과 같습니다 .

  • 시퀀스 내에서 처음 두 개의 연속 용어를 나타내도록 임의의 두 변수를 할당합니다. 여기서 0은 시퀀스의 첫 번째 항을 나타내고 1은 두 번째 항을 나타냅니다.
  • 시퀀스에서 계산할 원하는 항의 범위를 설정하고 0부터 반복합니다.
  • 각 반복에서 알고리즘은 다음을 수행합니다.
    • 두 변수를 추가합니다.
    • 그런 다음 두 번째 변수의 값을 첫 번째 변수에 할당합니다.
      이전 두 변수의 합을 두 번째 변수로 합산합니다.
    • 등등…

해당 코드는 다음과 같이 작성됩니다 .

def fibo (숫자) :

a = 0

b = 1

xrange(0, 20)의 i에 대해:

인쇄

a, b = b, a + b

해당 출력은 피보나치 수열의 처음 20개 숫자입니다 .

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
144, 233, 377, 610, 987, 1597, 2584, 4181

재귀적 접근

이 방법에서 알고리즘은 다음을 도출합니다 .

앞의 두 항의 값을 더한 각 연속 항의 값. 이는 용어 n = 용어 n-1 + 용어 n-2로 나타낼 수 있습니다.

이 규칙에 대한 유일한 두 가지 예외는 항의 값이 0과 1이고 둘 다 변경되지 않은 값을 반환하는 경우입니다. 이러한 예외는 용어 n = 용어 n으로 나타낼 수 있습니다.

해당 코드는 다음과 같이 작성됩니다 .

데프 recur_fodo (n):

n < = 1인 경우:

n을 반환

또 다른:

반환 (recur_fibo (n-1) + recur_fibo (n-2) )

N항 = 20

# 용어의 수가 유효한지 확인

nerms <= 0인 경우:

print("양의 정수를 입력하세요")

또 다른:

인쇄("피보나치 수열")

범위 내 i의 경우(nterms):

인쇄(recur_fibo i))

해당 출력은 피보나치 수열의 처음 20개 숫자입니다 .

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,
144, 233, 377, 610, 987, 1597, 2584, 4181

피보나치 수열의 일부 독립 실행형 응용 프로그램

피보나치 수는 다양한 복잡한 모델 및 응용 프로그램 개발의 기본 단계일 뿐만 아니라 그 자체로 특정 작업 수행에 매우 중요한 몇 가지 고유한 특성을 가지고 있습니다.

  • 피보나치 수는 연속적인 피보나치 수의 쌍이 일반적으로 이 알고리즘에 가장 심각한 문제를 제시한다는 사실을 고려할 때 임의의 정수 쌍의 최대 공약수를 식별하기 위해 유클리드 알고리즘의 계산 런타임을 분석하는 데 사용할 수 있습니다.
  • 피보나치 수열은 고유하게 완전한 수열을 나타냅니다. 즉, 수열의 각 양의 정수는 두 피보나치 수의 합이며 그 중 하나는 한 번만 사용할 수 있습니다.
  • 피보나치 수에 기반한 알고리즘은 피보나치 검색 기술, 피보나치 힙 데이터 구조 및 병렬 시스템과 분산 시스템을 상호 연결하는 데 사용되는 피보나치 큐브 그래프의 개발에 도움이 되었습니다.
  • 피보나치 수는 소프트웨어 개발에서 개발 목표를 추정하기 위한 합의 기반 및 게임화된 기법인 스크럼 포커에 사용됩니다.
  • 피보나치 수준의 되돌림은 일반적으로 주식 시장 거래에 대한 기술적 분석에 사용됩니다.

결론적으로

우리는 이 기사를 진행하는 동안 피보나치 수열 또는 황금 비율에 대한 귀하의 관심을 불러일으키려고 시도했습니다. 이 수열의 핵심 기능과 자연계에서 생물과 무생물 모두 놀랍도록 자주 반복됩니다.

우리는 이 수학적 현상이 예술과 과학, 공학과 기술, 해부학과 유전학, 경제와 금융… .

우리는 Python이라는 매우 다재다능한 프로그래밍 언어가 이러한 수학적 개념을 조작하여 직간접적으로 예상치 못한 다양한 방식으로 인류에게 혜택을 줄 수 있는 방법을 실현하려고 시도했습니다.

파이썬과 피보나치 수열의 이 강력한 조합이 계속해서 여러분의 상상력을 사로잡고, 마음에 불을 붙이고, 열망에 불을 붙이고, 최고의 성취를 이룰 수 있도록 영감을 주는 것이 우리의 열렬한 희망입니다. 즐거운 코딩하세요! 행복한 꿈을 꾸세요!

upGrad에서는 특히 소프트웨어 개발과 관련하여 실용적인 실습 학습의 중요성을 이해합니다. 결과적으로 우리의 과정과 교육 이니셔티브는 그 핵심에 실용성을 가지고 있습니다. 그러한 이니셔티브 중 하나는 전체 스택 개발에서 탁월한 능력을 발휘하는 데 필요한 모든 관련 기술을 개발하는 데 도움이 되는 전체 스택 개발 부트캠프 입니다.

이 기사를 공유하고 싶습니까?

지금 소프트웨어 개발 경력을 계획하십시오!

컴퓨터 과학 석사 신청