Implementacja ciągu Fibonacciego w Pythonie

Opublikowany: 2023-02-23

Python to potężny i wszechstronny wielozadaniowy język programowania, który ułatwia wdrażanie sztucznych sieci neuronowych i obsługuje przetwarzanie języka naturalnego, głębokie uczenie się, rozpoznawanie twarzy, algorytmy genetyczne i wiele innych najnowocześniejszych zadań opartych na sztucznej inteligencji.

W tym artykule omówiono niektóre z głównych sposobów wykorzystania Pythona do dokładnego generowania ciągu Fibonacciego — doskonały przykład stosunkowo prostych algorytmów, które są nie tylko użyteczne same w sobie, ale często stanowią podstawę do budowania zaawansowanych programów zdolnych do wykonywania złożonych funkcje poznawcze.

Spis treści

Co to jest ciąg Fibonacciego?

Ciąg Fibonacciego jest prawdopodobnie jednym z najprostszych, najwcześniej znanych i najbardziej znanych ciągów matematycznych znanych ludzkości.

Jest to ciągły ciąg liczb całkowitych, gdzie każda kolejna liczba jest równa sumie dwóch poprzednich. Szereg Fibonacciego zaczyna się od 0 i 1 i przebiega następująco: 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 i tak dalej.

Z zerem jako punktem początkowym, Ciąg Fibonacciego rozciąga się w nieskończoność w dwukierunkowy sposób w następujący sposób:
…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… Sekwencja na lewo od zera jest znana jako sekwencja „negafibonacci”.

Sprawdź nasze bezpłatne kursy technologiczne, aby uzyskać przewagę nad konkurencją.

Ciąg Fibonacciego można przedstawić matematycznie w następujący sposób:

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

Gdzie n to liczba terminów, a x n to wartość terminów. Wzór na obliczenie wartości wyrażenia x n to:
x n = x n-1 + x n-2

Tak więc wartość wyrażenia numer 8 to na przykład:

x 8 = x 7 + x 6

x 8 = 13 + 8

x 8 = 21

Oto trochę ciekawostek związanych z ciągiem Fibonacciego: Dzień Fibonacciego obchodzony jest 23 listopada, ponieważ datę mogą reprezentować cyfry 1, 1, 2 i 3 – które reprezentują poprawnie ułożony segment ciągu liczb Fibonacciego.

Zapoznaj się z naszymi popularnymi kursami inżynierii oprogramowania

Magister informatyki na LJMU i IIITB Program certyfikacji cyberbezpieczeństwa Caltech CTME
Bootcamp programistyczny Full Stack Program PG w Blockchain
Executive PG Program w Full Stack Development
Zobacz wszystkie nasze kursy poniżej
Kursy inżynierii oprogramowania

Historia i pochodzenie ciągu Fibonacciego

Leonardo Pisano Bogollo, popularnie znany jako Fibonacci, co w potocznym języku włoskim z grubsza oznacza „syn Bonacciego”.

Fibonacciemu przypisuje się sformułowanie tego szczególnego ciągu liczb, który – w konsekwencji – został nazwany jego imieniem. Wprowadził ją do znacznej części zachodniej Europy na początku XIII wieku n.e. za pośrednictwem swojej przełomowej księgi –Liber Abaci.

Powszechnie uważany za jednego z najbardziej utalentowanych matematyków swoich czasów, Fibonacciemu, nawiasem mówiąc, przypisuje się również powszechne przyjęcie cyfr hindusko-arabskich w całej Europie, która do tej pory używała znacznie bardziej nieporęcznych cyfr rzymskich.

Jednak wiadomo, że to, co dziś nazywa się ciągiem Fibonacciego, było używane w starożytnych Indiach już w III wieku pne.

Znalazło to wyraz w Pingala-sutrach, starożytnym traktacie o sanskryckiej prozodii, jak również w Natya Shastra, traktacie o starożytnych indyjskich sztukach performatywnych, przypisywanych czcigodnym mędrcom starożytnych Indii, odpowiednio Acharya Pingala i Bharata Muni.

