Предикат, вычисляющий функцию exp(x), используя разложение в ряд (Visual prolog 5.2)

Узнай цену своей работы

Формулировка задачи:

Здраствуйте. в институте начали проходить язык турбопролог. Дали задания, но вот над одним колдую уже неделю. в Общем задание: Создайте предикат, вычисляющий функцию exp(x), используя разложение в ряд по заданному количеству членов ряда. Благодавря эой статье вроде разобрался как это решается https://ru.wikipedia.org/wiki/Экспонента. НО!!!!!! По отдельности факториал, число в степень я вовожу, но вот как это соединить в логическую цепочку действий чтоб все было как в формуле . ПОДСКАЖИТЕ ПОЖУЛУЙСТА КАК ЭТО МОЖНО РЕАЛИЗОВАТЬ!!!! не судите меня строго я новичок в этом деле.

Решение задачи: «Предикат, вычисляющий функцию exp(x), используя разложение в ряд (Visual prolog 5.2)»

textual
Листинг программы
domains
i=integer
r=real
predicates
s(r,r,r,i,r,r)
clauses
s(E,_,Z,_,R,R):-abs(Z)<E,!.
s(E,X,Z,N,R1,R):-Z1=Z*X/(N+1),N1=N+1,R2=R1+Z1,s(E,X,Z1,N1,R2,R).
goal
write("Vvedite E="),readreal(E),write("Vvedite X="),readreal(X),
s(E,X,1.0,0,1.0,R).

Объяснение кода листинга программы

  1. Объявление типа переменных: domains i=integer r=real
  2. Объявление предиката: predicates s(r,r,r,i,r,r)
  3. Условие истинности предиката: clauses s(E,,Z,,R,R):-abs(Z)<E,!.
  4. Базовый случай: s(E,X,Z,N,R1,R):-Z1=Z*X/(N+1),N1=N+1,R2=R1+Z1,s(E,X,Z1,N1,R2,R).
  5. Случай, когда значение Z не превышает значение E: s(E,X,Z,N,R1,R):-Z1=Z*X/(N+1),N1=N+1,R2=R1+Z1,s(E,X,Z1,N1,R2,R).
  6. Ввод значений переменных E и X с клавиатуры: goal write(Vvedite E=),readreal(E),write(Vvedite X=),readreal(X), s(E,X,1.0,0,1.0,R).
  7. Запуск программы и вывод результатов на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы