Вопросы для проверки знаний.

Repeat

Repeat

Repeat

оператор 1;

оператор 2;

...

oператор n

until выражение

Группа операторов между словами repeat и until, составляющая тело цикла, повторяется до тех пор, пока логическое выражение, стоящее после служебного слова until, является ложным (False). Как только оно становится истинным (True), происходит выход из цикла. Так как выражение оценивается каждый раз после выполнения операторов, то в любом случае операторы выполнятся хотя бы один раз при входе в цикл. Блок-схема итерационного цикла с постусловием дана на рис.6.4.

Пример 2 применения итерационного цикла с постусловием для расчета суммы S первых членов гармонического ряда, удовлетворяющих условию 1/i ≤ 0,001:

S:=0;i:=0;

i:=i+1;

S:=S+1/i;

until 1/i>1E-3;

S:=S-1/i;

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

Пример 3.Написать программу вычисления с заданной точностью e приближенного значения квадратного корня из вещественного числа х по методу Ньютона, в котором используется сходящаяся к искомому корню итерационная расчетная последовательность {xn, n=0,1,…}, образующаяся по следующей расчетной схеме:

x0=x; (n=0);

xn= xn(xn-1) = 0,5(xn-1 + x/xn-1); (n≥1).

Условие завершения итерационного процесса: ½xn - xn-1½≤ e.

Для каждой расчетной итерации выдать на экран: ее номер, текущее значение корня xn и модуль разности ½xn - xn-1½. В конце расчетов выдать на экран результирующие значения этих же величин.

Решение. Задача представляет собой типичный пример итерационных расчетов, завершение которых при заданной расчетной схеме и начальных данных зависит только от выполнения условия окончания итерационного процесса. Обозначим в программе текущее значение xn искомого корня числа xчерез sqx. Поскольку текущее значение xn рассчитывается по предыдущему xn-1, то наряду с sqx введем обозначение sqx_pr для предыдущего значения искомого корня. Модуль разности ½xn - xn-1½ обозначим через delta. Число выполненных расчетных итераций обозначим через n.

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

Программа с подробными комментариями:

program SQRT_Newton;

uses Crt;{подключение библиотеки CRT для работы с экраном}

var x,eps,sqx,sqx_pr,delta:real;{описание вещественных переменных программы}

n:integer; {описание целочисленных переменных программы}

begin{начало раздела операторов}

ClrScr; { очистка экрана }

Write('vvedite chislo x:');{вывод запроса на ввод числа х}

ReadLn(x);{ввод числа х}

Write('vvedite tochnost rascheta kornia:');{вывод запроса на ввод точности расчета e}

ReadLn(eps);{ввод точности расчета e}

n:=0;{задание начального значения числа итераций}

sqx:=x;{задание начального значения аргумента x0=x; (n=0) }

n:=n+1; {расчет n номера очередной итерации}

sqx_pr:=sqx;{присвоение xn:= xn-1}

sqx:=0.5*(sqx_pr+x/sqx_pr); {расчет xn= xn(xn-1) }

delta:=abs(sqx_pr-sqx); {расчет модуля разности ½xn - xn-1½}

WriteLn('It.number=',n,’ sqx=’,sqx,’ delta=’,delta){вывод расчетных величин}

until delta<eps; {условие окончания цикла}

WriteLn('REZULT: n=',n,’ sqx=’,sqx,’ delta=’,delta) {вывод результатов расчета}

end.{конец раздела операторов и всей программы}

1. Какие циклы называют итерационными ?

2. При решении каких математических задач применяют алгоритмы на основе итерационных циклов ?

3. В чем заключается идея итерационного численного метода решения нелинейных уравнений ?

4. Чем отличаются итерационные циклы с предусловием от циклов с постусловием ? Какой из этих циклов выполняется всегда хотя бы один раз ?

5. В теле какого из итерационных циклов для выполнения группы операторов обязательно использование составного оператора ?

6. У какого из итерационных циклов тело выполняется при условии истинности выражения цикла, а у какого - при условии ложности выражения цикла ?

Практическое задание.

1. Написать операторы, решающие задание из п.6.1 при помощи итерационного цикла с предусловием.