Как стать автором
Обновить

Числа Фибоначчи

Время на прочтение 1 мин
Количество просмотров 10K
Научно-популярное
Числа Фибоначчи — элементы числовой последовательности в которой каждое последующее число равно сумме двух предыдущих чисел. Название по имени итальянского математика средневековой Европы Леонардо Пизанский (прозвище Фибоначчи, что обозначает «хороший сын родился»).

Эта последовательность была хорошо известна в Индии, где применялась в метрических науках. Позже многие исследователи начали замечать эту последовательность в природа и также в космосе. В ролике, который внизу есть очень много примеров, где эта последовательность присутствует.

Всего голосов 130: ↑73 и ↓57 +16
Комментарии 97

1, 1, 2, 3, 5, 8 или как я поборол Фибоначчи-зависимость

Время на прочтение 4 мин
Количество просмотров 33K
Блог компании Intel
image
Числа Фибоначчи — элементы числовой последовательности 1, 1, 2, 3, 5, 8, 13, 21, 34,… в которой каждое последующее число равно сумме двух предыдущих чисел. Числа Фибоначчи мы можем заметить во многих объектах природы, в соотношении пропорций туловища или увидеть реализацию спирали Фибоначчи в раковине моллюска.

С недавнего времени мне не дают покоя эти самые числа Фибоначчи! С какими бы материалами по параллельному программированию я не знакомился, я всюду встречаю эти числа. Возникает ощущение, что все параллельное программирование связано исключительно с проблемой вычислений чисел Фибоначчи.

Вычисление чисел Фибоначчи приводится во множестве печатных и электронных статей. Даже Wikipedia-статья о Parallel computing содержит пример их вычисления.

Какой пример любят приводить разработчики Cilk? Конечно, вычисление чисел Фибоначчи. Числа Фибоначчи в проспекте Cilk "Parallelism for the Masses". Числа Фибоначчи в описании Cilkview. Про Фибонначи идет речь в "Cilk Reference Manual". Проще говоря, везде.

Читать дальше →
Всего голосов 29: ↑16 и ↓13 +3
Комментарии 15

