În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci.

Similar documents
Subiecte Clasa a VI-a

Olimpiad«Estonia, 2003

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Metrici LPR interfatare cu Barix Barionet 50 -

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Procesarea Imaginilor

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Metoda BACKTRACKING. prof. Jiduc Gabriel

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

Modalitǎţi de clasificare a datelor cantitative

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

The First TST for the JBMO Satu Mare, April 6, 2018

Versionare - GIT ALIN ZAMFIROIU

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

ISBN-13:

Mecanismul de decontare a cererilor de plata

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

GHID DE TERMENI MEDIA

Mircea Merca 1) Articol dedicat Prof. Dr. Ioan Tomescu la a 70-a aniversare

Introducere în algebra computationala

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

2. In the pattern below, which number belongs in the box? 0,5,4,9,8,13,12,17,16, A 15 B 19 C 20 D 21

Generarea şi validarea numerelor prime mari

Auditul financiar la IMM-uri: de la limitare la oportunitate

Baze de date distribuite și mobile

Printesa fluture. Мобильный портал WAP версия: wap.altmaster.ru

X-Fit S Manual de utilizare

CERERI SELECT PE MAI MULTE TABELE

6. Bucle. 6.1 Instrucţiunea while

Updating the Nomographical Diagrams for Dimensioning the Concrete Slabs

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

CHAMPIONS LEAGUE 2017 SPONSOR:

F. Radulescu. Curs: Utilizarea bazelor de date, anul IV C5.

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

EN teava vopsita cu capete canelate tip VICTAULIC

CERERI SELECT PE O TABELA

Lucrarea de laborator nr. 4

Update firmware aparat foto

Kurt Gödel Argumentul ontologic

INTEROGĂRI ÎN SQL SERVER

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

ADMITERE 2015 SUBIECTELE PROBELOR ŞI BAREMELE DE CORECTARE ŞI NOTARE PROFILUL MAIŞTRI MILITARI PROBA NR.1 TEST GRILĂ LA LIMBA ENGLEZĂ VARIANTA 2

Prima. Evadare. Ac9vity Report. The biggest MTB marathon from Eastern Europe. 7th edi9on

ARHITECTURA SISTEMELOR DE CALCUL ŞI SISTEME DE OPERARE. LUCRĂRILE DE LABORATOR Nr. 6, 7 şi 8 REPREZENTAREA INFORMAŢIILOR NUMERICE ÎNTREGI ŞI REALE.

Lecţii complementare de teoria grafurilor

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

Managementul referinţelor cu

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

KAJOT V.RO BLACK PLANET JOC DE NOROC CU RISC LIMITAT

Propuneri pentru teme de licență

REZOLVAREA NUMERICĂ A ECUAŢIILOR CU DERIVATE PARŢIALE FOLOSIND METODA LINIILOR

Evoluția pieței de capital din România. 09 iunie 2018

PROCEDURA PRIVIND DECONTURILE. 2. Domeniu de aplicare Procedura se aplică în cadrul Universităţii Tehnice Cluj-Napoca

SAG MITTIGATION TECHNICS USING DSTATCOMS

Metoda de programare BACKTRACKING

CURS 2. Reprezentarea numerelor intregi si reale. Sistem de numeraţie

Evaluarea acţiunilor

O abordare Data Mining pentru detectarea accesului neautorizat la baza de date.

REAL TIME QUALITY CONTROL OF THE HEATSET OFFSET PRINTING PROCESS

A NOVEL ACTIVE INDUCTOR WITH VOLTAGE CONTROLLED QUALITY FACTOR AND SELF-RESONANT FREQUENCY

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

Vizualizarea documentelor xml

ANTICOLLISION ALGORITHM FOR V2V AUTONOMUOS AGRICULTURAL MACHINES ALGORITM ANTICOLIZIUNE PENTRU MASINI AGRICOLE AUTONOME TIP V2V (VEHICLE-TO-VEHICLE)

MODELUL UNUI COMUTATOR STATIC DE SURSE DE ENERGIE ELECTRICĂ FĂRĂ ÎNTRERUPEREA ALIMENTĂRII SARCINII

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

Managementul Proiectelor Software Metode de dezvoltare

TIPURI DE DATE SIMPLE

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Universitatea Lucian Blaga din Sibiu Facultatea de inginerie Hermann Oberth Catedra de Calculatoare şi automatizări

8 Calculul sistemelor de ventilație

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

Informaţie privind condiţiile de eliberare a creditelor destinate persoanelor fizice - consumatori a BC MOBIASBANCĂ Groupe Société Generale S.A.

