-
Вычисление суммы ряда с использованием рекуррентного соотношения
Вычисление
суммы ряда по общей формуле, рассмотренное
в предыдущем разделе, безусловно,
является общим способом решения подобных
задач. Но иногда процесс вычислений
можно существенно упростить, построив
рекуррентное соотношение для вычисления
очередного слагаемого. В этом случае
каждое слагаемое вычисляется как
некоторая функция, зависящая от одного
или нескольких предыдущих членов ряда.
Построим рекуррентное соотношение для
следующего ряда.
, где
Сначала запишем формулы для слагаемых
с номерами nиn— 1.
Вычислим отношение .
Таким образом, мы получили, что
Отсюда можно легко получить рекуррентное
соотношение для вычисления очередного
слагаемого.
В этой формуле sn– очередное
слагаемое,sn-1– предыдущее
слагаемое,x– точка, в которой
вычисляется сумма ряда,n– номер
очередного слагаемого.
Используя
полученную рекуррентную формулу, найдем
сумму ряда в некоторой заранее заданной
точке xс определенной точностью
ε. Так же как и предыдущем случае,
исходными данными будут значениеxи необходимая точность вычислений ε.
Для ввода исходных данных будем
использовать функциюInputBox.
Результатом программы является значение
накопленной суммы. Но для проверки
правильности вычислений мы будем еще
выводить значение левой части выражения,
номер и значение последнего слагаемого,
вошедшего в сумму. Для вывода результатов
будем использовать окно списка с именемlstA.
Для
решения этой задачи нам потребуется
организовать цикл с условием. На каждом
шаге цикла мы будем по рекуррентной
формуле вычислять значение очередного
слагаемого и прибавлять его к общей
сумме. Как только очередное слагаемое
станет меньше заданной точности, мы
закончим выполнение цикла.
Рассмотрим
особенности программной реализации
этого алгоритма. Для решения задачи нам
потребуются следующие переменные: x– точка, в которой вычисляется сумма
ряда,eps– требуемая точность вычислений,summa– искомая сумма ряда,slag– очередное слагаемое. Все эти переменные
имеют рациональный тип данных. Для
повышения точности наших вычислений
будем использовать типDouble.
Dim x, summa, slag, eps As Double
Так как рекуррентная формула зависит
от номера очередного слагаемого, то для
его хранения заведем переменную n.
Dim n As Integer
Очищаем окно списка.
lstA.Items.Clear()
Вводим исходные данные.
x = Val(InputBox(«Введите
точку»))
eps = Val(InputBox(«Введите
точность»))
Задаем начальные значения переменных.
Номер первого слагаемого равен единице.
n = 1
По формуле ряда определяем первое
слагаемое.
slag = x
Итоговую сумму полагаем равной первому
слагаемому.
summa = slag
Организуем основной цикл.
Do
На каждом шаге мы вычисляем очередное
слагаемое. При этом его номер будет на
единицу больше, чем на предыдущем шаге.
n += 1
Используя рекуррентное соотношение,
вычисляем очередное слагаемое.
slag = -slag * x ^ 2 / ((2 * n
— 2) * (2 * n — 1))
И добавляем его к итоговой сумме.
summa += slag
Проверяем, если модуль слагаемого меньше
заданной точности, то дальнейшие
вычисления не приведут к заметным
изменениям результата, и выполнение
цикла можно завершить.
Loop Until Math.Abs(slag) <=
eps
Выводим в окно списка полученную сумму,
значение выражения, стоящего в левой
части равенства, номер и значение
последнего слагаемого.
lstA.Items.Add(«summa=»
+ Str(summa))
lstA.Items.Add(«sin(x)=»
+ Str(Math.Sin(x)))
lstA.Items.Add(«n=» +
Str(n))
lstA.Items.Add(«Последнее
слагаемое =» + Str(slag))
Полный
текст программы представлен в приложении
18. Пример работы программы приведен на
рис. 32. Исходные данные для этого случая:
x = 1,eps = 1e-4
= 10-4.
Рис. 32.Пример работы программы
вычисления суммы ряда с использованием
рекуррентного соотношения
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
0 / 0 / 0 Регистрация: 16.12.2021 Сообщений: 7 |
|
1 |
|
Как вывести рекуррентную формулу и посчитать сумму членов ряда?18.01.2022, 19:55. Показов 2316. Ответов 12
исходные данные 0,15 . Точность вычисления 10^-3 Миниатюры
0 |
Royal_X 1130 / 781 / 308 Регистрация: 01.06.2021 Сообщений: 2,950 |
||||
18.01.2022, 20:21 |
2 |
|||
0 |
Байт Диссидент 27472 / 17160 / 3783 Регистрация: 24.12.2010 Сообщений: 38,662 |
||||
19.01.2022, 12:31 |
3 |
|||
1 |
Модератор 35427 / 19452 / 4071 Регистрация: 12.02.2012 Сообщений: 32,486 Записей в блоге: 13 |
|
19.01.2022, 17:28 |
4 |
РешениеПоскольку: то Тогда: Это и есть искомая рекуррентная формула
2 |
Yetty 7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
||||
19.01.2022, 19:56 |
5 |
|||
opin, в формуле общего члена ряда ошибка, в знаменателе должен быть + Royal_X, результат Вашего кода 0.00111994 — проверьте код opin,
результат:
как вывести рекуррентную формулу в этой задаче нет смысла вычислять рекуррентную формулу (это приведёт к сложным вычислениям), достаточно рекуррентно находить числитель
0 |
Модератор 35427 / 19452 / 4071 Регистрация: 12.02.2012 Сообщений: 32,486 Записей в блоге: 13 |
|
19.01.2022, 21:14 |
6 |
это приведёт к сложным вычислениям — не сказал бы. См пост #4 Но если не минус, а плюс, то да, выгоды особой нет
0 |
1130 / 781 / 308 Регистрация: 01.06.2021 Сообщений: 2,950 |
|
20.01.2022, 01:12 |
7 |
результат Вашего кода 0.00111994 — проверьте код В моем коде ошибки нет (подтверждается Wolfram Mathematica), результат такой, какой и должен быть для ряда, написанного ТС.
в формуле общего члена ряда ошибка, в знаменателе должен быть + Как вы пришли к выводу, что там ошибка?
0 |
7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
|
20.01.2022, 06:49 |
8 |
Как вы пришли к выводу, что там ошибка? подставьте в формулу общего члена ряда n=1, n=2 получаются слагаемые сравните с рядом, который привёл ТС теоретически ещё есть возможность что допущены 2 ошибки в этих знаменателях, но предполагаю что опечатка одна в формуле общего члена ряда
не сказал бы. См пост #4 не могу с Вами согласиться. Вы уже произвели целый ряд вычислений, даже не приступив к написанию кода. кроме того если использовать выведенную Вами формулу добавятся дополнительные вычисления на каждой итерации цикла.
0 |
1130 / 781 / 308 Регистрация: 01.06.2021 Сообщений: 2,950 |
|
20.01.2022, 09:40 |
9 |
Yetty, я писал код на основе общей формулы, а не анализировал и делал какие-то выводы на основе первых двух слагаемых. Почему вы так уверены, что ошибка в общей формуле? А если как раз формула точна, но ошибка в первых двух слагаемых?
0 |
7427 / 5021 / 2891 Регистрация: 18.12.2017 Сообщений: 15,694 |
|
20.01.2022, 15:11 |
10 |
Почему вы так уверены, что ошибка в общей формуле? на этот вопрос я уже ответил:
теоретически ещё есть возможность что допущены 2 ошибки в этих знаменателях, но предполагаю что опечатка одна в формуле общего члена ряда вероятность одной опечатки выше чем вероятность двух опечаток. Вы согласны, что имеется опечатка(и) в записи ряда ? при ответе на вопрос ТС ничего не упомянули про опечатку в формуле, кроме того не вижу у Вас в коде рекуррентности (если не заметил, поправьте) — а в этом (рекуррентности) собственно и состоял вопрос
0 |
1130 / 781 / 308 Регистрация: 01.06.2021 Сообщений: 2,950 |
|
20.01.2022, 15:55 |
11 |
Yetty, если я сделал бы по слагаемым, а не по формуле, то тогда вы бы сказали, что ошибка в слагаемых, а не в формуле
1 |
Модератор 4635 / 2658 / 1429 Регистрация: 14.12.2018 Сообщений: 4,946 Записей в блоге: 1 |
|
20.01.2022, 15:56 |
12 |
Лучший вариант для этого топика: нужно уточнить задачу у ТСа.
0 |
4023 / 3280 / 920 Регистрация: 25.03.2012 Сообщений: 12,263 Записей в блоге: 1 |
|
20.01.2022, 16:35 |
13 |
Боже, ну и консилиум…
0 |
Числовая последовательность
- Формулы числовых последовательностей
- Задание последовательностей описанием
- Рекуррентные формулы числовых последовательностей
- Свойства числовых последовательностей
- Примеры
п.1. Формулы числовых последовательностей
Запишем несколько первых чётных чисел и пронумеруем их:
2n
2
4
6
8
10
12
14
16
18
Этот ряд бесконечен, но, глядя на таблицу, его легко задать формулой: begin{gather*} mathrm{y_n = 2n, n in mathbb{N}} end{gather*}
Теперь, пользуясь формулой, для любого порядкового номера n мы сможем найти соответствующее чётное число.
Функцию натурального аргумента (mathrm{y_n=f(n), ninmathbb{N}}) называют числовой последовательностью.
Значения y1, y2, …, yn,… называют членами последовательности.
В символе yn число n называют индексом последовательности.
Для обозначения членов последовательности и их индексов можно использовать разные буквы: x1, x2, …, xm,…; a1, a2, …, ak,…; A1, A2, …, As,… и т.д.
Числовую последовательность как частный случай функции можно задавать аналитически (формулой), описанием (словесно), рекуррентно, графически и т.д.
Первые три способа используются чаще других.
Например:
Найти 1й, 3й и 4й члены последовательности, заданной формулой (mathrm{y_n=frac{n-1}{n+1}}) $$ mathrm{ y_1=frac{1-1}{1+1}=0, y_3=frac{3-1}{3+1}=frac12, y_4=frac{4-1}{4+1}=frac35 } $$
п.2. Задание последовательностей описанием
Последовательность, заданную формулой yn=2n, можно задать описанием как «последовательность чётных чисел».
Последовательность, заданную формулой (mathrm{y_n=frac{n-1}{n+1}}), можно задать описанием как «последовательность дробей, числитель которых на 1 меньше индекса, а знаменатель на 1 больше индекса последовательности».
Кроме того, существуют такие последовательности, которые можно задать только описанием.
Например:
1. Последовательность простых чисел:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, …
2. Последовательность десятичных приближений числа (mathrm{sqrt{3}}) по недостатку:
1; 1,7; 1,73; 1,732; 1,7320; 1,73205; 1,7302050; 1,73020508,…
п.3. Рекуррентные формулы числовых последовательностей
Важнейшим классом числовых последовательностей, которые широко используются в алгоритмах вычислительной математики, являются рекуррентные отношения (от латинского слова recurrere – возвращаться).
Рекуррентной формулой называют правило, по которому можно найти n-й член последовательности, если известны значения её предыдущих членов.
Например:
Найти y5, если y1 = 1, yn = 2yn-1 + 1
Проводим последовательные вычисления:
y2 = 2y1 + 1 = 3, y3 = 2y2 + 1 = 7, y4 = 2y3 + 1 = 15, y5 = 2y4 + 1 = 31
Интересно, что, если присмотреться, эту последовательность можно также задать аналитически: yn = 2n – 1.
п.4. Свойства числовых последовательностей
Числовую последовательность называют возрастающей, если каждый её член, начиная со второго, больше предыдущего:
y1 < y2 < y3 < … < yn < …
Например:
Последовательность квадратов натуральных чисел yn = n2 возрастающая:
1 < 4 < 9 < … < n2 < …
Числовую последовательность называют убывающей, если каждый её член, начиная со второго, меньше предыдущего:
y1 > y2 > y3 > … > yn > …
Например:
Последовательность дробей с индексом в знаменателе (mathrm{y_n=frac1n}) – убывающая: $$ 1gtfrac12gtfrac13gt…gtfrac1ngt… $$
Числовую последовательность называют ограниченной сверху, если существует такое число M, что для любого члена последовательности выполняется неравенство
yn ≤ M
Например:
Последовательность отрицательных дробей с индексом в знаменателе (mathrm{y_n=-frac1n}) ограничена сверху числом M = 0: $$ -1lt 0, -frac12lt 0, -frac13lt 0,.., -frac1nlt 0, … $$
Числовую последовательность называют ограниченной снизу, если существует такое число M, что для любого члена последовательности выполняется неравенство
yn ≥ M
Например:
Последовательность дробей с индексом в знаменателе (mathrm{y_n=frac1n}) ограничена снизу числом M = 0: $$ -1gt 0, frac12gt 0, frac13gt 0,.., frac1ngt 0, … $$
Числовую последовательность называют ограниченной, если она ограничена сверху и снизу, т.е. существуют такие числа M и K, что для любого члена последовательности выполняется неравенство
M ≤ yn ≤ K или M ≥ yn ≥ K
Например:
Последовательность дробей с индексом в знаменателе (mathrm{y_n=frac1n}) ограничена: $$ 1gt frac12gt frac13gt … gt frac1ngt … gt 0 $$ Верхней границей является M = 1, нижней границей K = 0.
Числовую последовательность называют стационарной, если для любого члена последовательности выполняется равенство
yn = C
где C — некоторое число.
Например:
Последовательность (mathrm{y_1=1, y_n=y^2_{n-1} — 4y_{n-1}+4}) стационарна, т.к. begin{gather*} mathrm{ y_2=1-4+4=1, y_3=1-4+4=1,…}\ mathrm{ y_n=1, forall nin mathbb{N}} end{gather*}
п.5. Примеры
Пример 1. Найдите первые 4 члена последовательности, заданной формулой
a) (mathrm{y_n=frac{n^2+1}{2n-1}})
yn
$$ mathrm{ frac{1^2+1}{2-1}=2 } $$
$$ mathrm{ frac{2^2+1}{4-1}=frac53=1frac23 } $$
$$ mathrm{ frac{3^2+1}{6-1}=2 } $$
$$ mathrm{ frac{4^2+1}{8-1}=frac{17}{7}=2frac37 } $$
б) (mathrm{y_n=frac{2^n}{n^2}})
yn
$$ mathrm{ frac{2^1}{1^2}=2 } $$
$$ mathrm{ frac{2^2}{2^2}=1 } $$
$$ mathrm{ frac{2^3}{3^2}=frac89 } $$
$$ mathrm{ frac{2^4}{4^2}=1 } $$
Пример 2. Найдите первые 4 члена последовательности, заданной рекуррентной формулой
a) y1 = 3, yn = 3yn – 1
yn
3
3 · 3 – 1 = 8
3 · 8 – 1 = 23
3 · 23 – 1 = 68
б) y1 = 1, y2 = 2, yn = 2yn-1 + yn-2
yn
1
2
2 · 2 + 1 = 5
2 · 5 + 2 = 12
Пример 3*. Укажите какую-либо формулу для n-го члена числовой последовательности
а) 3, 5, 7, 9, …
Это – последовательность нечётных чисел, для которой:
yn = 2n + 1
б) 5, -5, 5, -5,…
Это – знакопеременная последовательность, для которой модуль всегда равен 5, а знак меняется. Изменение знака можно записать как степень (–1). Учитывая, что нечётные члены последовательности положительные, а чётные – отрицательные, получаем:
yn = (–1)n+1 · 5
в) (mathrm{frac{1}{1cdot 2}, frac{1}{2cdot 3}, frac{1}{3cdot 4},…})
Это – последовательность дробей, у которых в знаменателе произведение текущего индекса n на следующий индекс (n + 1):
(mathrm{y_n=frac{1}{n(n+1)}})
г) 2, 5, 10, 17, 26, 37, …
Заметим, что
5 — 2 = 3, 10 — 5 = 5, 17 — 10 = 7, 26 — 17 = 9, …
Каждый последующий член отличается от предыдущего на возрастающее нечётное число. Можем записать рекуррентную формулу:
y1 = 2, yn = yn-1 + (2n –1)
Пример 4*. Пифагор изучал последовательность «треугольных» чисел, которые можно задать следующими геометрическими фигурами:
и т.д.
Задайте эту последовательность 1) рекуррентной формулой; 2) аналитической формулой.
1) Запишем последовательность в явном виде, как это следует из чертежа: $$ mathrm{ y_1=1, y_2=underbrace{1}_{y_1}+2=3, y_3=underbrace{1+2}_{y_2}+3=6, y_4=underbrace{1+2+3}_{y_3}+4=10 } $$ Отсюда получаем следующую рекуррентную формулу: y1 = 1, yn = yn-1 + n
2) Для произвольного члена последовательности:
yn = 1 + 2 + 3 + … + (n — 2) + (n — 1) + n
Найдём эту сумму. Для этого запишем выражение наоборот:
yn = n + (n — 1) + (n — 2) + … + 3 + 2 + 1
И найдём сумму: begin{gather*} mathrm{ y_n+y_n=2y_n=(1+2+3+…+(n-2)+(n-1)+n)+ }\ mathrm{ +(n+(n-1)+(n-2)+…+3+2+1)= }\ mathrm{ =(1+n)+underbrace{(2+n-1)}_{=n+1}+ underbrace{3+n-2}_{=n+1}+…+underbrace{n-2+3}_{=n+1}+underbrace{n-1+2}_{=n+1}+(n+1)= }\ mathrm{ =n(n+1) } end{gather*} Получаем: (mathrm{2y_n=n(n+1)Rightarrow y_n=frac{n(n+1)}{2}}) – искомая аналитическая формула.
Ответ: 1) y1 = 1, yn = yn-1 + 2; 2) (mathrm{y_n=frac{n(n+1)}{2}})
Понятия не имею, что за смешанный способ вам нужен, но сумму этого ряда можно найти два раза взяв производную.
Пусть f(x)
— ваш ряд. Тогда f'(x) = sum (-1)^n x^(2n-2) / (2n+1)
Чтобы совсем избавиться от знаменателя надо бы, чтобы степень была 2n+1. Можно этого добиться, домножив все на x^3
. Потом можно опять взять производную.
(x^3 f'(x))’ = sum (-1)^n x^2n = sum (-x^2)^n = 1/(1+x^2)
Теперь назад проинтегрировав это можно получить:
x^3 f'(x) = arctg(x)+C
При x=0 слева 0 — значит C=0.
f'(x) = arctg(x) / x^3
Отсюда можно найти f'(x)
: Зайдите на wolframalpha и введите integrate arctg(x)/x^3 dx
(не могу дать прямую ссылку с запросом на wolfram, потому что мат-фильтр почему-то срабатывает на ссылку и не дает отправить ответ).
Чтобы найти константу, придется подставить, например, x=1 и найти сумму ряда a_n = (-1)^n/(4N^2-1)
. Это какой-то известный сходящийся рад, похоже. Опять, посмотрите на wolframalpha, введите там sum (-1)^n/(4*n^2-1), n=0 to infinity
. В итоге получится, что там константа тоже 0.
Вот и получится, что f(x) =- (x^2 * arctan(x) + arctan(x) + x) / (2x^2)