Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
31.03.2015
Размер:
199.68 Кб
Скачать

38

  1. Приемы и методы программирования

    1. Итерационные методы

Итерация  результат многократного выполнения какого-либо действия. Итерационные процессы лежат в основе метода последовательных приближений, который дает приближенное решение математических задач. На каждом шаге итерации получается решение более близкое к точному, чем на предыдущем шаге. Применяется метод в том случае, если точное решение задачи получить невозможно.

Постановка задачи

Пусть S0, S1, … , Sn, … - последовательность, которая сходится к пределу S.

Требуется вычислить приближенно S с точностью .

Математический метод

Задаем начальное значение S0 = <нач>.

Вычисляем Si для i =1,2,… до Si - Si-1 < .

Алгоритм

С точки зрения программы, переменная – это поименованная область памяти, которая хранит значение определенного типа.

Snew:=<нач>

повторить

Sold :=Snew

до  Snew - Sold <

Для поиска предела S достаточно хранить только два элемента последовательности: текущее значение Si , которое вычисляем (обозначим его через Snew) и предыдущее значение Si-1 (обозначим его через Sold). При переходе к следующему элементу Sold заменяется на Snew.

Вычислить Snew

7.2. Вычисление функции разложением в ряд

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

, где - k-й член ряда, k = 1, 2, …

Частичной суммой ряда называется сумма k его членов:

где k = 1, 2,……

Р

яд сходится на отрезке [p, q] к функции f(x), если стремится к f(x) при k стремящемся к бесконечности для p x q.

Необходимым условием сходимости является стремление члена ряда

к нулю, когда k стремится к бесконечности для p x q.

Если ограничиться k членами ряда, то погрешность вычисления будет равна

Использовать эти формулы для оценки погрешности  мы не можем, так как с одной стороны, невозможно вычислить f(x) по предположению, а с другой стороны, невозможно просуммировать бесконечное число членов ряда. Поэтому в дальнейшем, при приближенном вычислении суммы ряда с заданной точностью мы будем допускать, что точность вычисления равна первому отбрасываемому члену, считая

.

Для знакопеременных рядов, в которых знаки членов ряда чередуются, такое допущение о точности является верным.

7.3. Рекуррентные формулы

Рассмотрим задачу суммирования степенных рядов, члены которых можно выразить через степень аргумента х и.

Пример 1.

Пример 2.

Для получения каждого k-го члена ряда требуется вычисление факториала : (2k-1)! (в примере 1) и k! (в примере 2), а также возведение аргумента х соответственно в степень: (2k-1)-ю и k-ю соответственно. С ростом k количество вычислений возрастает.

Количество вычислений можно значительно сократить, если обратить внимание на то, каждый член ряда можно не вычислять заново, а использовать результаты вычисления предыдущего члена.

Так , для приведенных примеров при переходе от (k-1)-го и k-му члену ряда в происходит накопление факториала умножением на k (в примере 1) и на (2k-1) (в примере 2), и накопление степени аргумента х умножением на х*х (в примере 1) и на х (в примере 2).

Поэтому для экономии вычислений используем рекуррентную формулу, которая выражает каждый член ряда через предыдущий.

Рассмотрим два способа получения рекуррентной формулы.

Способ 1

Для примера 1 рекуррентная формула может быть получена в виде:

ak = ak-1 (x,k)

Для того, чтобы найти (x,k) , делим k-й член на (k-1)-й:

, , k = 2, 3, …

Способ 2

В примере 2 рекуррентная формула не может быть получена способом 1, то есть в виде простого деления k-го члена от (k-1)-го. В этом случае из члена ряда выделяются части, для которых можно применить рекуррентную формулу. Это те части, где происходит накопление результата:

  • аргументная часть, обозначим эту часть через R1;

  • факториал, обозначим эту часть через R2.

Алгоритм имеет вид:

R1 = 1

R2 = 1

R1 = R1  x

R2 = R2  k 

a k = R1  (1/k +1/R2) 

Подготовка начальных значений

для вычисления a1

Повторение для k = 1, 2, 3 …

Соседние файлы в папке ПРАКТИКУМ-1--5