Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Информатике.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.45 Mб
Скачать

Итерационные циклы

Это циклы с неизвестным числом повторений. Для определения момента окончания цикла выбирается какая-либо переменная (или выражение), значение которой при каждом прохождении цикла постепенно приближается к известной величине. («Итерация» - приближение). Значение переменной сравнивается с известной величиной, и выход из цикла происходит, когда значение переменной достигает указанной величины.

Итерационные ВП являются основой большинства методов вычислений с заданной точностью.

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

Вычисление суммы ряда с использованием рекуррентной формулы

Задача. Вычислить значение функции у = ех с погрешностью вычисления = 0,001 при заданном значении х = 0,5.

Функцию у = ех можно представить в виде суммы бесконечно сходящегося ряда (разложить в ряд):

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

Вычислим сумму ряда S, учитывая члены ряда, по модулю большие величины погрешности , а остальные члены отбросим.

Обозначим:

n – текущий номер члена ряда;

аnn –ый член ряда.

n –ый член ряда вычисляется по формуле . Эта формула неудобна тем, что содержит вычисление факториала n!, а это целая самостоятельная задача. В данном случае для упрощения вычислений будем использовать рекуррентную формулу (возвратную), позволяющую вычислять каждый член ряда путем умножения предыдущего члена на рекуррентный множитель, т.е. . Знаем, что и .

Вычислим М:

- рекуррентная формула для вычисления n-го члена ряда, т.е. при

n = 1 – 1-го члена а1

n = 2 – 2-го члена а2 и т.д.

Введем переменные: у – сумма ряда;

n – номер члена ряда;

а – величина члена ряда.

Анализируем формулу ряда для задания начальных значений переменных:

  1. при n = 1 получим 1-ый член , тогда начальное значение n = 1;

  2. первое слагаемое ряда «1» ни при каких значениях n не получим, тогда у = 1;

  3. вычислим а0 для вычисления а1 = а0х и очевидно, что для получения по рекуррентной формуле а1 = х, следует выбрать а0 = 1, тогда а1 = 1  х = х.

Рассмотрим два варианта организации цикла.

а). Программный код (Do While …)

Private Sub btnCalculate_Click( ) [Calculate – вычислять]

Dim y as Single, x as Single, e as Single, Y as Single

Dim a as Single, n as Integer

x=Val (TxtX.text)

e=Val (Txte.text)

y=1

n=1

a=1

a=a+x/n ‘вычисление 1-го члена ряда

Do While abs(a) > = e ‘цикл с проверкой точности вычисления

y=y+a

n=n+1

a=a*x/n

Loop

TxtY.text = Cstr(y)

Txtn.text = Cstr(n)

Txta.text = Cstr(a)

TxtY1.text = exp(x) [txtY1.text=Cstr(exp(x))

End Sub

Блок-схема алгоритма вычисления суммы ряда

б) Блок-схема вычисления суммы ряда (if)

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

Private Sub btnCalculate_Click( )

Dim …

y = 1

x = 0.5

n = 1

a = 1

M:

a = a*x/n

if abs(a) > = e then

y = y + a

n = n + 1

goto M

end if

Form1. Print “y=”;y

Form1. Print

Form1. Print “a=”;a, “n=”; n

Print “Y1=”; exp(x)

End Sub

Вычисление суммы ряда с использованием формулы накопления степени

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

при n = 1 рекуррентная формула дает а1 = 0, что исключает дальнейшие вычисления. В этом случае члены ряда следует вычислять по формуле , где b x, т.е. b вычисляется накоплением х.

Начальное значение b = 1

и т.д.

Зададим начальные значения переменных: n = 1, b = 1, y = 0.

Блок-схема алгоритма

Вычисление суммы ряда с вычислением факториала

Можно вычислять факториал при вычислении каждого ряда, используя формулу накапливания факториала как произведения f = f n.

Например,

Здесь члены ряда целесообразно вычислять по формуле , где f = f n.

Начальное значение f = 1.

9.4. Вычисление суммы знакопеременного ряда

Рассмотрим ряд .

Знак членов ряда чередуется – знакопеременный ряд. Модуль члена ряда an вычисляется по формуле n-го ряда без учета знака, т.е. . Для формирования знака члена ряда используется вспомогательная переменная с, которая принимает значение +1 или –1. Начальное значение с выбирается, исходя из знака 1-го члена ряда, для данного ряда начальное значение с = 1. В конце цикла при подготовке к его повторению знак переменной с меняется на противоположный: с = -с. Умножение модуля текущего члена ряда на с приводит к чередованию знака у членов ряда. S – сумма ряда.

Private Sub btnCalculate_Click( )

Dim x as Single, y as Single, Y as Single

Dim e as Single, n as Integer

Dim c as Integer, a as Single, S as Single

x=Val (TxtX.text)

e=Val (Txte.text)

S=0

n=1

c=1

M:

A=c*sin(n*x)/n

If abs(a) > = e then

y=S+a

n=n+1

c = -c

goto M

else

Form1. Print “S=”; S, “a=”; a, “n=”; n

Print “y=” x/2

End if

End Sub

Блок-схеме алгоритма