Mloop 21

Задача

Вычислить с точностью [latex]\varepsilon [/latex] сумму ряда [latex]\sum _{i=1}^{\infty }{\frac{i}{fib(i)}}[/latex]

Входные данные

Точность [latex]\varepsilon [/latex].

Выходные данные

Сумма ряда.

Тесты

Точность [latex]\varepsilon [/latex] Сумма ряда Количество членов
1 1 3 2
2 0.5 8.502 8
3 0.1 9.156 12
4 0.01 9.307  18

Код

 

Решение

Предлагаю следующее решение. Вычисляем первые два члена суммы:[latex]\sum _{i=1}^{2}{\frac{i}{fib(i)}}=1+\frac{1}{2}[/latex]. Каждое следующее слагаемое  находим по формуле [latex]\frac{i}{fib(i)}[/latex] и записываем в переменную [latex]a[/latex], которую прибавляем к переменной [latex]sum[/latex], где хранится сумма, известная нам на данный момент (изначально это сумма первых двух членов) . [latex]fib_1[/latex]  и [latex]fib_2[/latex] это два последних числа Фибоначчи, которые нам нужны для вычисления  следующего [latex]fib_3[/latex]. Продолжаем искать слагаемые пока следующее слагаемое больше точности [latex]\varepsilon [/latex]. Вводим дополнительную переменную [latex]k[/latex] для того чтоб сосчитать количество слагаемых. Затем можно проверить правильность вычислений тут, подставляя [latex]k[/latex]  как количество слагаемых.

Ссылка на код.

3 thoughts on “Mloop 21

  1. Поздновато Вы взялись за октябрьские задания…
    Результат неверный.
    Тест явная подделка. Вы просто указали, что считает Ваша программа, а не то, что должно быть.
    Тесты нужно просчитать самому или при помощи какого-либо математического пакета. Например, так.

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

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

    С точки зрения элементарного программирования меня всё устраивает. Работу зачёл.