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