問題2.56 – SICP(計算機プログラムの構造と解釈)その68
2009年01月13日
問題2.56
べき乗(冪乗 – Wikipedia): base ^ exponent
(baseexponent
)
べき乗は最初の要素が **
のリスト。
(define (exponentiation? x) (and (pair? x) (eq? (car x) '**)))
底(基数)はべき乗のリストの第2項。
(define (base s) (cadr s))
指数はべき乗のリストの第3項。
(define (exponent s) (caddr s))
指数が0の時は1、指数が1の時は底(基数)自身。
(define (make-exponentiation b e) (cond ((=number? e 0) 1) ((=number? e 1) b) (else (list '** b e))))
べき乗を扱えるように改良した微分プログラム。
(define (deriv exp var) (cond ((number? exp) 0) ((variable? exp) (if (same-variable? exp var) 1 0)) ((sum? exp) (make-sum (deriv (addend exp) var) (deriv (augend exp) var))) ((product? exp) (make-sum (make-product (multiplier exp) (deriv (multiplicand exp) var)) (make-product (deriv (multiplier exp) var) (multiplicand exp)))) ((exponentiation? exp) (make-product (make-product (exponent exp) (make-exponentiation (base exp) (- (exponent exp) 1))) (deriv (base exp) var))) (else (error "unknown expression type -- DERIV" exp)))) (deriv '(** x 2) 'x) gosh> (* 2 x) (deriv '(** x 1) 'x) gosh> 1 (deriv '(** x 0) 'x) gosh> 0
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542