MyTetra Share
Делитесь знаниями!
Пример вычисления квадратного корня на Прологе, методом Ньютона
Время создания: 14.03.2010 02:12
Текстовые метки: prolog
Раздел: Компьютер - Программирование - Язык Пролог (Prolog)
Запись: xintrea/mytetra_syncro/master/base/0000001454/text.html на raw.github.com

Пример вычисления квадратного корня:

%% Sqrt, Newton method

absolute(X, Result) :-

X >= 0, Result is X.

absolute(X, Result) :-

X < 0, Result is -X.

squared(X, Result) :-

Result is X * X.

good_enough(X, Guess) :-

squared(Guess, Y),

absolute(Y - X, Abs),

Abs < 0.001.

average(A, B, Result) :-

Result is (A + B) / 2.

improve(X, Guess, Result) :-

average(Guess, (X / Guess), Result).

newton_sqrt(X, Guess, Result) :-

good_enough(X, Guess), Result is Guess,!.

newton_sqrt(X, Guess, Result) :-

improve(X, Guess, Improved),

newton_sqrt(X, Improved, Result).

Для нахождения квадратного корня тут использован численный метод Ньютона (см. SICP, к примеру).

?- newton_sqrt(4,1,X).

X = 2.0.

?- newton_sqrt(9,1,X).

X = 3.00009.

 
MyTetra Share v.0.59
Яндекс индекс цитирования