問題2.95 – SICP(計算機プログラムの構造と解釈)その104
2009年02月18日
問題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
パス
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542