Условие задачи
Вычислите с заданной точностью [latex]\varepsilon[/latex]сумму ряда [latex]\sum\limits_{i=1}^{\infty}{\frac{\sqrt{i+1}}{ie^i}} [/latex].
Задачу также можно найти здесь.
Тесты
№ | Точность [latex]\varepsilon[/latex] | Сумма ряда |
1 | 0.1 | 0.637464 |
2 | 0.001 | 0.685288 |
3 | 0.0001 | 0.685782 |
4 | 0.000001 | 0.685848 |
Алгоритм решения
Поскольку в данной задаче использование рекуррентной формулы приведет только к накоплению погрешности, будем считать каждое слагаемое суммы непосредственно, пока не достигнем заданной точности. Для этого зададим начальное значение переменной exponent = M_E для [latex]i=1[/latex] , а также для первого члена ряда а = sqrt(2)/ exponent. Тогда для каждого значения счетчика нам нужного всего лишь накапливать степень экспоненты и вычислять текущий член ряда по формуле [latex]\frac{\sqrt{i+1}}{i\cdot{e}^{i}} [/latex] , накапливая сумму, пока не достигнем заданной точности эпсилон.
Проверить правильность найденной суммы можно с помощью сайта WolframAlpha.
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <cmath> using namespace std; int main(){ double exponent = M_E, a = sqrt(2)/exponent, sum = 0, E; cin >> E; for (int i = 1; (a = sqrt(i+1)/(i * exponent)) >= E; i++){ exponent *= M_E; sum += a; } cout << sum; return 0; } |
Код программы на сайте ideone.
Для отправки комментария необходимо войти на сайт.