D2549. Сумма ряда

Условие задачи:
Найти сумму сходящегося ряда:
[latex]\frac{1}{1 \cdot 2} + \frac{1}{2 \cdot 3} + \frac{1}{3 \cdot 4} + … + \frac{1}{n(n + 1)} + …[/latex]

Входные данные:
Целое число [latex]n[/latex] — номер искомой частичной суммы.

Выходные данные:
Искомая частичная сумма.

Тесты:

Вход Выход
1 1 0.5
2 500 0.998004
3 100000 0.999965

Код на языке C++ (первый вариант):

Код на языке Java (первый вариант):

Код на языке C++ (второй вариант):

Код на языке Java (второй вариант):

Решения:
Вариант первый (решение с циклом): Зададим цикл с счетчиком [latex]i[/latex] от 1 до заданного пользователем числа [latex]n.[/latex] Именно такое количество необходимых слагаемых [latex]\frac{1}{n(n + 1)}[/latex] будет найдено на каждом шаге цикла для последующего суммирования и нахождения искомой частичной суммы.

Вариант второй (решение без цикла): Ряд сводится к ряду: [latex](1 — \frac{1}{2}) + (\frac{1}{2} — \frac{1}{3}) + … + (\frac{1}{n} — \frac{1}{n + 1})[/latex]. От сюда имеем: [latex]1 — \frac{1}{n + 1}.[/latex]

Ссылки:
Условие задачи (стр.248).
Первый вариант C++ .
Первый вариант Java .
Второй вариант C++ .
Второй вариант Java .

D2630. Сходимость ряда

Задача
Исследовать сходимость ряда [latex]\sum_{n=1}^{\infty}\frac{ln(n!)}{n^{a}}[/latex] и вычислить его сумму при заданной точности.

Входные данные
Натуральное число [latex]a[/latex]

Выходные данные
Сумма ряда если она существует.

Тесты

входящие данные выходящие данные
2 -nan
3 0.578615
6 0.0146958
12 0.000172786
22 1.65259e-07

Решение задачи
Исследуем ряд на сходимость при различных значениях переменных [latex]a[/latex]. При [latex]a\leq 1[/latex] случай тривиальный — ряд будет расходиться.
Рассчитаем его при [latex]a\geq 2[/latex]. Как видно при [latex]a=2[/latex] ряд продолжает расходиться, а при [latex]a>2[/latex] он начинает сходиться и становиться возможным вычислить его сумму.

Ссылки
Условие задачи (стр. 257)
Код на ideone

D2550. Сумма ряда

Условие задачи:
Найти сумму сходящегося ряда:
[latex]\frac{1}{1 \cdot 4} + \frac{1}{4 \cdot 7} + … + \frac{1}{(3n — 2)(3n + 1)} + …[/latex]

Входные данные:
Целое число [latex]k[/latex] — номер искомой частичной суммы.

Выходные данные:
Искомая частичная сумма.

Тесты

Входные данные Выходные данные
1
1 0.25
2
234 0.3328591749644379
3
10000 0.33332222259257893

Код на языке C++:

Код на языке Java:

Решение задачи:
Используем цикл for от 1 до заданного пользователем [latex]k[/latex] номера частичной суммы, в котором будем суммировать слагаемые ряда вида: [latex]\frac{1}{(3n — 2)(3n + 1)},[/latex] где [latex]n = \overline{1,k}[/latex].

Условие задачи (стр.248)
Код задачи на C++: Ideone
Код задачи на Java: Ideone

D2580. Сходимость ряда

Задача. Пользуясь признаками сравнения, Даламбера или Коши, исследовать сходимость ряда: [latex]\frac{1!}{1}+\frac{2!}{2^2}+\frac{3!}{3^3}+\ldots+\frac{n!}{n^n}+\ldots[/latex]

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

[latex]n[/latex] — количество взятых членов ряда.

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

[latex]sum[/latex] — сумма.

Тесты

Входные данные Выходные данные
1 Сумма: 1
Числитель: 1
Знаменатель: 1
3 Сумма: 1.72222
Числитель: 6
Знаменатель: 9
20 Сумма: 1.87985
Числитель: 2.4329e+18
Знаменатель: 5.24288e+24

Код на C++

Код на Java

Решение

Используем цикл [latex]for[/latex]: высчитываем [latex]i[/latex]-тый слагаемый, и добавляем его в сумму. В цикле высчитываем числитель, добавляем в сумму [latex]i[/latex]-тый слагаемый и домножаем числитель [latex]i[/latex]-того слагаемого на значение счётчика.
Воспользуемся веб-приложением и посчитаем сумму ряда.

Ссылки

Условие задачи (стр.251)
Решение задачи на сайте Ideone.com (C++)
Решение задачи на сайте Ideone.com (Java)
Сходимости ряда

MLoop19

Условие задачи

Вычислите с заданной точностью [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.

 

Код программы

Код программы на сайте ideone.

MLoop 20

Задача. Вычислите с точностью [latex]\varepsilon[/latex] сумму ряда [latex]\sum_{i=1}^{\infty}{\frac{i}{3^i}}[/latex].

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

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

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

Вывести значение суммы ряда.

Также условие задачи можно посмотреть здесь.

Тестирование

Входные данные Выходные данные
1. 0.1 0.666667
2. 0.01 0.736626
3. 0.001 0.749276
4. 0.0001 0.749903
5. 0.0000001 0.75

Реализация (первый вариант кода)

Реализация (второй вариант кода)

Алгоритм решения

  1. Выводим формулу для вычисления значения каждого последующего члена ряда: [latex]a_{n+1}=a_n\cdot \frac{i+1}{3^{i+1}}\cdot \frac{3^i}{i}=a_n\cdot \frac{i+1}{3i}[/latex].
  2. Вычисляем значение первого члена ряда: [latex]a[/latex]: [latex]a=\frac{i}{3^i}=\frac{1}{3}[/latex].
  3. Присваиваем [latex]sum[/latex] значение первого члена ряда.
  4. Абсолютное значение каждого последующего члена ряда сравниваем с [latex]\varepsilon[/latex]: при условии, что [latex]|a_{n+1}|\geq\varepsilon[/latex], накапливается сумма (значение суммы увеличивается на очередной член ряда [latex]a_{n+1}[/latex]). Если же [latex]|a_{n+1}|<\varepsilon[/latex], выводится значение суммы ряда.

Для запроса на выполнение следует перейти по ссылке (первый вариант кода).

Для запроса на выполнение следует перейти по ссылке (второй вариант кода).