**Lisp for the C++ programmer**, we present some Common Lisp examples in a way similar to examples which are written in C++ or some other languages belong the same family tree of C++.

Here is the example of Riemann sum in Common Lisp. We first define a function

**f**which takes a single parameter

**x**and the function

**, for simplicity. We will change this function later. It is known that integration of this function from**

*y = f(x) = x***0**to

**1**is

**0.50**.

Common Lisp code for numerical integration (approximatly result) is:

```
(defun f (x)
x
)
(defun integrate (f start stop)
(setq epsilon 0.0001)
(setq sum 0.0)
(loop for i from start to stop by epsilon do
(setq sum (+ sum (* (funcall f i) epsilon)))
)
sum
)
(print (integrate 'f 0 1))
```

The result is

**0.4999532**. Now we can use a more complex function, for example a normal distribution function with zero mean and unit variance. This function can be defined in Common Lisp as

```
(defun normal (x)
(setq a (* (/ 1 (sqrt (* 2 3.141592))) (exp (* -0.5 (* x x)))))
a
)
(defun integrate (f start stop)
(setq epsilon 0.0001)
(setq sum 0.0)
(loop for i from start to stop by epsilon do
(setq sum (+ sum (* (funcall f i) epsilon)))
)
sum
)
(print (integrate 'normal -1 1))
```

In the code above, as it can clearly be seen, we integrate the standard normal distribution from -1 to 1 and the result is

**0.6826645**.

## No comments:

## Post a Comment

Thanks