Здесь в блоке организации цикла используется специальная переменная, которая предназначена для определения условия останова цикла (i). Эта переменная называется параметром цикла. Блоки, следующие за заголовком цикла, составляют тело цикла. Тело цикла выполняется для всех значений параметра цикла i, начинающегося со значения m1и изменяющегося с шагом m3 до значения m2.
Циклическая структура, в которой число повторений цикла заранее неизвестно, а определяется только в процессе выполнения алгоритма,
называется итеративной циклической структурой. Важно, чтобы в условие выхода из цикла входила переменная, значение которой изменялось бы в теле цикла, иначе выполнение цикла будет бесконечным.
В зависимости от места расположения условия продолжения цикла
(или выхода из цикла) итеративные циклические алгоритмы подразделяются на два вида: с предусловием и с постусловием.
При организации цикла с предусловием (рис.1.2-6) условие выхода из цикла (или выполнения) предшествуют блокам тела цикла, и они выполняются только, если условие L принимает значение «Истина». Выход из цикла происходит при первом невыполнении этого условия. Таким образом, возможен случай, когда тело цикла не будет выполнено ни разу.
Рис. 1.2-6. Итеративная циклическая структура с предусловием
При организации циклов с постусловием, для которых условие выхода из цикла (или повторения тела цикла) проверяется после выполнения цикла (рис.1.2-7). То есть цикл всегда выполняется хотя бы один раз, независимо от значения L, и только после его выполнения принимается решение о продолжении выполнения цикла или выходе из него.
11
Рис.1.2-7. Итеративная циклическая структура с постусловием
В укрупненных схемах алгоритмов некоторые фрагменты алгоритмов могут быть заменены одним блоком. Простейшим примером такого укрупнения может служить ввод исходных данных, в частности ввод двумерного массива (рис.1.2-8).
(а) |
(б) |
Рис. 1.2-8. Ввод двумерного массива в укрупненном (а) и детализированном (б) алгоритмах
Из описанных выше базовых алгоритмических структур как из кирпичиков строятся алгоритмы для решения реальных вычислительных задач. В следующем разделе будут приведены вычислительные алгоритмы наиболее распространенных вычислительных методов, которые используются в учебном процессе при изучении вычислительных методов [3] и выполнении курсовых работ.
12
Решение нелинейного уравнения методом половинного деления с использованием процедуры, схема алгоритма которой представлена на рис. 2.1-1, требует дополнения процедуры-функции f(x), в которой вычисляется левая часть уравнения. Корень уравнения f(x)=0 должен быть предварительно отделен на отрезке [a;b].
Рис. 2.1-1. Алгоритм метода половинного деления Суть метода половинного деления [3]заключается в получении
последовательности вложенных друг в друга отрезков |
[a1;b1], [a2;b2], |
13 |
|
таких что f(ai).f(bi) 0, где i=1,2,…,n. При этом длина каждого последующего отрезка вдвое меньше длины предыдущего. Тогда последовательное сужение отрезка вокруг неизвестного значения корня ξнанекотором шаге nобеспечивает выполнение неравенства bn - an ,
которое и является условием выхода из цикла.Очевидно, |
что с точностью ε |
|||
любое x [an;bn ] может быть принято за |
приближенное |
значение корня. |
||
Обычно выбирают середину отрезка x |
a |
b |
. |
|
n |
n |
|
||
|
|
|
||
|
|
2 |
|
|
Алгоритм процедуры, реализующей решение нелинейного уравнения методом итераций, представлен на рис. 2.1-2. Его использование требует дополнения двух процедур-функций: fi(x)–итерирующая функция и f(x)– левая часть исходного уравнения.
Рис.2.1-3. Алгоритм метода итераций
14
Метод итераций предполагает замену уравнения f(x)=0 равносильным уравнением x= (x) [3].Функция (x) называется итерирующей функцией. Если корень уравнения отделен на отрезке [a;b], то исходя из начального приближения x0 [a;b], получают последовательность приближений к корню:
x1 = (x0), x2 = (x1), …, xn= (xn-1).
Условие сходимости метода итераций определяется теоремой:
Если все члены последовательности xn= (xn-1) [a;b]и существует такое q (0<q<1), что для всех х [a; b] выполняется условие | ’(x)| = q<1,то эта последовательность является сходящейся, а процесс итерации сходится к корню уравнения независимо от выбора начального приближения.
Алгоритм процедуры, |
реализующей |
решение нелинейного уравнения |
||||
методом |
Ньютона, |
представлен |
на |
рис. 2.1-3. Корень нелинейного |
||
уравнения |
f (x) 0 |
должен быть отделен на отрезке [a;b], причем первая и |
||||
|
||||||
вторая производные ( f |
|
|
непрерывны и знакопостоянны при х |
|||
( x) |
и f ( x) ) |
|||||
[a;b].
Использование алгоритма требует двух процедур-функций: f(x)–левая часть исходного уравнения и f1(x)– производная от f(x).
Все последующие приближения к корню получаются с использованием итерационной формулы [3]
x |
i 1 |
x |
n |
|
|
|
|
f ( x |
n |
) |
|
|
|
||
f ( x |
i |
) |
|
|
|
|
|
,
где i = 0, 1, …n-1.
|
В качестве |
|
начального приближения к корню выбирают точку |
||||||||||||
х0 [a;b], где |
f (x |
0 |
) |
|
f (x) 0 |
. |
|||||||||
|
|
|
|
|
|
|
|
|
|||||||
|
Процесс вычислений прекращается, если |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
xn 1 xn |
|
|
|
|
2m1 |
, |
|
|
|
|||||
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
M 2 |
|
|
|
|
|
||
|
где |
ε - заданная точность; |
|||||||||||||
|
m1 - |
наименьшее значение f '(x ) при x [a; b]; |
|||||||||||||
|
M2 - |
наибольшее значение f "(x ) при x [a; b]. |
|||||||||||||
|
Для оценки полгрешности также используются следующих выражений: |
||||||||||||||
|
|
|
|
x |
|
x |
|
|
f(x |
) |
, |
|
|||
|
|
|
|
|
|
|
n |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 1 |
|
|
|
n |
|
|
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
xn 1 xn
ε.
15