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

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

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

Здраствуйте. в институте начали проходить язык турбопролог. Дали задания, но вот над одним колдую уже неделю. в Общем задание: Создайте предикат, вычисляющий функцию exp(x), используя разложение в ряд по заданному количеству членов ряда. Благодавря эой статье вроде разобрался как это решается https://ru.wikipedia.org/wiki/Экспонента. НО!!!!!! По отдельности факториал, число в степень я вовожу, но вот как это соединить в логическую цепочку действий чтоб все было как в формуле . ПОДСКАЖИТЕ ПОЖУЛУЙСТА КАК ЭТО МОЖНО РЕАЛИЗОВАТЬ!!!! не судите меня строго я новичок в этом деле.
Листинг программы
  1. domains
  2. N,F,S,res=real
  3. number, product=integer
  4.  
  5. predicates
  6. nondeterm result
  7. nondeterm fun(N,F,S)
  8. factorial (number, product)
  9. nondeterm results
  10. stepen(integer,integer)
  11. vozv
  12. clauses
  13. sum(0,1,1).
  14. sum(N,F,S):-
  15. N>0,
  16. N1=N-1,
  17. sum(N1,F1,S1),
  18. F=F1*1/N,
  19. S=S1+F.
  20. result:-write("nomer clena N="),readreal(N),
  21. sum(N,F,S), write("chlen=",F),nl,
  22. write("summa=",S),nl.
  23. stepen(0,1) :- !. /*возведение 4 в степень Q */
  24. stepen(N,P) :-
  25. N1=N-1,
  26. stepen(N1,Q),
  27. P=Q*4.
  28. vozv:-write("Vvedite 4iclo : "),readint(N),
  29. stepen(N,P),write("4iclo : ",P),nl.
  30. factorial(0,1) :- !. /*нахождение факториала*/
  31. factorial(N,Result) :-
  32. N1 = N -1,
  33. factorial(N1,Partial_factorial),
  34. Result = N * Partial_factorial.
  35. results:-write("chislo factoriala : "),readint(N),
  36. factorial(N,Result), write("faktorial = ",Result),nl.
  37. goal
  38. result,
  39. results,
  40. vozv.

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

textual
Листинг программы
  1. domains
  2. i=integer
  3. r=real
  4. predicates
  5. s(r,r,r,i,r,r)
  6. clauses
  7. s(E,_,Z,_,R,R):-abs(Z)<E,!.
  8. 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).
  9. goal
  10. write("Vvedite E="),readreal(E),write("Vvedite X="),readreal(X),
  11. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы