問題2.95 – SICP(計算機プログラムの構造と解釈)その104

問題2.95

多項式用の gcd-term 手続きにトレースのための記述を追加する。

  (define (gcd-terms a b)
    (display (list 'gcd-terms a b))
    (newline)
    (if (empty-termlist? b)
        a
        (gcd-terms b (remainder-terms a b))))

実行結果

(define p1 (make-polynomial 'x '((2 1) (1 -2) (0 1))))
(define p2 (make-polynomial 'x '((2 11) (0 7))))
(define p3 (make-polynomial 'x '((1 13) (0 5))))
(define q1 (mul p1 p2))
;(polynomial x (4 11) (3 -22) (2 18) (1 -14) (0 7))
(define q2 (mul p1 p3))
;(polynomial x (3 13) (2 -21) (1 3) (0 5))
(greatest-common-divisor q1 q2)
gosh> (gcd-terms ((4 11) (3 -22) (2 18) (1 -14) (0 7)) ((3 13) (2 -21) (1 3) (0 5)))
(gcd-terms ((3 13) (2 -21) (1 3) (0 5)) ((2 1458/169) (1 -2916/169) (0 1458/169)))
(gcd-terms ((2 1458/169) (1 -2916/169) (0 1458/169)) ())
gosh> (polynomial x (2 1458/169) (1 -2916/169) (0 1458/169))

(define p1 (make-polynomial 'x '((2 1.0) (1 -2.0) (0 1.0))))
(define p2 (make-polynomial 'x '((2 11.0) (0 7.0))))
(define p3 (make-polynomial 'x '((1 13.0) (0 5.0))))
(define q1 (mul p1 p2))
; (polynomial x (4 11.0) (3 -22.0) (2 18.0) (1 -14.0) (0 7.0))
(define q2 (mul p1 p3))
; (polynomial x (3 13.0) (2 -21.0) (1 3.0) (0 5.0))
(greatest-common-divisor q1 q2)
gosh> (gcd-terms ((4 11.0) (3 -22.0) (2 18.0) (1 -14.0) (0 7.0)) ((3 13.0) (2 -21.0) (1 3.0) (0 5.0)))
(gcd-terms ((3 13.0) (2 -21.0) (1 3.0) (0 5.0)) ((2 8.627218934911244) (1 -17.254437869822485) (0 8.627218934911243)))
(gcd-terms ((2 8.627218934911244) (1 -17.254437869822485) (0 8.627218934911243)) ((1 -1.2434497875801753e-14) (0 7.993605777301127e-15)))
(gcd-terms ((1 -1.2434497875801753e-14) (0 7.993605777301127e-15)) ((0 1.100410578432558)))
(gcd-terms ((0 1.100410578432558)) ())
gosh> (polynomial x (0 1.100410578432558))

問題2.96

パス

問題2.97

パス

計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»