Перед выполнением данной работы необходимо изучить содержимое пункта “ Нахождение суммы ряда ”
Нахождение суммы ряда
Для заданных значений и вычислить сумму ряда
, где .
с точностью . Суммирование ряда завершить, если модуль очередного члена ряда не превосходит . Предусмотреть ограничение количества слагаемых ряда – если их количество превосходит максимально допустимое, выдать сообщение 'Требуемая точность вычислений не достигнута'.
Форма будет иметь следующий вид (рис. 14):
Рис.14
При анализе данной задачи необходимо отметить, что каждый новый член ряда должен быть получен, опираясь на предыдущий или его часть. Рассмотрим соотношение элементов . В рассматриваемой задаче для , соответственно . Отсюда . Далее важно определиться с начальным значением (в нашем случае ) и проследить, чтобы порядок накопления суммы и значения счетчика ряда менялись в нужной последовательности. Чтобы осознать значимость следования операторов, попробуйте поменять в теле цикла местоположение оператора i:= i+1 - “поднимите” его в начало тела цикла, сразу после слова begin. Выполнив фрагмент программы пошагово, вы убедитесь, что общий член ряда будет видоизменен – уже при вы получите вместо необходимого .
Фрагмент кода:
{***********************************************************}
procedureTfrm_Z3.btnOKClick(Sender: TObject);
var sum, x, eps, a, mnog : extended;
i, m_dop: Word;
begin
// Присвоение значенийx, eps, m_dop
i:= 0; {количество членов ряда}
a:= x; { a - первый член ряда }
Sum:= a; { Sum - первая частичная сумма ряда }
while (abs(a) > eps) and (i<=m_dop) do
begin
mnog:= -x*x/(2*i+2)/(2*i+3);
a:= a*mnog;
Sum:= Sum+a;
i:= i+1;
end;
// вывод результатов в поле mem_Result в зависимости от накопленного переменной i значения m_dop
{***********************************************************}
Но для случая рядов, в которых в общем виде члена ряда нет рекуррентных выражений (например, факториала или возведения в степень), использование соотношения должно быть иным. Рассмотрим в качестве примера ряд В нем . Т.о., если , то при . Но при вычислении следующего ( ) члена ряда происходит умножение и деление на одно и то же число, в данном случае 3. Поэтому целесообразно включить в рекуррентно накапливаемое очередное значение члена ряда лишь числитель. Соответствующий фрагмент кода может выглядеть так:
…
mnog:= -x*x;
while (abs(a) >eps) and (i<=m_dop) do
begin
a:= a*mnog;
Sum:= Sum+a/(2*i+1);
i:= i+1;
end;
Лабораторная работа №3
Вычисление суммы ряда
Перед выполнением данной работы необходимо изучить содержимое пункта “ Нахождение суммы ряда ”.
Задание. Для заданных значений и вычислить сумму ряда с точностью . Суммирование ряда завершить, если модуль очередного члена ряда не превосходит . Предусмотреть
· ввод значений только из указанного диапазона;
· ограничение количества слагаемых ряда;
· в случае, когда требуемая точность не достигнута, вывести соответствующее сообщение.
Значение параметра , входящего в некоторые варианты, предоставить для ввода пользователю.
Выдать пользователю значение накопленной суммы ряда, значение функции и количество просуммированных членов ряда.
При разработке дизайна формы ориентироваться на рассмотренный в примере образец.
1. , .
2. , .
3. , .
4. , . .
5. , . .
6. ,
, .
7. ,
, .
8. , .
9. , .
10. , .
11. , .
12. , .
13. , .
14. , .
15. , .
16. , .
17. , .
18. , .
19. , .
20. , .
21. , .
22. , .
23. , .
24. , .
25. , .
26. , .
27. , .
28. , .
29. , .
30. , .