Integral Calculus in Lambda Calculus (Lisp)
A Lisp version of the code from this article –>
http://iam.elbenshira.com/archives/151_integral-calculus-in-haskell/
**********
For those that are unhappy about this not being a Symbolic Integration example then please read Norvig’s “Paradigms of Artificial Intelligence Programming – Case Studies in Common Lisp”, Chapter 8 – Symbolic Mathematics : A Simplification Program, 8.6 – Integration, page 252.
http://norvig.com/paip.html
**********
(defparameter *small-dx* 0.0001)
(defun integrate(f a b)
"integrate a function f from a to b"
(defun integrate-gen(f x b dx sum)
"the generalized inner function for tail-recursion.
integrate a function f from x to b"
(if (> x b)
sum
(integrate-gen f (+ x dx) b dx (+ sum (* (funcall f x) dx)))))
(integrate-gen f a b *small-dx* 0))
(let
((f1 (lambda (x) 1))
(f2 (lambda (x) (expt x 2)))
(f3 (lambda (x) (* x (exp (expt x 2))))))
(print (integrate f1 0 5))
(print (integrate f3 0 1)))