Разложение в ряд 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д