В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
Fiascobratan228
Fiascobratan228
26.07.2022 09:35 •  Информатика

Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно ближайшему целому для ϕn/√5, где ϕ=(1+√5)/2 – золотое сечение. Проверьте её для значения F77 (должно получиться fibBinet(77) = 5527939700884757).

Ответ:
89112897334artem1131
89112897334artem1131
15.10.2020 19:55

Формула Бине:

Fn = \frac{(\frac{1 + \sqrt{5}}{2})^{n} - (\frac{1 - \sqrt{5}}{2})^{n}}{\sqrt{5}}

При работе с типом double имеет место быть некоторая погрешность. При больших числах относительная погрешность стремится к 0.

Код:

#include <iostream>#include <cmath>#define sqrt5 sqrt(5)#define   (1 + sqrt5)/2#define n (1 - sqrt5)/2long long fibBinet(int n) {    return (long long) round((pow(, n) - pow(n, n)) / sqrt5);}int main() {    long long binet77 = fibBinet(77);    std::cout << "fibBinet(77) = " << binet77 << " (5527939700884757)" << std::endl;    std::cout << "A = " << abs(5527939700884757ll - binet77) << std::endl;    std::cout << "B = " << 5527939700884757ll / binet77 << std::endl;    return 0;}
Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно
Напишите функцию fibBinet(n), которая будет вычислять Fn по формуле Бине, согласно которой Fn равно
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?