Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №4 Вариант 8

.doc
Скачиваний:
6
Добавлен:
20.06.2014
Размер:
97.28 Кб
Скачать

2

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №4

по дисциплине

«Рекурсивно-логическое программирование»

Студент

Ельшаева Н.А.

подпись, дата

фамилия, инициалы

Группа

АС-09

Принял

Гаев Л.В.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2010

Вариант 8:

положительные A0, B0, d, натуральное p. Элементы последовательностей {AN}, {BN} определяются следующим образом:

1 ------------

AN = - (AN-1 + BN-1), BN = \/ AN-1 * BN-1 (n = 1, 2, 3, ...).

2

f(A0,B0,d,p) - значение и номер k первого элемента AK, для которого

|AK – BK+P| < d.

Текст программы

f(A0, B0, D, P) :- A0 >= 0, B0 >= 0, D > 0, P > 0, P // 1 =:= P, poisk(A0, B0, Ak_dlya_b, Bk_dlya_b, P),

modul(A0, B0, Ak_dlya_b, Bk_dlya_b, D, 0).

poisk(A0, B0, A0, B0, 0).

poisk(A0, B0, Ak_dlya_b, Bk_dlya_b, P) :- P1 is P - 1, poisk(A0, B0, Ak_minus1_dlya_b, Bk_minus1_dlya_b, P1),

Ak_dlya_b is (Ak_minus1_dlya_b + Bk_minus1_dlya_b) / 2,

Bk_dlya_b is sqrt(Ak_minus1_dlya_b * Bk_minus1_dlya_b).

modul(Ak_minus1_dlya_a, Bk_minus1_dlya_a, Ak_minus1_dlya_b, Bk_minus1_dlya_b, D, K) :-

((abs(Ak_minus1_dlya_a - Bk_minus1_dlya_b) < D, write('Ak = '), write(Ak_minus1_dlya_a), write(' k = '), write(K));

(Ak_dlya_a is (Ak_minus1_dlya_a + Bk_minus1_dlya_a) / 2,

Bk_dlya_a is sqrt(Ak_minus1_dlya_a * Bk_minus1_dlya_a),

Ak_dlya_b is (Ak_minus1_dlya_b + Bk_minus1_dlya_b) / 2,

Bk_dlya_b is sqrt(Ak_minus1_dlya_b * Bk_minus1_dlya_b),

K1 is K + 1, modul(Ak_dlya_a, Bk_dlya_a, Ak_dlya_b, Bk_dlya_b, D, K1))).

Контрольный пример:

Выводы

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