;;;; EXERCICE 1 ;;;;;;;;;;;;;;;;;;;;;;; (defun sigma (f n p) (if (> n p) 0 (+ (funcall f n) (sigma f (+ n 1) p)))) (defun sqr (x) (* x x)) (sigma (function sqr) 1 10) (sigma #'sqr 1 10) (sigma #'(lambda (x) (/ 1 (+ 1 (sqrt x)))) 1 10) ;;;; EXERCICE 2 ;;;;;;;;;;;;;;;;;;;;;;; (defun valeur-en-un (f) (funcall f 1)) (defun polynome (x) (+ (* 3 x x) 4.7)) (valeur-en-un #'polynome) ;;;; EXERCICE 3 ;;;;;;;;;;;;;;;;;;;;;;; (defun multiplicateur (n) #'(lambda (x) (* n x))) (multiplicateur 3) (funcall (multiplicateur 3) 5) (defvar *double* (multiplicateur 2)) (funcall *double* 3) (setf (symbol-function '*double*) (multiplicateur 2)) (*double* 5) ;;;; EXERCICE 4 ;;;;;;;;;;;;;;;;;;;;;;; (defun derivee-approx (f precision) #'(lambda (x) (/ (- (funcall f (+ x precision)) (funcall f (- x precision))) (* 2 precision)))) (derivee-approx #'sin 0.001d0) (derivee-approx #'polynome 0.001d0) (funcall (derivee-approx #'sin 0.001d0) 1) (funcall (derivee-approx #'polynome 0.0001d0) 1) (defun derivee-n-approx (f ordre precision) (if (zerop ordre) (lambda (x) (funcall f x)) (derivee-n-approx (derivee-approx f precision) (1- ordre) precision))) (funcall (derivee-n-approx #'polynome 0 1e-5) 1) (funcall (derivee-n-approx #'polynome 1 1e-5) 1) (funcall (derivee-n-approx #'polynome 2 1e-5) 1)