Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_лекций.doc
Скачиваний:
18
Добавлен:
26.04.2019
Размер:
1.11 Mб
Скачать

6.9.4. Оператор цикла for downto

Синтаксис оператора:

FOR Iсчет := Iнач DOWNTO Iкон DO Опер ;

Отличие этого оператора от предыдущего только в том, что в процессе циклических вычислений значения счетчика цикла последовательно уменьшаются на единицу, начиная с большего Iнач до меньшего Iкон.

Пример: результат выполнения предыдущей программы не изменится, если использовать следующий оператор цикла

for ii:=N downto 1 do

6.9.5. Оператор цикла while

Синтаксис оператора:

WHILE Условие DO Оператор;

While - ключевое слово, за которым обязательно следует один или несколько пробелов: символов - разделителей,ref0001a.doc

Условие логическое выражение, за которым также следует разделитель – пробел (пробелы),

DO – служебное слово-разделитель (избыточный синтаксис языка Pascal), за которым рекомендуется писать разделитель-пробел,

Оператор – любой исполнимый оператор, или последовательность операторов заключенная в операторные скобки Begin End.

Пример:

aa:=5; while aa<200 do aa:=aa*3;

Звуковая транскрипция: повторяй выполнение оператора, указанного после слова DO, до тех пор, пока результат сравнения aa<200 имеет логическую оценку TRUE!

Пояснение примера: в результате вычислений, которые будут повторены четыре раза, переменная «аа» будет последовательно принимать значения: 15, 45, 135 и 405 – итоговый результат.

Типичные ошибки при использовании

циклических операторов.

  1. Преждевременное завершение описания:

оператор for i:=1 to 100 do; ничего не делает 100 раз, т.к. за словом-разделителем DO поставлен символ конца предложения.

2. Значение переменной-счетчика цикла принудительно и неразумно изменяется внутри тела цикла. Оператор for i:=1 to 5 do i:=3; будет выполняться не пять раз, а вечно, т.к. автоматическое увеличение счетчика повторений i перекрывается командой принудительного присвоения этой переменной числа три.

3. Переменные, входящие в логическое условие оператора WHILE, не изменяются внутри тела цикла, либо изменяются не верно. Например, следующий цикл

aa:=3; while aa<200 do begin a:=6; aa:=a*3 end;

будет выполняться вечно.

6.9.6. Программа вычисления длины дуги кривой

Опр. Кривой на плоскости называется множество геометрических точек, координаты которых (x,y) связаны непрерывной функциональной зависимостью.

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

Варианты задания (формального описания) дуг.

  1. Явная функциональная зависимость одной декартовой координаты от другой: y=f(x) для x [xa,x b] (1)

или x=f(y) для y [ya, yb]

  1. Явная функциональная зависимость одной полярной координаты от другой: r=f() для  [a, b] (2)

или =f(r) для r [ra, rb],

например: r=(+5)2 или =Ln(r+1) (3)

Переход от полярных к декартовым координатам реализуется формулами: x=r Cos() y=r Sin(). Для приведенных примеров:

x=(+5)2 Cos() x=r Cos(Ln(r+1) ) (4)

y=(+5)2 Sin() y=r Sin(Ln(r+1) )

  1. Параметрическая зависимость декартовых координат

x=f(t)

y=(t) для свободного параметра t [ta, tb], (5)

Примерами могут служить формулы (4), где свободным параметром являются и r .

  1. Параметрическая зависимость полярных координат

r=f(t)

=(t) для свободного параметра t [ta, tb], (6)

например:

r=t et

=t+Lnt для t [0.1, 2.07], (7)

которую можно преобразовать к декартовой параметрической форме

x=t et Cos(t+Ln t)

y=tet Sin(t+Ln t) для t [0.1, 2.07]. (8)

О пр. Длиной непрерывной дуги называется предел длины вписанной в нее ломаной линии, когда количество звеньев (образующих отрезков) ломаной неограниченно увеличивается, а длина наибольшего звена стремиться к нулю (см. рис.1).

Рис.1. Геометрически построения, поясняющие алгоритм вычисления

длины дуги кривой заданной в декартовых координатах.

В приведенном определении длины кривой использовано абстрактная (математическая) операция предельного перехода, которая в реальных вычислениях, даже с помощью ЭВМ, является нереализуемой. Следовательно: все математические объекты, порождаемые операцией предельного перехода, для их обработки (вычисления) средствами ЭВМ должны быть заменены некими аналогами, т.е. упрощенными описаниями (моделями).

Опр. Оцифровкой математического объекта (МО) называется упрощенное описание МО в виде конечного, упорядоченного набора однотипных информационных объектов (чисел, отрезков, вычислимых функций и т.п.).

Диалектика: качественное свойство МО подменяется большим количеством упорядоченных простых элементов.

Вопросы точности соответствия МО и его цифровой модели рассматриваются в специальном разделе математики «Численные методы».

Оцифровка дуги кривой основана на введении системы упорядоченных точек {(x1, y1), (x2,y2), .., (xi, yi),... (xn,yn)} (от начала к концу дуги), которые принадлежат кривой и последовательно соединены прямолинейными отрезками. Длина дуги кривой оценивается величиной Sn равной сумме длин этих отрезков:. Длина отрезка от точки (xi, yi) до (xi+1, yi+1) вычисляется как гипотенуза соответствующего прямоугольного треугольника (на рис.1 это треугольник СYiYi+1), т.е

n-1

Sn= ∑ (xi+1–xi)2 + (f(xi+1)–f(xi))2

i=1

Пример: вычислить длину дуги кривой y=xSin(x2+5)+x для a≤x≤b.

Для удобства вычислений, область определения обычно разбивается равномерной сеткой из N узлов: xi=a+∆x(i-1), где i=1,2,...n и ∆x=(b-a)/(n-1)

Исходными данными для программы являются величины: a, b, N.

Program DUGA;

Var a, b, S, dx, y1, y2, x1, x2: real; i, N: integer;

Begin

a:=1; b:=3; N:=10; {Программное, т.е. реализуемое операторами прямого

присвоения соответствующих констант, задание

исходных данных }

dx:=(b-a)/(N-1); {вычисление шага сетки узлов по Х }

s:=0; {очистка (обнуление содержимого) переменной S, в которой

будет накапливаться сумма длин отрезков }

for i:=1 to N-1 do {цикл перебора всех отрезков ломаной i-номер левой

точки обрабатываемого отрезка}

begin

x1:=a+dx*(i-1); y1:=x1*Sin(x1*x1+5)+x1; {x1 y1 – декартовые

координаты левого конца отрезка }

x2:=x1+dx; y2:=x2*Sin(x2*x2+5)+x2; {x2 y2 – декартовые

координаты правого конца отрезка }

s:=s+Sqrt(sqr(y2-y1)+dx*dx); {добавляем к S длину отрезка}

end;

writeln(N:5,' s=',s); {печать результата}

End.

Для оценки точности определения искомой длины дуги, воспользуемся приемом «Численного эксперимента», который широко применяется в инженерной практике и сводится к проведению серии вычислений одной и той же характеристики при разных значениях параметров влияющих на погрешность расчетов. В нашем случае этим параметром является количество узлов сетки N.

Результаты численных экспериментов для пяти значений параметра N при a=1 и b=3:

10 s= 1.17746052767470E+0001

40 s= 1.24628784903471E+0001

80 s= 1.24765592828335E+0001

320 s= 1.24807045137568E+0001

640 s= 1.24809088294569E+0001

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