Вычисление бесконечных сумм с заданной точностью

Лабораторная работа 5.

Оглавление

1. Вычисление конечных сумм и произведений. 2

2. Использование рекуррентных соотношений. 2

3. Вычисление бесконечных сумм с заданной точностью.. 3

4. Задания. Вычисление сумм и произведений. 4

5. Задания. Использование рекуррентных формул. 5

6. Задания. Вычисление бесконечных сумм.. 9

7. Практикум.. 13

Вычисление конечных сумм и произведений

Вычисление конечных сумм и произведений - это наиболее часто встречающийся тип элементарных задач (см. также лабораторную работу 1). Пусть требуется вычислить сумму вида

Вычисление бесконечных сумм с заданной точностью - student2.ru

Для вычисления суммы можно применить следующий алгоритм:

//Инициализация переменных. Подготовительные вычисления. . .s=0;for(int k=1; k<=n; k++){ //Вычислить текущий член суммы ak … s+=ak;}

Если при вычислении текущего слагаемого ak (внутри цикла) выполняются операции, не зависящие от k, эти вычисления целесообразно вынести из цикла for() и выполнить их один раз перед циклом. Например, пусть требуется вычислить сумму вида

Вычисление бесконечных сумм с заданной точностью - student2.ru

Соответствующий код может быть следующим:

//Инициализация переменных. Подготовительные вычисленияdouble ak=0, sx=Math.Sin(Math.PI*x);s=0;for(int k=1; k<=n; k++){ //Вычислить текущий член суммы ak ak=sx/(k*k); s+=ak;}

Использование рекуррентных соотношений

Вернемся к задаче из лабораторной работы 1. Пусть требуется вычислить сумму вида

Вычисление бесконечных сумм с заданной точностью - student2.ru

Здесь вычисление текущего члена суммы можно значительно упростить (и уменьшить количество операций), если для вычисления текущего слагаемого построить и использовать рекуррентную формулу вида

Вычисление бесконечных сумм с заданной точностью - student2.ru

Такую формулу можно получить следующим образом. Выпишем сначала выражения для к-го и к+1-го слагаемого

Вычисление бесконечных сумм с заданной точностью - student2.ru

Поделив к+1-е слагаемое на к-е слагаемое, получим рекуррентную формулу

Вычисление бесконечных сумм с заданной точностью - student2.ru

Причем при k=0 имеем

Вычисление бесконечных сумм с заданной точностью - student2.ru

алгоритм вычисления суммы с использованием рекуррентной формулы можно записать в виде

//Инициализация переменных. Подготовительные вычисления//Предполагается, что значения переменных x и n определены ранее//ak первоначально полагаем равным a0double ak=x, dx=x*x;S=ak;for(int k=1; k<=n; k++){ //Вычислить текущий член суммы ak, используя рекуррентную формулу ak*=-dx/(2*k+2)/(2*k+3); S+=ak;}

Вычисление бесконечных сумм с заданной точностью

Пусть теперь требуется вычислить сумму вида

Вычисление бесконечных сумм с заданной точностью - student2.ru

с заданной точностью e>0 (некоторое малое число). Под этим подразумевается, что очередные слагаемые ak нужно добавлять к текущему значению s(x), пока они достаточно большие по модулю, т.е. удовлетворяют условию

|ak|>e

Поскольку в этом случае число слагаемых заранее неизвестно, для суммирования можно использовать циклы типа while() или do-while(). Предыдущий алгоритм суммирования модифицируется следующим образом

//Инициализация переменных. Подготовительные вычисления//Предполагается, что значения переменных x, n и точность eps//определены ранее//ak первоначально полагаем равным a0 double ak=x, dx=x*x;int k=0;S=0;While(Math.Abs(ak)>eps){ S+=ak; //Вычислить следующий член суммы ak, используя рекуррентную формулу k++; ak*=-dx/(2*k+2)/(2*k+3);}

Наши рекомендации