Задача. Числа Фібоначчі.
Задача. Числа Фібоначчі.
Алгоритм
утворення чисел Фібоначчі мовою Паскаль
Program
Fibonachi_1; {Рекурсивна форма}
Var N:Integer;
A:Array[1..46] of LongInt;
Function
Fibo(X:Integer):LongInt;
Begin if A[X]=0 then if
(X=1) or (X=2) then A[X]:=1
else
A[X]:=Fibo(X-1)+Fibo(X-2); Fibo:=A[X];
end; {End Fibo}
begin write('Введіть N:'); readln(N);
writeln(Fibo(N)); end.
Завдання для самостійного програмування.
1.
Записати алгоритм, який знаходить суму чисел
Фібоначчі і їх кількість, що менші натурального числа N.
2.
Записати алгоритм, який знаходить суму парних
чисел Фібоначчі і їх кількість, що менші
натурального числа N.
3.
Записати алгоритм, який знаходить суму простих чисел
Фібоначчі і їх кількість, що менші
натурального числа N.
4.
Записати алгоритм, який знаходить числа
Фібоначчі і їх кількість, що діляться
націло на 3 і менші натурального числа N.
5.
Записати алгоритм, який знаходить числа
Фібоначчі, що діляться націло на 5 і на
2 їх кількість, які менші натурального числа N.
теорія
рекурентним співвідношенням другого порядку
і т. д. Ця послідовність виникає у найрізноманітніших математичних ситуаціях — комбінаторних, числових, геометричних.
В природі числа Фібоначчі часто трапляються в різних спіральних формах. Так, черешки листя примикають до стебла по спіралі, що проходить між двома сусідніми листками: 1/3 повного оберту в ліщини, 2/5 — у дуба, 3/8 — у тополі і груші, 5/13 — у верби; лусочки на ялиновій шишці, насіння соняшника розташовані спіралями, причому кількості спіралей кожного напрямку також, як правило, числа Фібоначчі.
Зміст
[сховати]Формула Біне[ред. • ред. код]
Числа Фібоначчі тісно пов'язані з золотим перетином Формула Біне виражає за допомогою значення в явному вигляді як функцію від :
При цьому і є коренями квадратного рівняння .
Оскільки знаходимо, що при Тому з формули Біне випливає, що для всіх натуральних є найближчим до цілим числом, тому або . Зокрема, справедливаасимптотика
Властивості чисел Фібоначчі[ред. • ред. код]
- Найбільший спільний дільник двох чисел Фібоначчі дорівнює числу Фібоначчі з індексом, рівним найбільшому спільному дільнику індексів, тобто: . Внаслідок цього:
- ділиться тоді й тільки тоді, коли ділиться на (за винятком );
- кожне третє число Фібоначчі парне ();
- кожне четверте ділиться на три ();
- кожне п'ятнадцяте закінчується нулем ();
- два сусідніх числа Фібоначчі взаємно прості;
- може бути простим тільки для простих (за єдиним винятком що пов'язано з ). Зворотне твердженняневірне: хоча — просте число. Тепер невідомо, чи існує нескінченно багато простих чисел Фібоначчі.
- Використовуючи те саме рекурентне співвідношення, що і на початку, у вигляді , можливо поширити визначення чисел Фібоначчі і на від'ємні індекси: Неважко переконатися, що тобто одержуємо таку саму послідовність із знаками, що чергуються.
- Послідовність чисел Фібоначчі є частковим випадком генерованої послідовності, її характеристичний многочлен рівний й має корені і .
- Генератрисою послідовності чисел Фібоначчі є:
- Числа Фібоначчі можна представити значеннями континуант на наборі одиниць: , тобто
-
- , а також ,
- де матриці мають розмір , — уявна одиниця.
- Для будь-якого n,
-
- Ця формула надає швидкий алгоритм обчислення чисел Фібоначчі за допомогою матричного варіанта алгоритма швидкого піднесення до степеня. Обчислення визначників дає:
-
- Відношення є підходящими дробами золотого перетину і, зокрема, .
- Суми біноміальних коефіцієнтів на діагоналях трикутника Паскаля є числами Фібоначчі з огляду на формулу
- .
- У 1964 р. J. H. E. Cohn довів, що єдиними точними квадратами серед чисел Фібоначчі є і
- Множина чисел Фібоначчі збігається з множиною натуральних значень наступного полінома двох змінних
де — цілі числа, див. P. Ribenboim, The New Book of Prime Number Records, Springer, 1996, стор. 153. Цей факт, знайдений Дж. Джоунзом, відіграє ключову роль у теоремі Матиясевича (негативному розв'язанні десятої проблеми Гільберта), тому що він надає спосіб задати експоненціально зростаючу послідовність чисел Фібоначчі у вигляді діофантової множини.
Числа Фібоначчі за logN[ред. • ред. код]
Ідея полягає в наступному.
F_n = F_(n-1) + F_(n-2) F_(n+1) = F_n + F_(n-1) = 2*F_(n-1) + F_(n-2)
Можна користуватися цими формулами в початковому вигляді, проте більш раціонально буде наступне матричне рівняння:
| F_n | | 1 1 | | F_(n-2)| | | = | | | | | F_(n+1)| | 1 2 | | F_(n-1)|.
Якщо через A позначити матрицю
| 1 1 | A = | | | 1 2 |,
то отримаєм
| F_(2n) | | 1 | | | = A^n * | | | F_(2n+1)| | 1 |.
Отже, щоб вирахувати 2n-е/2n +1- е число Фібоначчі, треба матрицю A піднести до n-ого степеня, а це можна зробити за O (log n)операцій.
Історія відкриття[ред. • ред. код]
У XIII столітті італійський математик Фібоначчі розв'язував таку задачу:
Фермер годує кроликів. Кожен кролик народжує одного кролика, коли йому стає 2 місяці, а потім дає потомство в 1 кролик кожен місяць. Скільки кроликів буде у фермера через n місяців, якщо спочатку у нього був лише один (вважаємо, що кролики не гинуть і кожен народжений дає потомство за вище описаною схемою)?
Очевидно, що першого та другого місяця у фермера залишається один кролик, оскільки потомства ще немає. На третій місяць буде два кролики, оскільки перший через два місяці народить другого кролика. На четвертий місяць перший кролик дасть ще одного, а другий кролик потомства не дасть, оскільки йому ще тільки один місяць. Отже на четвертий місяць буде три кролики.
Можна помітити, що кількість кроликів після n — го місяця дорівнює кількості кроликів, які були у n — 1 місяці плюс кількість народжених кроликів. Останніх буде стільки, скільки є кроликів що дають потомство, або дорівнює кількості кроликів, яким вже виповнилося 2 місяці (тобто кількості кроликів після n — 2 місяця).
Якщо через Fn позначити кількість кроликів після n — го місяця, то має місце наступне рекурентне співвідношення:
Fn = Fn-1 + Fn-2, F1 = F2 = 1
Покладемо F0 = 0, при цьому співвідношення при n = 2 залишиться істинним. Таким чином утворюється послідовність
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … ,
Немає коментарів:
Дописати коментар