diff options
Diffstat (limited to 'cl/src')
-rw-r--r-- | cl/src/approx/maceps.lisp | 13 | ||||
-rw-r--r-- | cl/src/approx/package.lisp | 3 | ||||
-rw-r--r-- | cl/src/package.lisp | 7 | ||||
-rw-r--r-- | cl/src/vector/distance.lisp | 6 | ||||
-rw-r--r-- | cl/src/vector/norm.lisp | 17 | ||||
-rw-r--r-- | cl/src/vector/package.lisp | 7 |
6 files changed, 52 insertions, 1 deletions
diff --git a/cl/src/approx/maceps.lisp b/cl/src/approx/maceps.lisp new file mode 100644 index 0000000..cd24482 --- /dev/null +++ b/cl/src/approx/maceps.lisp @@ -0,0 +1,13 @@ +(in-package :lizfcm.approx) + +(defun compute-maceps (val f) + (let* ((h val) + (a val) + (err val)) + (loop while (> err 0) + do + (progn + (setf h (/ h 2) + err (abs (- (funcall f (+ a h)) + (funcall f a))))) + collect (list a h err)))) diff --git a/cl/src/approx/package.lisp b/cl/src/approx/package.lisp index 60dd0bb..c11eb60 100644 --- a/cl/src/approx/package.lisp +++ b/cl/src/approx/package.lisp @@ -1,4 +1,5 @@ (in-package :cl-user) (defpackage lizfcm.approx (:use :cl) - (:export :derivative-at)) + (:export :derivative-at + :compute-maceps)) diff --git a/cl/src/package.lisp b/cl/src/package.lisp new file mode 100644 index 0000000..88b10eb --- /dev/null +++ b/cl/src/package.lisp @@ -0,0 +1,7 @@ +(in-package :cl-user) +(defpackage lizfcm.vector + (:use :cl) + (:export + :n-norm + :max-norm + :distance)) diff --git a/cl/src/vector/distance.lisp b/cl/src/vector/distance.lisp new file mode 100644 index 0000000..74631ce --- /dev/null +++ b/cl/src/vector/distance.lisp @@ -0,0 +1,6 @@ +(in-package :lizfcm.vector) + +(defun distance (v1 v2 norm) + (let* ((d (mapcar #'- v1 v2)) + (length (funcall norm d))) + length)) diff --git a/cl/src/vector/norm.lisp b/cl/src/vector/norm.lisp new file mode 100644 index 0000000..2158296 --- /dev/null +++ b/cl/src/vector/norm.lisp @@ -0,0 +1,17 @@ +(in-package :lizfcm.vector) + +(defun p-norm (p) + (lambda (v) + (expt + (reduce (lambda (acc x) + (+ acc x)) + (mapcar (lambda (x) + (abs + (expt x p))) + v)) + (/ 1 p)))) + +(defun max-norm (v) + (reduce (lambda (acc x) + (max acc x)) + v)) diff --git a/cl/src/vector/package.lisp b/cl/src/vector/package.lisp new file mode 100644 index 0000000..009b190 --- /dev/null +++ b/cl/src/vector/package.lisp @@ -0,0 +1,7 @@ +(in-package :cl-user) +(defpackage lizfcm.vector + (:use :cl) + (:export + :p-norm + :max-norm + :distance)) |