summaryrefslogtreecommitdiff
path: root/deprecated-cl/approx,derivative.lisp
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-10-11 10:04:04 -0600
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-10-11 10:04:04 -0600
commit43f06890e2689af2ef54c4480fe5790692a24f65 (patch)
treeb933f3e05aad81d780c0c94646676efa1bbad22d /deprecated-cl/approx,derivative.lisp
parenta74a732b27fb610133190e89a91b2d42d0cf78b3 (diff)
downloadcmath-43f06890e2689af2ef54c4480fe5790692a24f65.tar.gz
cmath-43f06890e2689af2ef54c4480fe5790692a24f65.zip
deprecate common lisp solutions and write c; it's too much effort to keep up with the requirements for an archive.
Diffstat (limited to 'deprecated-cl/approx,derivative.lisp')
-rw-r--r--deprecated-cl/approx,derivative.lisp25
1 files changed, 25 insertions, 0 deletions
diff --git a/deprecated-cl/approx,derivative.lisp b/deprecated-cl/approx,derivative.lisp
new file mode 100644
index 0000000..631a5c0
--- /dev/null
+++ b/deprecated-cl/approx,derivative.lisp
@@ -0,0 +1,25 @@
+(in-package :lizfcm.approx)
+
+(defun central-derivative-at (f x &optional (delta 0.01))
+ (let* ((x2 (+ x delta))
+ (x1 (- x delta))
+ (y2 (apply f (list x2)))
+ (y1 (apply f (list x1))))
+ (/ (- y2 y1)
+ (- x2 x1))))
+
+(defun forward-derivative-at (f x &optional (delta 0.01))
+ (let* ((x2 (+ x delta))
+ (x1 x)
+ (y2 (apply f (list x2)))
+ (y1 (apply f (list x1))))
+ (/ (- y2 y1)
+ (- x2 x1))))
+
+(defun backward-derivative-at (f x &optional (delta 0.01))
+ (let* ((x2 x)
+ (x1 (- x delta))
+ (y2 (apply f (list x2)))
+ (y1 (apply f (list x1))))
+ (/ (- y2 y1)
+ (- x2 x1))))