Разложение в ряд p/4 - Prolog
Формулировка задачи:
Вычислить значения следующих функций, используя разложение в ряд. Разработать два варианта программы – рекурсивный и итеративный, в итеративном варианте *задавать точность вычисления функции. Полученный результат сверить со значением соответствующей стандартной функции для вычисляемого аргумента.
p/4 = 1 – 1/3 + 1/5 - … + (-1)^(k-1)/(2*k-1) + … (k=1,2,3,…)
Может кто помочь с этим заданием?
Решение задачи: «Разложение в ряд p/4»
textual
Листинг программы
domains int=integer. predicates nondeterm pDiv4(int,real,real). clauses pDiv4(1,1,1). pDiv4(N,B,S) :- N > 1,N1 =N-1, pDiv4(N1,B1,S1), B= -B1*(2*N1 -1)/(2*N-1), S=S1+B. goal pDiv4(1000,B,S),Y=3.14159263/4.
Объяснение кода листинга программы
domains— определяет тип данных переменных. В данном случае, все переменные являются целыми числами.predicates— определяет правила для проверки истинности утверждений. В данном случае, определено одно утверждениеpDiv4.clauses— определяет правила для вычисления значений переменных. Здесь определено два правила: первое для случаяN=1, а второе дляN>1. ДляN>1используется правилоpDiv4(N1,B1,S1), гдеN1—N-1,B1—-B*(2*N1 -1)/(2*N-1), аS1—S1+B.goal— определяет цель, которую нужно достичь. Здесь нужно достичьpDiv4(1000,B,S)иY=3.14159263/4.pDiv4(1000,B,S)— вычисляет значениеBиSдляN=1000.Y=3.14159263/4— вычисляет значение переменнойY.