Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5 демо.doc
Скачиваний:
2
Добавлен:
10.07.2019
Размер:
96.77 Кб
Скачать

Var Fib1, Fib2 : Integer; Buf : Integer;

I : Integer;

Begin

Fib1 := 1; Fib2 := 1; I := 2; { Инициализация цикла }

Repeat

Buf := Fib2;

Fib2 := Fib2 + Fib1; { Следующее число Фибоначчи }

Fib1 := Buf; { Предыдущее число Фибоначчи }

I := Succ(I) { Номер числа Фибоначчи }

until Fib2 mod 10 = 0;

Writeln(‘Номер = ‘, I, ‘ Число = ‘, Fib2)

End.

Пример : Вычислить с заданной точностью значение корня уравнения x = cos(x) на отрезке [0 ; 1] методом деления отрезка пополам.

М

Уравнение F(x) = 0

етод

Y2

Y1

Yср

y = F(x)

Program TransEquation;

Const a = 0; b = 1;

Eps = 1e-5;

Var u, V, Root : Real;

Fu, Fr : Real;

Begin

u := a; v := b; { инициализация цикла }

Fu := Cos(u) - u;

Repeat

Root := (u + v)/2 ; { средняя точка отрезка }

Fr := Cos(Root) - Root;

If Fu*Fr > 0 { выбор правой или левой половины }

then begin u := Root; Fu := Fr end

else v := Root

until Abs(v - u) < Eps;

writeln (‘ корень= ‘, Root, ‘ с точностью ‘,Eps)

End.

Количество N повторений – показатель эффективности программы по времени. На k-том шаге цикла выполнено неравенство

| v - u | = (b - a)/2k.

Поэтому при наименьшем k таком, что

(b - a)/2k <

цикл завершится. Нетрудно вычислить N:

N = [ log2(b - a)/ ]

Первая основная проблема анализа программ, со­дер­жащих итерационные циклы, заключается в обосновании завершаемости цикла.

Эта проблема не является триви­альной!

Вторая основная проблема анализа программ, со­дер­жащих итерационные циклы, заключается в обосновании правильности цикла.

Эта проблема не является триви­альной!