ИТЕРАЦИОННЫЕ ЦИКЛЫ
Большое место среди циклов с неизвестным числом повторений занимают циклы, когда в процессе повторения тела цикла образуются последовательность значений сходятся к некоторому пределу , т.е. . Каждое новое значение в такой последовательности определяется с учетом предыдущего и является по сравнению с ним более точным приближением к некоторому результату (пределу) . Циклы, реализующие такую последовательность приближений (итерации), называют итерационными. В итерационных циклах условие продолжения цикла основывается на свойстве безграничного приближения значения к пределу, а при увеличении . Итерационный цикл заканчивают, то есть результат отождествляют со значением , считается, что , если для некоторого значения выполняется условие: , где – допустимая погрешность вычисления результата. Типичным примером итерационного цикла может служить задача вычисления суммы бесконечного ряда. Понятие суммы связано с понятием сходимости бесконечного ряда. Бесконечный ряд значений называется сходящимся, если сумма его первых слагаемых при беспредельном возрастании стремится к некоторому пределу , который и называется суммой ряда, т.е. , . Общий член сходящегося ряда при этом стремится к нулю, т.е. , . Следовательно, последовательность является искомой последовательностью значений и определяет следующие условие окончания суммирования: или . Пример 14. Вычислить с погрешностью значение функции , используя разложение косинуса в ряд: , где . Аналогично вычислению конечной суммы в данном случае необходимо, во-первых, определить значение очередного слагаемого , во-вторых, осуществлять накопление суммы по итерационной формуле: . Для определения в данном примере из-за наличия факториала целесообразно использовать не прямое вычисление по общей формуле, а рекурентное соотношение: Подставим в формулу для вместо величину : Определим сомножитель : . Т.к. , то . Начальное значение находится подстановкой в формулу для . Т.к. надобности в запоминании значений всех слагаемых и промежуточных сумм нет, то в программе использованы простые переменные: – очередное значение суммы ряда; – очередное значение члена ряда; – очередное значение сомножителя . Алгоритм решения задачи выглядит следующим образом:
PROGRAM PR14; VAR n: INTEGER; eps, s, t, f, x, y: REAL; BEGIN READ (x, eps); s:= 0; t:= 1; n:= 1; WHILE ABS(t)>eps DO BEGIN s:= s+t; f:= -SQR(x)/(2*n*(2*n-1)); t:= t*f; n:= n+1; END; y:= COS(x); WRITELN (’s=’,s,’y=’,y); END. Для проверки полученного результата осуществляется вызов стандартной функции COS(x), значение которой присваивается переменной . Для организации цикла по накоплению суммы используется оператор цикла с предусловием, в котором условие является условием продолжения цикла. Нужно отметить, то что, общий член ряда проверять с погрешностью можно только в том случае, если предел стремится к нулю, в противном случае условием окончания цикла должна быть разность предыдущего и последующего значения суммы, сравниваемая с . Итерационный цикл используется для решения алгебраических и нелинейных уравнений. Нахождение корня уравнения вида осуществляется в два этапа. На первом этапе – этапе локализации корня – определяется отрезок , в пределах которого находится один и только один корень уравнения. Одним из способов локализации корня (корней) является построение грубого графика функции и определение на этом графике отрезка содержащего только один корень. На втором этапе – этапе уточнения корня - ведется поиск корня с заданной степенью точности при помощи некоторого итерационного алгоритма. Наиболее простым методом уточнения корня является метод итераций, заключающийся в следующем: исходное уравнение , где непрерывная функция на отрезке , заменяют эквивалентным уравнением вида и, зная начальное приближение корня каждое следующее, находят по формуле: . Вычисления повторяют до тех пор, пока не выполнится условие , где – заданная погрешность вычислений. Пример 15. Определить корень уравнения c погрешностью , при начальном значении корня . Преобразуем исходное уравнение следующим образом: , тогда ; . Для определения удобно использовать следующие графические построения: построить графики функций . Точки пересечения этих графиков будут корнями исходного уравнения . На графике выделить приближенные отрезки локализации каждого корня. В качестве можно взять любую точку отрезка. Алгоритм уточнения корня по методу итераций:
PROGRAM PR15; VAR eps, x, x0: REAL; BEGIN READ (eps,x0); WRITELN (’исходные данные’); WRITELN (’ eps=’,eps, ’x0=’, x0); x:=x0; WHILE ABS(x-SIN(x)/COS(x))>eps DO BEGIN x:= SIN(x)/COS(x); WRITELN (’ x=’,x); END; END. Пример 16. Вычислить интеграл по формуле прямоугольников: , где – шаг интегрирования; – начальное значение интервала интегрирования; – конечное значение интервала интегрирования; – текущее значение ; – подынтегральная функция.
PROGRAM PR16; VAR a, b, e: REAL; h, y, y0, fa, fb: REAL; n, i: INTEGER; BEGIN WRITELN (’ введите a,b,n,e); READ (a, b, n, e); y:= 0; REPEAT y0:= y; n:= n*2; fa:= a*a*a/(SQR(SQR(a))+1); fb:= b*b*b/(SQR(SQR(b))+1); y:= (fa+fb)/2; h:= (b-a)/n; FOR i:=1 TO n-1 DO BEGIN x:= a+i*h; y:= y+x*x*x/(SQR(SQR(x))+1); END; y:= y*h; UNTIL ABS (y-y0)<=e; WRITELN (y); END.
|