В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Ф
Физика
Э
Экономика
М
Математика
Г
География
И
Информатика
Ф
Французский язык
М
МХК
О
Окружающий мир
Н
Немецкий язык
П
Психология
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
А
Английский язык
Б
Биология
Қ
Қазақ т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
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?