PARLAMENTUL EUROPEAN

COMUNICAȚII INFORMATIZARE

Reticențele lui Wittgenstein față de teorema de incompletitudine a lui Gödel

1. Transferul de căldură printr-o nervură rectangulară

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

ANALELE UNIVERSITĂŢII BUCUREŞTI

Contribuţii la studiul laticii subgrupurilor unui grup

INTERNATIONAL MATHEMATICS COMPETITION

Preţul mediu de închidere a pieţei [RON/MWh] Cota pieţei [%]

The driving force for your business.

Capete terminale şi adaptoare pentru cabluri de medie tensiune. Fabricaţie Südkabel Germania

Stat minimal sau utopie? O incursiune în viziunea lui Robert Nozick privind conceptul de asociație stabilă

Capitolul 4 SUBCERERI. F. Radulescu. Curs: Baze de date - Limbajul SQL

Strategii pentru jocul de dame Dame Inteligente

Normalizarea tăriei sonore şi nivelul maxim permis al semnalelor audio

Structuri de date: ARBORI

earning every day-ahead your trust stepping forward to the future opcom operatorul pie?ei de energie electricã și de gaze naturale din România Opcom

ALGORITMI DE GESTIUNE A PAGINILOR DE MEMORIE

Sunt termenii care stau pentru genuri naturale designatori rigizi?

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu

A Die-Linked Sequence of Dacian Denarii

Proiectarea Sistemelor Software Complexe

Transcription:

O condiţie necesară şi suficientă ca un număr să fie număr Fibonacci Autor: prof. Staicu Ovidiu Ninel Colegiul Economic Petre S. Aurelian Slatina, jud. Olt 1. Introducere Propuse de Leonardo Pisa în 1202, numerele lui Fibonacci reprezintă un şir de numere construit după o anumită relaţie de recurenţă între termeni. Numerele lui Fibonacci sunt introduse prin problema iepurilor de casă : plecând de la o singură pereche de iepuri (un mascul şi o femelă) şi ştiind că fiecare pereche de iepuri produce în fiecare lună o nouă pereche de iepuri, care devine "productivă" la vârsta de o lună, calculaţi câte perechi de iepuri vor fi după n luni. Pisa arată că într-o situaţie perfectă (fără să moară iepuri), fiecare pereche de iepuri produce o altă pereche în fiecare lună. Acest tip de creştere conduce la o serie de numere cunoscute ca numere Fibonacci. Definiţia 1. Se numesc numere Fibonacci numerele care fac parte din şirul de numere începând cu 0, 1, 1, 2, 3,... unde fiecare număr succesiv este suma numerelor precedente. Mai precis, şirul poate fi definit prin relaţia de recurenţă: În continuare vom prezenta unele dintre problemele de calcul ale numerelor Fibonacci. 2. Calculul numerelor Fibonacci Folosind relaţia de recurenţă dată în Definiţia 1 pentru numerele lui Fibonacci vom implementa natural un algoritm recursiv pentru a calcula cel de-al n-lea număr Fibonacci. De exemplu, următorul algoritm implementat în C++, returnează cel de-al n-lea număr Fibonacci: static int Fibonacci (int n) if(n < 0) throw new ArgumentException("Input parameter invalid"); int N; if (n == 0) N = 0; else if (n == 1 n == 2) N = 1; else N = Fibonacci(n - 1) + Fibonacci(n - 2); return N; 1 www.ls-infomat.ro www.manuale-de-informatica.ro

Pentru a calcula, algoritmul va calcula, construind arborele următor: Timpul de executare creşte exponenţial cu cât încercăm să calculăm un număr Fiboncci mai mare. Din acest motiv este bine să ne bazăm pe o formulă exactă de calcul a numerelor Fibonacci cum este Formula Binnet sau varianta de calcul iterativă. Formula Binnet: static double Fibonacci(int n) double gr = ((double)1 + Sqrt(5)) / 2; double grn = Pow(gr, n); double gr_1 = Pow(((double)1 - gr), n); return (grn-gr_1)/ Sqrt(5); Varianta de calcul iterativă: static int Fibonacci (int n) int index1 = 1, index2 = 1; if (n == 0) return 0; if (n == 1 n == 2) return 1; int current; for (int i = 2; i <= n; i++) current = index1+index2; index1=index2; index2= current; return current; 3. Condiţia necesară şi suficientă ca un număr să fie Fibonacci Dacă putem calcula valoarea exactă a unui număr Fibonacci eficient, următoarea întrebare care apare în mod natural este dacă se dă un număr natural, cum putem determina eficient dacă este sau nu număr Fibonacci. În mod normal ar trebui să calculăm numerele Fibbonacci până când ajungem sau depăşim valoarea lui. Această abordare este ineficientă şi durează din ce în ce mai mult pentru o valoare din ce în ce mai mare. În continuare vom prezenta o condiţie de testare elegantă cu ajutorul căreia vom stabili dacă un număr este sau nu Fibonacci. 2