Najbardziej ostateczny komentarz do sekwencji pojawia się w dziele Virahanki na początku VIII wieku n.e. Chociaż sam ten tekst nie został odnaleziony, odwoływano się do niego i obszernie cytowano go w dziele Gopala z 1135 roku n.e. Przypadkowo cyfry tego roku reprezentują kolejny ciąg liczb Fibonacciego.

Uważa się, że inny indyjski uczony rytmu metrycznego, Acharya Hemachandra, miał dogłębną wiedzę na temat sekwencji, którą opisał bardzo szczegółowo w 1150 roku n.e. To wyprzedza pracę Fibonacciego o ponad 50 lat.

Sprawdź kursy tworzenia oprogramowania upGrad

Formuła Bineta

Podobnie jak wszystkie stałe-rekurencyjne sekwencje ze stałymi współczynnikami, liczby Fibonacciego można przedstawić jako wyrażenie w postaci zamkniętej, które stało się znane jako wzór Bineta. Nazwany na cześć Jacquesa Philippe'a Marie Bineta, wybitnego francuskiego matematyka z początku XIX wieku, wzór Bineta można przedstawić w następujący sposób:

Biorąc pod uwagę, że F n jest n-tą liczbą Fibonacciego:

Z powyższego wzoru można wywnioskować, że poza kilkoma pierwszymi liczbami, stosunek między każdą kolejną parą liczb w ciągu Fibonacciego stopniowo zbliża się do tzw. litera alfabetu greckiego – Φ (phi).

Oznacza to, że każda liczba w szeregu jest równa 0,6180339887 następującej po niej liczby Fibonacciego LUB każda kolejna liczba jest 1,6180339887 razy większa od liczby poprzedzającej ją w ciągu Fibonacciego.

Umiejętności tworzenia oprogramowania na żądanie

Kursy JavaScript Podstawowe kursy języka Java Kursy dotyczące struktur danych
Kursy Node.js Kursy SQL Kursy rozwoju pełnego stosu
Kursy NTF Kursy DevOps Kursy Big Data
Kursy React.js Kursy Cyberbezpieczeństwa Kursy przetwarzania w chmurze
Kursy projektowania baz danych Kursy Pythona Kursy kryptowalut

Sekwencja Fibonacciego i złoty podział

Znaczenie ciągu Fibonacciego i jego pochodnej, złotego podziału, jest znacznie zwiększone ze względu na jego zadziwiająco częste powtarzanie się w przyrodzie. Oto niektóre z najczęstszych przykładów:

  • Liczba płatków kwiatu jest prawie zawsze liczbą Fibonacciego, niezależnie od tego, czy jest to 3-płatkowa lilia, 5-płatkowy jaskier, 21-płatkowy kwiat cykorii czy 34-płatkowa stokrotka.
    Co ciekawe, ta niezłomna zgodność z liczbami Fibonacciego wydaje się być wytworem Darwinowskiego projektu, ponieważ naukowcy odkryli, że te szczególne układy płatków zapewniają każdemu z tych kwiatów optymalną ekspozycję na światło słoneczne, wilgoć i czynniki zapylające, takie jak ptaki i owady .
  • Złoty podział lub Φ jest widoczny w prawie wszystkich naturalnie występujących spiralnych wzorach – od główek nasion słonecznika po całe galaktyki, od wypukłości na szyszce sosnowej po huragany, od kolców ananasa po krzywiznę rogów kozła i od różyczek kalafiora do okółków na ludzkim odcisku palca.
    Spiralny wzór muszli łodzika jest uważany za szczególnie charakterystyczne przedstawienie tak zwanej „spirali Fibonacciego”.
  • Rozgałęzienia drzew i systemy korzeniowe, stosunek samców i samic pszczół w ulu, różne części ciała zwierząt – od drobnoustrojów po ślimaki, od żółwi po wieloryby – wszystko to odpowiada złotemu podziałowi.
  • Aspekty ludzkiej fizjologii – na przykład stosunek między naszą całkowitą długością ciała a odległością od głowy do czubków palców lub stosunek długości przedramion do dłoni – wszystkie są zaprojektowane zgodnie z Φ.
    Ślimak w ludzkim uchu jest spiralą Fibonacciego, podobnie jak pępowina. Uważa się nawet, że podświadomie pociągają nas twarze, których proporcje wysokości do szerokości zbliżają się do złotego podziału.