Числа Фибоначчи (этюд на C#)

Время на прочтение 2 мин
Количество просмотров 45K
.NET *
Наверное многим студентам приходилось изучать рекурсию на примере вычисления чисел Фибоначчи. Задачка это безусловно академическая, и рекурсию она иллюстрирует явно хуже чем вычисление, скажем, факториалов, но она интересна тем, что имеет много решений разной степени извращенности. В этом посте – небольшой этюд на эту тему.

Если интересно...
Всего голосов 60: ↑41 и ↓19 +22
Комментарии 54

Нахождение чисел Фибоначчи

Время на прочтение 2 мин
Количество просмотров 22K
Спортивное программирование *
Доброго времени суток!
Сегодня я хотел бы рассказать о методе разрешения некоторых рекуррентностей и разобрать классический пример на эту тему.
Читать дальше →
Всего голосов 91: ↑49 и ↓42 +7
Комментарии 39

Числа Фибоначчи на Brainfuck

Время на прочтение 4 мин
Количество просмотров 4.9K
Ненормальное программирование *
Прочитав в начале года статью «Brainfuck и счастливые билеты», я решил, что пора уже изучить Brainfuck и написать на нём что-нибудь интересное. Долго думать не пришлось. Я решил написать свою «ненормальную» реализацию чисел Фибоначчи, в которой пользователь вводит однозначное число, определяющее количество выводимых элементов ряда Фибоначчи.

В создании программы мне также помогли сайт о Brainfuck'е и таблица ASCII символов
Узнать, цел ли мозг...
Всего голосов 35: ↑24 и ↓11 +13
Комментарии 30

Раз дощечка, два дощечка — будет лесенка…

Время на прочтение 3 мин
Количество просмотров 6.5K
Алгоритмы *
Именно о лесенках хотелось бы немного поговорить. Есть такая относительно распространенная задача с программистских собеседований:

Вы поднимаетесь по лестнице. На каждом шаге вы можете подняться либо на 1 ступеньку, либо на 2. Всего лестница имеет n ступенек. Сколькими разными способами вы можете дойти до конца лестницы?

Задача не сильно сложная, но имеющая пару интересных моментов относительно минимально возможной сложности решения и демонстрирующая «штуки, которые интересно знать».

Читать дальше →
Всего голосов 49: ↑30 и ↓19 +11
Комментарии 36

Математический подход к созданию сайтов

Время на прочтение 8 мин
Количество просмотров 64K
Разработка веб-сайтов *Математика *
Из песочницы
«Математика прекрасна». Это может показаться абсурдным, для людей которые при одном только упоминании математики вздрагивают. Однако некоторые из самых красивых вещей в природе и нашей Вселенной — это проецирование математических свойств, от самых маленьких до крупнейших галактик. Один из древних философов, Аристотель сказал: «математическим наукам свойственно выстраивать все по порядку, в симметрии и ограничениях, они являются главными формами прекрасного».

Из-за своей природной красоты, математика является частью искусства и архитектуры. Но она практически не применяется  для дизайна сайтов и приложений. Это наблюдается из-за того, что многие не сопоставляют математику с дизайном. Хотя, наоборот, математика может быть инструментом для производства, поистине волшебных конструкций. Тем не менее, вы не должны полагаться на математику для каждого своего творения. Дело в том, что вы должны рассматривать математику как вашего помощника. Для наглядности мы создали пару сайтов, которые представляют математические принципы, обсуждаемые в этой статье. Мы также создали рекомендации, которые можно использовать в дизайне.

Читать дальше →
Всего голосов 145: ↑107 и ↓38 +69
Комментарии 33

Последовательности в Perl 6 / Rakudo

Время на прочтение 3 мин
Количество просмотров 7.5K
Perl *Программирование *
Перевод
В Perl 6 введён новый оператор… для задания последовательностей. Вот как это работает:

my @even-numbers  := 0, 2 ... *;    # арифметическая последовательность
my @odd-numbers   := 1, 3 ... *;
my @powers-of-two := 1, 2, 4 ... *; # геометрическая последовательность

Пример использования:

> my @powers-of-two := 1, 2, 4 ... *; 1;
1
> @powers-of-two[^10]
1 2 4 8 16 32 64 128 256 512

Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 7

5 способов вычисления чисел Фибоначчи: реализация и сравнение

Время на прочтение 5 мин
Количество просмотров 303K
Python *Алгоритмы *Математика *
Перевод

Введение


Программистам числа Фибоначчи должны уже поднадоесть. Примеры их вычисления используются везде. Всё от того, что эти числа предоставляют простейший пример рекурсии. А ещё они являются хорошим примером динамического программирования. Но надо ли вычислять их так в реальном проекте? Не надо. Ни рекурсия, ни динамическое программирование не являются идеальными вариантами. И не замкнутая формула, использующая числа с плавающей запятой. Сейчас я расскажу, как правильно. Но сначала пройдёмся по всем известным вариантам решения.

Код предназначен для Python 3, хотя должен идти и на Python 2.

Для начала – напомню определение:

Fn= Fn-1+ Fn-2

и F1= F2=1.
Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 19

Fibonacci Clock: часы и головоломка

Время на прочтение 2 мин
Количество просмотров 25K
Гаджеты Краудсорсинг DIY или Сделай сам Логические игры


Часы Фибоначчи, вот как они рекламируются на Кикстартере: «Первые в своём роде. Хакабельные. Эксцентричные. Элегантные. Под управлением Arduino. Предлагаются как DIY-набор для сборки или полностью в сборе».

Ну, а если говорить человеческим языком, то суть часов в следующем. Чтобы узнать время, вам нужно решить небольшую головоломку. Она основана на последовательности Фибоначчи, которая известна любителям математики и фанатам сериала Lost.
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 10

Решение задачи о приближении иррациональных

Время на прочтение 23 мин
Количество просмотров 16K
Занимательные задачки Программирование *Математика *
В данной статье рассматриваются различные методы приближений иррациональных чисел. Попутно затрагиваются вопросы, косвенно связанные с темой приближений, такие как решение квадратных уравнений и построения геометрических фигур.



В сборнике Арнольда есть следующая задача

38. Вычислить сумму:

$\frac{ 1 }{ 1\cdot2 } + \frac{ 1 }{ 2\cdot3 } + \frac{ 1 }{ 3\cdot4 } + ... + \frac{ 1 }{ 99\cdot100 }$


(с ошибкой не более 1% от ответа)

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

#lang racket
(define series_sum
 ( lambda (n)
  (if (= n 0) 0 
    (+ (/ 1 (* n (+ n 1))) (series_sum(- n 1)))
  ) ) )
(series_sum 10)
(series_sum 100)
(series_sum 1000)
(series_sum 10000)
(series_sum 100000)
(series_sum 1000000)

(define series_sum_1
 ( lambda (n)
  (if (= n 0) 0 
    (+ (/ 1.0 (* n (+ n 1.0))) (series_sum_1(- n 1.0)))
  ) ) )
(series_sum_1 10)
(series_sum_1 100)
(series_sum_1 1000)
(series_sum_1 10000)
(series_sum_1 100000)
(series_sum_1 1000000)

Читать дальше →
Всего голосов 24: ↑18 и ↓6 +12
Комментарии 26

Равномерное распределение точек на сфере

Время на прочтение 8 мин
Количество просмотров 19K
Работа с 3D-графикой *Алгоритмы *Математика *
Перевод
Как можно более равномерное распределение точек на сфере — невероятно важная задача в математике, науке и компьютерных системах, а наложение сетки Фибоначчи на поверхность сферы при помощи равновеликой проекции — чрезвычайно быстрый и эффективный метод аппроксимации для её решения. Я покажу, как благодаря незначительным изменениям его можно сделать ещё лучше.


Какое-то время назад этот пост появился на главной странице Hacker News. Его обсуждение можно прочитать здесь.

Введение


Задача равномерного распределения точек на сфере имеет очень долгую историю. Это одна из самых хорошо исследованных задач в математической литературе по сферической геометрии. Она имеет критическую важность во многих областях математики, физики, химии, в том числе в вычислительных методах, теории приближений, теории кодирования, кристаллографии, электростатике, компьютерной графике, морфологии вирусов и многих других.

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

  • Упаковка и покрытие
  • Выпуклые оболочки, ячейки Вороного и треугольники Делоне
  • Ядра $s$-энергии Риса
  • Кубатура и определители

Очень важно уяснить этот аспект: обычно не существует единственного оптимального решения этой задачи, потому что оптимальное решение, основанное на одном критерии, часто не является оптимальным распределением точек для других. Например, мы также выясним, что оптимизация упаковки необязательно создаёт оптимальную выпуклую оболочку и наоборот.

Ради краткости в этом посте мы рассмотрим только два критерия: минимальное расстояние упаковки и выпуклую оболочку/сетку Делоне (объём и площадь).
Читать дальше →
Всего голосов 48: ↑48 и ↓0 +48
Комментарии 29

Повышаем эффективность распределения точек на сфере

Время на прочтение 9 мин
Количество просмотров 5.8K
Работа с 3D-графикой *Алгоритмы *Математика *
Перевод
Наложение решётки Фибоначчи (она же золотая спираль или сфера Фибоначчи) на поверхность сферы — чрезвычайно быстрый и эффективный приближенный метод равномерного распределения точек на сфере. Я продемонстрирую, как небольшие изменения, внесённые в каноническую реализацию, могут привести к значительным улучшениям показателей ближайших соседей.


Рисунок 1. Небольшая модификация канонической решётки Фибоначчи может привести к улучшению расстояния упаковки (максимального расстояния между ближайшими соседями) на 8,3%.
Читать дальше →
Всего голосов 21: ↑21 и ↓0 +21
Комментарии 7

Запрограммировано ли старение? Разбираем доказательства

Время на прочтение 9 мин
Количество просмотров 13K
Математика *Биотехнологии
✏️ Технотекст 2021

Гипотеза о том, что старение запрограммировано весьма популярна среди обывателей, но имеет довольно мало сторонников среди ученых-геронтологов. При этом данная гипотеза кажется весьма логичной, на первый взгляд. Откуда такое расхождение? Может быть, ученые просто находятся в плену своих предубеждений и когнитивных ошибок, не давая зеленый свет смелой гипотезе?

Читать далее
Всего голосов 18: ↑17 и ↓1 +16
Комментарии 96

Как я посчитал миллионное число Фибоначчи

Время на прочтение 6 мин
Количество просмотров 15K
Блог компании SkillFactory Занимательные задачки Python *Математика *
Перевод

Все мы понимаем, что рекурсивное вычисление чисел Фибоначчи крайне неэффективно. Многим людям наверняка хотелось проверить, где пределы (не)эффективности, но не доходили руки, не хватало времени. Специально к старту нового потока курса Fullstack-разработчик на Python мы решили поделиться переводом статьи, автор которой шаг за шагом показывает возможности современного Python на примере разных подходов к вычислению чисел Фибоначчи. В статье вы найдёте проблемные значения n и сравнение производительности оптимального и неоптимального решений на графике.

Читать далее
Всего голосов 29: ↑15 и ↓14 +1
Комментарии 34

N-e число обобщённых Фибоначчи за O(log N)

Время на прочтение 2 мин
Количество просмотров 4K
Python *Алгоритмы *Математика *
Из песочницы

В курсовой работе потребовалось написать алгоритм с логарифмической сложностью, который будет находить N-е число из последовательности Фибоначчи.

Читать далее
Всего голосов 9: ↑6 и ↓3 +3
Комментарии 16