D2547. Cумма ряда

Антон Куперман
Антон Куперман

Latest posts by Антон Куперман (see all)

Задача

Доказать сходимость и найти сумму ряда [latex]\sum \limits_{n=1}^{\infty}\left(\frac{1}{2^n}+\frac{1}{3^n}\right)[/latex].

Код на C++

Код на Java

Решение

Разобьем ряд на два: [latex]\frac{1}{2^n}[/latex] и [latex]\frac{1}{3^n}[/latex]. Оба ряда являются бесконечно убывающими геометрическими прогрессиями, следовательно они сходятся и сумма этих рядов тоже будет сходиться. Знаменателем первой прогрессии([latex]s_1[/latex]) будет [latex]\frac{1}{2}[/latex], а знаменателем второй([latex]s_2[/latex]) — [latex]\frac{1}{3}[/latex]. Тогда по формуле суммы бесконечно убывающей прогрессии: [latex]s=\frac{b_1}{1-q}[/latex], где [latex]b_1[/latex] первый член прогрессии, а [latex]q[/latex] — ее знаменатель. Затем суммируем суммы прогрессий и получаем ответ.

Ответ

[latex]\sum \limits_{n=1}^{\infty}\left(\frac{1}{2^n}+\frac{1}{3^n}\right)=\frac{3}{2}=1.5[/latex].

Ссылки

1.Решение на C++

2.Решение на Java

3.Решение на WolframAlpha

 

MLoop 17

Задача

Вычислите с точностью [latex]\varepsilon[/latex] значение функции [latex]f\left( x \right) = \ln \left( 1-x^2 \right)[/latex] . При вычислениях допустимо использовать только арифметические операции.

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

В одной строке заданы значение переменной [latex]x[/latex] и точность вычислений [latex]\varepsilon[/latex].
[latex]\left | x \right |< 1[/latex]

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

Значение функции в точке [latex]x[/latex] .

Тесты

[latex]\varepsilon[/latex] [latex]x[/latex]  [latex]ln(1-x^2)[/latex] Результат
0.001 0.5 [latex]ln(0.75)[/latex] -0.287435
0.0001 0.5 [latex]ln(0.75)[/latex] -0.287671
0.01 0.1 [latex]ln(0.99)[/latex] -0.01005
0.001 -0.1 [latex]ln(0.99)[/latex] -0.01005
0.1 0 [latex]ln(1.00)[/latex] 0
0.01 0 [latex]ln(1.00)[/latex] 0

 

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

ideone.com

 

Решение

Функцию [latex]f\left( x \right) = \ln \left( 1-x^2 \right)[/latex] можно представить в виде:
[latex]ln\left ( 1-x^2 \right )= ln\left ( 1-x \right )\left ( 1+x \right ) = ln\left ( 1-x \right )+ln\left ( 1+x \right )[/latex] (по свойствам логарифма).

Для решения задачи необходимо воспользоваться формулой Тейлора  для натурального логарифма с опорной точкой [latex]x_{0}=0[/latex] (ряд Маклорена). Для функции [latex]ln\left (1+x\right )[/latex] она имеет следующий вид:

[latex]ln\left (1+x\right )=x-\frac{x^{2}}{2}+\frac{x^{3}}{3}-\cdots+\frac{\left ( -1 \right )^{n-1}}{n}x^{n}=\sum_{n=1}^{\infty}\frac{\left (-1\right )^{n-1}}{n}x^{n}[/latex]

Подставив в формулу [latex]-x[/latex] вместо [latex]x[/latex] , получим:

[latex]ln\left (1-x\right )=-x-\frac{x^{2}}{2}-\frac{x^{3}}{3}-\cdots -\frac{x^{n}}{n}=-\sum_{n=1}^{\infty}\frac{x^{n}}{n}[/latex]

Тогда,

[latex]ln\left (1+x\right )+ln\left (1-x\right )=\sum_{n=1}^{\infty}\frac{\left (-1\right )^{n-1}}{n}x^{n}-\sum_{n=1}^{\infty}\frac{x^{n}}{n}=[/latex] [latex]=\sum_{n=1}^{\infty }\left[\frac{\left (-1\right )^{n-1}}{n}x^{n}-\frac{x^{n}}{n}\right]=\sum_{n=1}^{\infty }\frac{x^{n}\left (\left (-1\right )^{n-1}-1\right )}{n}=[/latex][latex]=-x^{2}+0-\frac{x^{4}}{2}+0-\frac{x^{6}}{3}+0-\cdots[/latex]

Так как при нечетном [latex]n[/latex] члены данного ряда обращаются в ноль, его можно записать в виде:

[latex]-\sum_{0}^{\infty}\frac{x^{2n+2}}{n+1}=-x^{2}-\frac{x^{4}}{2}-\frac{x^{6}}{3}-\cdots-\frac{x^{2n+2}}{n+1}[/latex]

Далее необходимо найти рекуррентную формулу для членов данного ряда.

[latex]\frac{a_{n}}{a_{n-1}}=\frac{x^{2n+2}}{n+1}\cdot\frac{n-1+1}{x^{2\left ( n-1 \right )+2}}=\frac{x^{2}\cdot n }{n+1}[/latex]

