Мои дипломная, курсовые и контрольные работы можно скачать со страницы "Учёба"
Контрольная разбита на страницы →
→ Пролог: вычисление факториала, члена ряда, скорости схождения
→ Пролог: вычисление степени, члена ряда, скорости схождения
→ Пролог: удаление чётных чисел и замена строчных букв
→ Лисп: вычисление факториала, члена ряда, скорости схождения
→ Лисп: вычисление степени, члена ряда, скорости схождения
Второй язык, изучавшийся в этой дисциплине это Лисп. То же не подарок, но в целом он гораздо понятней, хотя ни где и не используется. Опять же с рекурсивными функциями пришлось помучаться... → Далее → Лисп: вычисление степени, члена ряда, скорости схождения
Написать функции на языке Лисп.
а) вычисление факториала
>>(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Далее → Лисп: вычисление степени, члена ряда, скорости схождения