Мои дипломная, курсовые и контрольные работы можно скачать со страницы "Учёба"

Контрольная работа по предмету Функциональное и логическое программирование

Контрольная разбита на страницы →
Пролог: вычисление факториала, члена ряда, скорости схождения
Пролог: вычисление степени, члена ряда, скорости схождения
Пролог: удаление чётных чисел и замена строчных букв
Лисп: вычисление факториала, члена ряда, скорости схождения
Лисп: вычисление степени, члена ряда, скорости схождения

Второй язык, изучавшийся в этой дисциплине это Лисп. То же не подарок, но в целом он гораздо понятней, хотя ни где и не используется. Опять же с рекурсивными функциями пришлось помучаться... → Далее → Лисп: вычисление степени, члена ряда, скорости схождения

Лисп: вычисление факториала, члена ряда, скорости схождения

Написать функции на языке Лисп.
а) вычисление факториала
>>(FACT 4)
24

Вычисление факториала:

> (defun fact (n) (if (= n 0) 1
            (* n (fact (- n 1)))))

FACT
> (fact 4)
24
> (fact 6)
720
> (fact 8)
40320

Вычисление факториала из формулы 10-ого варианта:

> (defun ! (n) (if (= n 0) 1
            (* n (! (- n 1)))))
!
> (defun sk (n) (- (* 2 n) 1))
SK
 (defun fact (n) (! (sk n)))
FACT
> (FACT 4)
5040

б) вычисление n - го члена ряда Формула с факториалом для программы на лисп
>>(ROW 2, X)

> (defun ! (n) (if (= n 0) 1 (* n (! (- n 1)))))
!
> (defun sk (n) (- (* 2 n) 1))
SK
> (defun row (n) (/ 1 (! (sk n))))
ROW
> (row 4)
1/5040

Если обязателен результат в виде десятичной дроби, то последнюю строку меняем на:

>(defun row (n) (coerce(/ 1 (! (sk n)))`float ))
ROW
>(row 4)
0.0001984127

(в) вычисление скорости схождения ряда Формула с факториалом для программы на лисп
Точность = Формула точности с факториалом для лисп

Количество шагов, за которые достигается точность
SPEED (0.01, N)

>(defun ! (n) (if (= n 0) 1 (* n (! (- n 1)))))
!
> (defun sk (n) (- (* 2 n) 1))
SK
> (defun speed (x)
       (do ((n 1) (rez 1))
       ((> x rez) n)
       (setq n (+ n 1))
       (setq rez (/ 1 (! (sk n))))))
SPEED
> (speed 0.2)
2
> (speed 0.01)
3
> (speed 0.0001)
5

Далее → Лисп: вычисление степени, члена ряда, скорости схождения