Vom arăta că orice întreg pozitiv este număr Fibonacci dacă şi numai dacă este pătrat perfect. Pentru a demonstra această teoremă mai întâi introducem două leme, care apoi vor fi folosite pentru a demonstra teorema finală. Această teoremă a fost dată de Gessel în 1972. Lema1. Ecuaţia:, este satisfăcută de perechea, Demonstraţie. Vom demonstra Lema 1 prin inducţie. Verificăm afirmaţia pentru cazul Pentru avem perechea Fibonacci. Înlocuind în ecuaţie obţinem: Verificăm afirmaţia pentru cazul Pentru avem perechea Fibonacci. Înlocuind în ecuaţie obţinem: Presupunem afirmaţia adevărată pentru perechea pentru perechea, ceea ce este echivalent cu: Presupunem şi vom demonstra: adevărată şi demonstrăm că este adevărată (1) Pentru că sunt numere Fibonacci, Înlocuind în (1) obţinem: Lema 2. Dacă (x, y) este o pereche de numere pozitive întregi care satisface ecuaţia atunci, pentru un anume n, n 0. Demonstraţie prin inducţie după (x+y). În primul rând, dacă şi sunt numere pozitive atunci ele pot fi, sau. Dacă atunci În al doilea rând dacă atunci substituind pe cu obţinem: Observăm că există perechea pentru care ecuaţia este satisfăcută. 3

În final presupunem că şi. Avem perechea de numere întregi pozitive care satisfac ecuaţia, aşa cum se vede mai jos: Prin urmare, prin inducţie, pentru un anume, şi de aici şi ceea ce înseamnă că Teorema 1. Un întreg pozitiv este un număr Fibonacci dacă şi numai dacă este pătrat perfect. Soluţia ecuaţiei pătratice este sau echivalent Presupunând că y este pozitiv putem simplifica forma la Presupunând că este numărul Fibonacci pentru un anume n, conform Lemei 1 trebuie să fie numărul Fibonacci. Pentru ca să fie număr Fibonacci (şi implicit întreg), trebuie să fie întreg. Astfel că trebuie să fie pătrat perfect. Invers, presupunând că este pătrat perfect şi ştiind că este un număr pozitiv întreg, trebuie să fie de asemenea un număr pozitiv întreg. Conform regulilor de bază ale adunării şi înmulţirii avem: Dacă este impar, atunci este impar. Adunând sau scăzând 4 obţinem tot un număr impar. De aceea este impar şi pătrat perfect. Dacă extragem radical dintr-un număr pătrat perfect şi impar obţinem un număr impar. Deci în final avem: Cum este număr impar adunând încă o valoare impară obţinem un număr par care care atunci când se împarte la 2 dă ca rezultat un număr întreg. 4

Dacă este par, atunci este par. Adunând sau scăzând 4 obţinem tot un număr par. De aceea este par şi pătrat perfect. Dacă extragem radical dintr-un număr pătrat perfect şi par obţinem un număr par. Deci în final avem: Cum x este număr par adunând încă o valoare pară, obţinem un număr par care atunci când se împarte la 2 dă ca rezultat un număr întreg. Ştiind că este un întreg pozitiv, conform lemei 2, ambele valori şi trebuie să fie numere Fibonacci. Iată sursa programului în C++ care verifică dacă un număr este Fibonacci conform teoremei demonstrate mai sus: #include <iostream> #include <cmath> using namespace std; bool EsteFib(double x) double x1=5* pow(x,2.0)+4; double x2=5* pow(x,2)-4; long radical_x1=(long )sqrt(x1); long radical_x2=(long )sqrt(x2); return (radical_x1*radical_x1==x1) (radical_x2*radical_x2==x2)? true:false; int main() int n; cout<<"introduceti numarul:"; cin>>n; EsteFib(n)==1? cout<<n<<" este numar Fibonacci": cout<<n<<" nu este numar Fibonacci"; return 0; Bibliografie 1. Phillip James, Department of Computer Science, Swansea University When is a number Fibonacci?, 2009: http://www.cs.swan.ac.uk 2. http://www.maths.surrey.ac.uk/ 5