Вычисление производной произвольного порядка произведения двух функций - Lisp
Формулировка задачи:
Решение задачи: «Вычисление производной произвольного порядка произведения двух функций»
(defun deriv (f x) (cond ((numberp f) 0) ((eq f x) 1) ((eq (car f) '+) `(+ ,(deriv (cadr f) x) ,(deriv (caddr f) x))) ((eq (car f) '-) `(- ,(deriv (cadr f) x) ,(deriv (caddr f) x))) ((eq (car f) '*) `(+ (* ,(caddr f) ,(deriv (cadr f) x)) (* ,(cadr f) ,(deriv (caddr f) x)))) ((eq (car f) 'sin) `(* (cos ,(cadr f)) ,(deriv (cadr f) x))) ((eq (car f) 'cos) `(* (- (cos ,(cadr f)) ,(deriv (cadr f) x)))) ((eq (car f) 'exp) `(* (exp ,(cadr f)) (deriv (cadr f) x))) ((eq (car f) '^) `(* (* ,(caddr f) (^ ,(cadr f) (- ,(caddr f) 1))) ,(deriv (cadr f) x))))) ==> deriv (deriv '(^ (* 3 x) 5) 'x) ==> (* (* 5 (^ (* 3 x) (- 5 1))) (+ (* x 0) (* 3 1))) ;; d(3x^5)/dx=5*(3x^4)*3=15(3x)^4 (deriv '(sin (^ x 2)) 'x) ==> (* (COS (^ x 2)) (* (* 2 (^ x (- 2 1))) 1)) ;; d(sin(x^2))/dx= cos(x^2)*2x
Объяснение кода листинга программы
В данном коде представлена реализация вычисления производной произвольного порядка произведения двух функций в форме функции с именем deriv
.
Функция принимает на вход три аргумента: f
— функция, для которой вычисляется производная, x
— точка, в которой вычисляется производная, и n
— порядок производной.
Если f
является числом, то возвращается 0, так как для числового значения не имеет смысла вычислять производную.
Если f
равно x
, то возвращается 1, так как производная единицы равна единице.
Если f
является сложением (+
) или вычитанием (-
), то в соответствии с правилами дифференцирования вычисляются производные каждого из слагаемых и возвращается результат их сложения (или вычитания).
Если f
является умножением (*
), то в соответствии с правилами дифференцирования вычисляются производные каждого из множителей и возвращается результат их умножения.
Если f
является возведением в степень (^
), то в соответствии с правилами дифференцирования вычисляются производные каждого из множителей и возвращается результат их умножения, в который в качестве множителя включено выражение ^
с аргументами f
, x
, n
, (- n 1)
.
Если f
является синусом (sin
) или косинусом (cos
), то в соответствии с правилами дифференцирования вычисляется производная f(f(x))
, где f
— функция sin
или cos
соответственно.
Если f
является экспонентой (exp
), то в соответствии с правилами дифференцирования вычисляется производная f(f(x))
, где f
— функция exp
соответственно.
В конце кода представлены тестовые вызовы функции deriv
с целью вычисления производной функции (^ (* 3 x) 5)
и функции sin(^ x 2)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д