PROGRAM 8
; FILENAME: PROGRAM8.LSP AUTHOR: ANTHONY F. ORTIZ
; SYMBOLIC DIFFERENTIATION PROGRAM
(DEFUN DERIV (U X)
(COND
; RULES 1 AND 2: D/DX (X) AND D/DX (C)
((ATOM U) (IF (EQ U X) 1 0))
; RULES 3 AND 4: D/DX (F + G) AND D/DX (F - G)
((OR (EQ (FIRST U) '+) (EQ (FIRST U) '-))
(LIST (FIRST U) (DERIV (SECOND U) X) (DERIV (THIRD U) X)))
; RULE 5: D/DX (F * G)
((EQ (FIRST U) '*)
(LIST '+
(LIST (FIRST U) (THIRD U) (DERIV (SECOND U) X))
(LIST (FIRST U) (SECOND U) (DERIV (THIRD U) X))))
; RULE 6: D/DX (F / G)
((EQ (FIRST U) '/)
(LIST '/
(LIST '-
(LIST '* (THIRD U) (DERIV (SECOND U) X))
(LIST '* (SECOND U) (DERIV (THIRD U) X)))
(LIST '* (THIRD U) (THIRD U))))
; RULE 7: THE CHAIN RULE, I.E. D/DX (F ^ N)
((EQ (FIRST U) '^)
(LIST '*
(LIST '* (THIRD U)
(IF (EQ (THIRD U) 2) (SECOND U)
(LIST (FIRST U) (SECOND U)
(- (THIRD U) 1))))
(DERIV (SECOND U) X)))
; RULE 8: D/DX LN (F(X) = 1 / F(X) * F'(X)
((EQ (FIRST U) 'LN)
(LIST '*
(LIST '/ '1 (SECOND U))
(DERIV (SECOND U) X)))
(T NIL)))
; OUTFILE: PROG8.OUT
XLISP version 2.0, Copyright (c) 1988, by David Betz
; loading "init.lsp"
> (load "program8.lsp")
; loading "program8.lsp"
T
> (deriv '(^ x 3) 'x)
(* (* 3 (^ X 2)) 1)
>
BACK TO CS3120 PAGE.