Предикат, вычисляющий функцию 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).
Объяснение кода листинга программы
- Объявление типа переменных: 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).
- Случай, когда значение 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).
- Ввод значений переменных E и X с клавиатуры:
goal
write(
Vvedite E=
),readreal(E),write(Vvedite X=
),readreal(X), s(E,X,1.0,0,1.0,R). - Запуск программы и вывод результатов на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д