2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Найти 10-й член последовательности Фибоначчи
Сообщение26.01.2007, 15:35 


26/01/07
1
Всем привет! Такая задача: требуется найти 10-й член последовательности Фибоначчи. Кто сможет показать, как это правильно делать?

 Профиль  
                  
 
 
Сообщение26.01.2007, 15:38 
Заслуженный участник
Аватара пользователя


11/01/06
3826
Проще и быстрее всего по рекуррентной формуле $F_{n+2}=F_{n+1}+F_n$.

 Профиль  
                  
 
 
Сообщение26.01.2007, 16:51 
Заслуженный участник
Аватара пользователя


26/11/06
696
мехмат
Можно записать общий член последовательности как функцию от $n$. Для этого докажите, что $x$ --- корень уравнения $x^2=x+1$, то $a_n=x^n$ --- удовлетворяет последовательности Фиббоначи. Далее, нужно взять линейные комбинации решений этого уравнение: $F_n=C_1x_1^n+C_2x_2^n$. Константы $C_1, C_2$ находятся из начальных условий ($F_1=F_2=1$). Поскольку $|x_2|<1$, то при больших $n$ можно пользоваться приближенной формулой $F_n\approx C_1x_1^n$.

 Профиль  
                  
 
 
Сообщение27.01.2007, 01:45 
Заслуженный участник
Аватара пользователя


11/01/06
3826
Конкретнее, $F_n$ - ближайшее к $\frac1{\sqrt5}\left(\frac{\sqrt5+1}2\right)^n$ целое число. Но $F_{10}$ проще всего считать по рекуррентной формуле (вычисления занимают от силы полминуты)

 Профиль  
                  
 
 
Сообщение16.10.2007, 16:36 


30/08/07
24
Скажите пожалуйста как прийти к тому что $a_n=x_n$?
Как найти $x$?
Я пробовал рассматривать последовательность Фибоначчи как геометрическую прогрессию. Тогда з формули $FQ^n=FQ^{n-1}* FQ^{n-2}$ я нашел $q_1=\frac {\sqrt5+1}{2}$ и $q_2=\frac{1-\sqrt5}{2}$. Подскажите правильно ли я делал?

 Профиль  
                  
 
 
Сообщение16.10.2007, 17:34 
Заслуженный участник
Аватара пользователя


01/03/06
13626
Москва
Вот хорошая книжка про эти числа: http://ilib.mccme.ru/plm/ann/a06.htm

 Профиль  
                  
 
 
Сообщение24.11.2007, 13:35 


26/05/06
44
Подскажите, какое время работы и сложность алгоритма для поиска
n-ого числа Фибоначчи при помощи рекурсивного алгоритма.
Формула для расчета:
Код:
Fib(n) = Fib(n-1)+Fib(n-2)

 Профиль  
                  
 
 
Сообщение24.11.2007, 16:03 
Экс-модератор


17/06/06
5004
Invisible писал(а):
Подскажите, какое время работы и сложность алгоритма для поиска n-ого числа Фибоначчи при помощи рекурсивного алгоритма.

Время работы и сложность отвратительные. Не делайте так никогда. Если делать обычным циклом, забывая предыдущие n-3 значения, то будет надежно O(n) по времени и O(1) по памяти.

А вот рекурсивно ...

Ну представьте как это будет. Чтобы посчитать Fib(n), вы что делаете? Сначала считаете Fib(n-2), а потом считаете Fib(n-1), в процессе чего во второй раз вычисляете Fib(n-2).

А теперь намек на точную цифру. Обозначим через T(n) количество операций сложения, требуемых для подсчета Fib(n). Очевидны следующие факты:
T(1)=0;
T(2)=0;
T(n)=T(n-1)+T(n-2)+1 при n>2.

Ну хотя бы из этих соображений видно, что скорость роста T(n) как минимум экспоненциальна.

Аналогичную оценку можно провести и для используемой алгоритмом памяти: при вызове каждой новой функции в стеке выделяется фиксированное количество места под аргумент. Количество вызовов функции фактически тоже равно T(n) - ведь при каждом вызове совершается ровно одно сложение. Так что не избежать вам переполнения стека в таких условиях ...

 Профиль  
                  
 
 
Сообщение24.11.2007, 23:06 


26/05/06
44
AD писал(а):
Время работы и сложность отвратительные. Не делайте так никогда.

да, я знаю, так как если представить в виде дерева например оно будет сильно разрастаться, что увеличит время работы выполнения

Мне просто надо было вычислить какое будет время работы и сложность

AD писал(а):
А теперь намек на точную цифру. Обозначим через T(n) количество операций сложения, требуемых для подсчета Fib(n). Очевидны следующие факты:
T(1)=0;
T(2)=0;
T(n)=T(n-1)+T(n-2)+1 при n>2.

Ну хотя бы из этих соображений видно, что скорость роста T(n) как минимум экспоненциальна.


AD спасибо за помощь, если я правильно посчитал
время выполнения: 2^\frac n 2
сложность: О(2^n)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group