W swojej istocie matematyka jest poszukiwaniem wzorców we wszystkich rzeczach. Nie ma lepszej ani bardziej wszechobecnej areny do poszukiwania tych wzorców niż na łonie matki natury.

Od mikroorganizmów po galaktyki, ciąg Fibonacciego znajduje odzwierciedlenie w przytłaczającej gamie naturalnej fizjologii, a także zjawisk, od skali mikroskopowej do kosmicznej – i nie bez powodu.

Złoty podział lub Φ nadaje ergonomiczną równowagę estetycznej i funkcjonalnej harmonii wszystkiemu, w czym się znajduje. Z tego powodu złoty podział jest również nazywany Boską Proporcją.

Ale znaczenie ciągu Fibonacciego wykracza daleko poza świat przyrody, znajdując wyraz w szerokim zakresie ludzkich przedsięwzięć – w matematyce, naukach ścisłych i sztuce.

Przeczytaj nasze popularne artykuły związane z tworzeniem oprogramowania

Jak zaimplementować abstrakcję danych w Javie? Co to jest klasa wewnętrzna w Javie? Identyfikatory Java: definicja, składnia i przykłady
Zrozumienie enkapsulacji w OOPS z przykładami Wyjaśnienie argumentów wiersza poleceń w języku C 10 najważniejszych funkcji i cech przetwarzania w chmurze w 2022 r
Polimorfizm w Javie: pojęcia, typy, cechy charakterystyczne i przykłady Pakiety w Javie i jak z nich korzystać? Samouczek Git dla początkujących: Naucz się Git od podstaw

Generowanie ciągu Fibonacciego za pomocą Pythona

Sekwencja Fibonacciego i złoty podział są integralną częścią różnych aspektów:

  • Algebra, geometria, statystyka i trygonometria – które można zastosować w różnych praktykach ekonomicznych i analizie giełdowej.
  • Biologia, fizyka i informatyka – które znajdują zastosowanie w biologii syntetycznej i genetyce, inżynierii lądowej i mechanicznej, architekturze, projektowaniu wnętrz i oczywiście programowaniu komputerów.
  • Projektowanie plastyczne i graficzne, a także poezja, muzyka i taniec

Często jest to podstawowy krok w tworzeniu szerokiej gamy przydatnych aplikacji związanych z powyższymi tematami i nie tylko.

Ciąg Fibonacciego można wygenerować przy użyciu wielu różnych języków programowania. Jak wspomniano wcześniej, Python jest jednym z najpotężniejszych i najbardziej wszechstronnych z nich – potrafi wykorzystywać i manipulować liczbami Fibonacciego i ciągiem Fibonacciego na wiele sposobów w celu opracowania najnowocześniejszych rozwiązań technologicznych.

Sprawdź zaawansowanego programistę certyfikatów upGrad w Blockchain od IIIT Bangalore

Oto kilka metod, za pomocą których można użyć Pythona do wygenerowania ciągu Fibonacciego:

Podejście iteracyjne

W tej metodzie algorytm :

  • Przypisuje dowolne dwie zmienne do reprezentowania dwóch początkowych kolejnych wyrazów w sekwencji. Gdzie 0 oznacza pierwszy wyraz ciągu, a 1 oznacza drugi.
  • Ustawia żądany zakres warunków do obliczenia w sekwencji i pętli od 0 wzwyż.
  • W każdej iteracji algorytm:
    • Dodaje dwie zmienne.
    • Następnie przypisuje wartość drugiej zmiennej do pierwszej zmiennej
      a suma poprzednich dwóch zmiennych do drugiej zmiennej.
    • I tak dalej…

Odpowiedni kod byłby zapisany w następujący sposób :

def fibo (liczba):

za = 0

b = 1

dla i w xrange(0, 20):

wydrukować

za, b = b, za + b

Odpowiednim wyjściem byłoby pierwsze dwadzieścia liczb ciągu Fibonacciego :

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

Podejście rekurencyjne

W tej metodzie algorytm wyprowadza :

Wartość każdego kolejnego terminu przez zsumowanie wartości dwóch poprzednich terminów. Można to przedstawić jako wyraz n = wyraz n-1 + wyraz n-2.