Затем необходимо суммировать до тех пор пока очередное слагаемое не будет меньше заданной точности.

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.

А137а

Марченко Філіп Олександрович
Марченко Філіп Олександрович

Latest posts by Марченко Філіп Олександрович (see all)

 

Задача:  Даны натуральное число [latex]n[/latex] и действительные числа [latex]a_{1},\ldots,a_{n}[/latex].

Вычислить:

[latex]a_{1},a_{1}+a_{2},\ldots,a_{1}+a_{2}+\ldots+a_{n}[/latex].

Тесты: 

Кол-во элементов [latex]n[/latex] [latex]a_{1},a_{2},\ldots,a_{n}[/latex] result в каждой итерации
7 1, 2, 3, 4, 5, 6, 7 1, 3, 6, 10, 15, 21, 28
10 10, 12, 14, 16, 18, 20, 21, 23, 25, 27 10, 22, 36, 52, 70, 90, 111, 134, 159, 186
5 0.1, 0.2, 0.3, 0.4, 0.5 0.1, 0.3, 0.6, 1.0, 1.5
5 -1, -2, 3, 4, -5 -1, -3, 0, 4, -1

Код на С++: 

 

Код на Java:

 

Решение:  Для подсчёта суммы в данной задаче надо было организовать цикл for (поскольку указано количество элементов в ряду), и с каждой итерацией прибавлять к результату result (которому предварительно придано значение 0) введённое с клавиатуры значение, потом выводить результат на экран.

Для проверки правильности работы программы, воспользуйтесь ссылкой.

Ю3.38

Бровко Ілля
Бровко Ілля

Latest posts by Бровко Ілля (see all)

Задача

Численно убедиться в справедливости равенства, для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex] . Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] (слагаемых или сомножителей), необходимых для достижения заданной точности.

[latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|=\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex],

[latex]|x|<1[/latex].

x E Левая часть (left). Правая часть (right). Разность (right-left). n Комментарий.
0.6 0.000001 0.7624616521 0.7604912379 0.0019704142 3 Пройден.
0.75 0.000035 0.6446519276 0.6290694254 0.0155825022 3 Пройден
0.4 0.00002 0.9195412848 0.9143769743 0.0051643104 5 Пройден
4 0.0001 Некорректно задан аргумент x (|x|<1)Не пройден.
0.4 0 0.9195412848 0.9195412848 0.9195412848 бесконечность Погрешность равна 0, тогда правая часть стремится к левой.Пройден.

Необходимо доказать равенство левой и правой части при заданных [latex]x[/latex] и [latex]\varepsilon[/latex].

Мы высчитываем левую часть [latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|[/latex], с заданным аргументом [latex]x[/latex]. Затем в цикле do высчитываем значение правой части [latex]\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex], до тех пор, пока разность правой и левой части не превысит заданную погрешность [latex]\varepsilon[/latex]. После этого программа выводит значение левой и правой части, их разницу и количество итераций для заданной погрешности.

Ниже представлена сама программа (C++).

Код на Java:

 

Так же вы можете воспользоваться ссылкой (C++)/ссылкой (Java), для ознакомления с программой.

Ю3.16

Бровко Ілля
Бровко Ілля

Latest posts by Бровко Ілля (see all)

Задача

Сравнить скорость сходимости при вычислении числа [latex]e[/latex] с помощью ряда и бесконечной дроби:

[latex]e=2+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+…[/latex]; [latex]e=1+\frac{1}{1-\frac{1}{2+\frac{1}{3-\frac{1}{2+\frac{1}{5-…}}}}}[/latex]

У нас дан ряд(row) и бесконечная дробь(inf). Для разложения числа  [latex]e[/latex] в ряд использована функция вычисления факториала. Задаем начальные переменные и вычисляем основание натурального логарифма. При достижении заданной точности [latex]E[/latex] цикл вычислений ряда прекращается, и начинается вычисление по методу цепной дроби с заданным в первой части программы количеством итераций (для корректного сравнения скорости сходимости, количество итераций должно быть одинаково).

Алгоритм вычисления представляет собой цикл, в который вложен еще один рекурсивный цикл. Первый цикл do подставляет во второй цикл количество итераций. Во втором цикле for происходит основное вычисление цепной дроби, посредством проверки четных и нечетных шагов. Проверка на четность происходит делением текущей по счету итерации  на 2 с остатком. Если делится без остатка, то итерация четная, иначе- нечетная.

E

Количество итераций ряда(row)

i

Количество итераций цепной дроби(inf)l Комментарий
0.00001 9 7

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.0000002 11 9

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.00078 7 6

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

0.0004 7 6

Бесконечная дробь быстрее сходится к числу е, чем ряд.

Тест пройден.

При схождении к числу [latex]e[/latex] с точностью [latex]E[/latex] цепная дробь будет  делать это быстрее, чем ряд.

Ниже представлена сама программа(C++).

Код на Java:

 

Также вы можете воспользоватся ссылкой (C++)/ссылкой (Java), для ознакомления с программой.