Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB.doc
Скачиваний:
23
Добавлен:
12.11.2018
Размер:
2.66 Mб
Скачать
        1. Использование рекуррентной формулы для вычисления суммы ряда

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

Как правило, в этом случае рекуррентная формула имеет вид: , откуда, зная общий член последовательности, можно будет найти коэффициент c, на который нужно умножать каждый предыдущий член последовательности, чтобы найти следующий:

Пример. Вычислить .

Найдем коэффициент c, разделив :

Таким образом, очередной член ряда можно вычислить по рекуррентной формуле:

.

Пример 3. Найти количество членов бесконечного ряда , сумма которых дает приближенное значение sin(x) с точностью ε=10-4.

Private Sub Command1_Click()

Const Pi = 3.14159265358979

Eps = Val(Text4.Text) 'Точность

x = Val(Text1.Text) 'Аргумент x

x = x / 180 * Pi 'Перевод в радианную меру

f = Sin(x) 'Вычисление точного значения функции

s = 0 'Инициализация переменной s

a = x 'Первый член ряда

k = 1

'Вывод значения Sin(x) по формату

Text2.Text = Format(f, "0.000E+")

Do While Abs(f - s) > e 'Цикл выполняется пока условие

a = -a * x ^ 2 / (2 * k) / (2 * k + 1)

s = s + a:

k = k + 1

Loop

Text3.Text = Format(s, "0.000E+")

Text5.Text = Str(k)

End Sub

Замечание. Иногда возникает необходимость переделать цикл типа ForNext на цикл DoLoop (наоборот не всегда получается).

For…Next

Do…Loop с предусловием

DoLoop с постусловием

For i = 1 to n

Тело цикла

Next i

i = 1

Do While i <= n

Tело цикла

i=i+1

Loop

i=1

Do

Тело цикла

i=i+1

Loop Until i > n

        1. Использование функции Timer

Условие продолжения или завершения цикла не всегда связано только с внутренними причинами, - изменяющимися от шага к шагу значениями каких-либо переменных. Часто, например, цикл завершается после того, как исчерпывается отпущенное на его выполнение время. Чтобы реализовать такое условие, следует воспользоваться системной функцией Timer. Она возвращает текущее время с точностью до 0,01 сек.

Пример 4. Вычислить сумму бесконечного ряда с использованием функции Timer

Private Sub Command1_Click()

Dim x,y,a As Single

Eps = Val(Text1.Text)

T=Timer 'Зафиксировали время начала работы программы

s = 0: n = 1

Do

a = n/(n^2+1)

s=s+a: n=n+1

If Timer-T>10 Then Exit Do 'Если разница между текущим 'временем и временем начала работы больше 10 сек, то выход из цикла

Loop Until a<0.0001

End Sub