Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное-пособие2011.doc
Скачиваний:
17
Добавлен:
09.04.2015
Размер:
579.07 Кб
Скачать

Циклы с неизвестным числом повторений

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

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

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

Пример 15.

Вычислить значение sin x по формуле

SinX =

Блок – схема алгоритма определения максимального и минимального значения функции

Рис.26

Пример программы:

remвычислениеmax,minфункции

inputХн,Xк, х

max=-1010

min=1010

for x= Хн to Xк step x

y=F(x)

print x,y

if y>=max then max=y

if y<=min then min=y

next x

print max,min

end

В операторе y=F(x) в правой части уравнения должно быть записано арифметическое выражение (по условию задачи).

Общая формула члена ряда гдеn– номер члена ряда n

Вычисления продолжать до тех пор пока >E, это условие и есть условие выхода из цикла, где Е – точность вычислений.

При достаточно большом n возведение в степень занимает значительное машинное время . Поэтому каждый член ряда следует получать в соответствии с рекуррентным соотношением

R = Rx

Где n = 3,5,7……..; R начальное = х. Тогда рекуррентное соотношение для получения суммы ряда будет S = S+R (-1), где Sначальное= Х. Блок – схема алгоритма вычисления суммы ряда представлены на рисунке 27.

Вычисления ведутся до тех пор , пока величина члена ряда R не станет меньше , либо равной некоторой малой величине Е. Значение R с каждым циклом уменьшается. После выполнения цикла первый раз имеем

R =

S =

После выполнения цикла второй раз

R =

S =

И т.д.

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

Рис.27

Программа на Qbasicимеет вид:

input x,e

s=x

r=x

n=3

do while r>e

r=r*x2/((n-1)*n)*(-1)

s=s+r

n=n+2

loop

print s

end

Пример 16.

Для каждого значения Х [Xn,Xk] c шагомХ и для каждого У[Yn,Yk] с шагомУ определить:

если Z3,5

W =

Z + 0.7 tgz если Z <3,5

Определить наибольшее и наименьшее значения из всех вычисленных значений W и соответствующие ему значения Х и У.

Блок – схема алгоритма задачи представлена на рис. 28.

Блок 1– ввод исходных данных

Блок 2 – подготовка начальных значений переменных MAX и MIN.

Блоки 3 + 31 = внешний цикл , переменная цикла Х. Тело этого цикла составляют блоки 4+ 30.

Блоки 3, 4, 31 – определяют интервал изменения переменной Х.

Блоки 7-29 – тело внутреннего цикла , переменная цикла У.

Блоки – 5, 6, 30 – определяют интервал изменения переменной У.

Блоки 7+17 – определение значений переменной Z. Это два последовательно расположенных друг за другом цикла, в которых определяется последовательно значения слагаемых 51 и 52, входящих в формулу определения Z.

Блоки 19-25 – определение и печать значения W. Это разветвляющийся вычислительный процесс, одной из ветвей которого (блоки 19-23) является циклический процесс накопления произведения.

Блоки 26 - 29 – определяют наибольшее и наименьшее значения переменной W и ее координаты.

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

Блок – схема для решения задачи 16.

Программа для решения примера имеет вид:

remсложный цикл

inputn,m,l,Xн ,Xк ,dx,Yн ,Yк ,dy

max=-1010 : min=1010

for x= Xн to Xк step dx

for y= Yн to Yк step dy

s1=0

for i=1 to n

s1=S1+cos(x*y+i)

next i

s2=0

for k=1 to m

s2=S2+sin(x*y+k)

next k

z=S1+S2

if z>=3.5 then

w=1

for n=1 to l

w=W*z(n+2)

next n

else

w=z+0.7*tan(z)

end if

print w,x,y,z

if W>=max then

max=w

xmax=x

ymax=y

end if

if W<=min then

min=W

xmin=x

ymin=y

end if

next y

next x

print max, xmax, ymax

print min, Xmin, Ymin

end

44