Jedynymi dwoma wyjątkami od tej reguły są sytuacje, gdy wartościami warunków są 0 i 1, z których oba zwracają niezmienione wartości. Te wyjątki można przedstawić jako termin n = termin n.

Odpowiedni kod byłby zapisany w następujący sposób :

def recur_fodo (n):

jeśli n < = 1:

powrót r

w przeciwnym razie:

powrót (recur_fibo (n-1) + recur_fibo (n-2) )

Ntermy = 20

# sprawdź, czy liczba warunków jest poprawna

jeśli nerwy <= 0:

print("Proszę podać dodatnią liczbę całkowitą")

w przeciwnym razie:

drukuj („sekwencja Fibonacciego”)

Dla i w zakresie (nterms):

Drukuj (recur_fibo i))

Odpowiednim wyjściem byłoby pierwsze dwadzieścia liczb ciągu Fibonacciego :

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

Niektóre samodzielne zastosowania ciągu Fibonacciego

Oprócz tego, że są fundamentalnym krokiem w rozwoju różnych złożonych modeli i aplikacji, liczby Fibonacciego same w sobie posiadają pewne unikalne cechy, które czynią je nieocenionymi w wykonywaniu pewnych zadań:

  • Liczby Fibonacciego można wykorzystać do analizy obliczeniowego czasu wykonywania algorytmu Euclida w celu zidentyfikowania największego wspólnego dzielnika losowej pary liczb całkowitych, biorąc pod uwagę fakt, że para kolejnych liczb Fibonacciego zazwyczaj stanowi największe wyzwanie dla tego algorytmu.
  • Liczby Fibonacciego jednoznacznie reprezentują pełną sekwencję, tak że każda dodatnia liczba całkowita w szeregu jest sumą dwóch liczb Fibonacciego, z których każda może być użyta tylko raz.
  • Algorytmy oparte na liczbach Fibonacciego pomogły w opracowaniu techniki wyszukiwania Fibonacciego, struktury danych sterty Fibonacciego oraz wykresów sześciennych Fibonacciego używanych do łączenia systemów równoległych i rozproszonych.
  • Liczby Fibonacciego są używane w pokerze scrumowym – opartej na konsensusie i gamifikowanej technice szacowania celów rozwojowych w tworzeniu oprogramowania.
  • Zniesienie poziomów Fibonacciego jest powszechnie stosowane w analizie technicznej dla handlu giełdowego.

Podsumowując

W trakcie tego artykułu staraliśmy się zainteresować Cię ciągiem Fibonacciego lub złotym podziałem – jego kluczowymi cechami i zadziwiająco częstym powtarzaniem się w świecie przyrody – zarówno ożywionej, jak i nieożywionej.

Próbowaliśmy uchwycić wpływ i odtworzyć cud, jaki to zjawisko matematyczne stworzyło w bardzo rozbieżnej i wielowymiarowej gamie ludzkich zajęć – sztuce i naukach ścisłych, inżynierii i technologii, anatomii i genetyce, ekonomii i finansach… i wielu innych .

Próbowaliśmy pokazać, w jaki sposób niezwykle wszechstronny język programowania o nazwie Python może pomóc manipulować tymi pojęciami matematycznymi, aby przynieść korzyści ludzkości na nieoczekiwanie różnorodne sposoby – zarówno bezpośrednio, jak i pośrednio.

Mamy gorącą nadzieję, że ta potężna kombinacja Pythona i Ciągu Fibonacciego nadal będzie pobudzać Twoją wyobraźnię, rozpalać Twoje umysły, napędzać Twoje aspiracje i inspirować do osiągania największych osiągnięć. Miłego kodowania! Miłego snu!

W upGrad rozumiemy znaczenie praktycznej, praktycznej nauki – zwłaszcza jeśli chodzi o tworzenie oprogramowania. W rezultacie nasze kursy i inicjatywy szkoleniowe opierają się na praktyczności. Jedną z takich inicjatyw jest Full Stack Development Bootcamp , który pomoże Ci rozwinąć wszystkie istotne umiejętności wymagane do osiągnięcia doskonałości w pełnym rozwoju.

Chcesz udostępnić ten artykuł?

Zaplanuj swoją karierę programisty już teraz!

Złóż wniosek o tytuł magistra informatyki