;;;;;;;;;;;;;;;;;;; EXO 1 ;;;;;;;;;;;;;;;;;;; (defun sumfnp (f n p) (loop for i from n to p sum (funcall f i))) ;;;;;;;;;;;;;;;;;;; EXO 2 ;;;;;;;;;;;;;;;;;;; (defun f1 (f) (funcall f 1)) (f1 (lambda (x) (+ (* 3 x x) 4.7))) ;;;;;;;;;;;;;;;;;;; EXO 3 ;;;;;;;;;;;;;;;;;;; (defun timesn (n) (lambda (x) (* x n))) (setf (symbol-function 'double) (timesn 2)) ;;;;;;;;;;;;;;;;;;; EXO 4 ;;;;;;;;;;;;;;;;;;; (defun derivative (f precision) (lambda (x) (/ (- (funcall f (+ x precision)) (funcall f (- x precision))) (* 2 precision)))) (defun nth-derivative (f n precision) (if (zerop n) f (nth-derivative (derivative f precision) (1- n) precision))) ;;;;;;;;;;;;;;;;;;; EXO 5 ;;;;;;;;;;;;;;;;;;; (defun opfnp (f op n p) (loop with acc = (funcall f n) for i from (1+ n) to p do (setf acc (funcall op acc (funcall f i))) finally (return acc))) (defun eapp (n) (loop for term = 1.0d0 then (/ term i) for i from 1 to n sum term)) (defun serie (f x n) (loop for term = (* 1.0d0 (funcall f 1)) then (/ (* term x) i) for i from 1 to n sum (* (funcall f i) term)))