Skip to content

Instantly share code, notes, and snippets.

@yakreved
Created August 13, 2013 08:11
Show Gist options
  • Save yakreved/6218933 to your computer and use it in GitHub Desktop.
Save yakreved/6218933 to your computer and use it in GitHub Desktop.
sicp 2.9 Радиус (width) интервала определяется как половина расстояния между его верхней и нижней границами. Радиус является мерой неопределенности числа, которое обозначает интервал. Есть такие математические операции, для которых радиус результата зависит только от радиусов интервалов-аргументов, а есть такие, для которых радиус результата не …
(define (make-interval a b) (cons a b))
(define (upper-bound x) (car x))
(define (lower-bound x) (cdr x))
(define (width x) (- (cdr x) (car x)))
(define (sub-interval a b)
(make-interval
(- (upper-bound a) (lower-bound b))
(- (lower-bound a) (upper-bound b))
)
)
(define (add-interval x y)
(make-interval (+ (lower-bound x) (lower-bound y))
(+ (upper-bound x) (upper-bound y))))
(define (div-interval x y)
(mul-interval x
(make-interval (/ 1.0 (upper-bound y))
(/ 1.0 (lower-bound y)))))
(define (mul-interval x y)
(let ((p1 (* (lower-bound x) (lower-bound
y)))
(p2 (* (lower-bound x) (upper-bound
y)))
(p3 (* (upper-bound x) (lower-bound
y)))
(p4 (* (upper-bound x) (upper-bound
y))))
(make-interval (min p1 p2 p3 p4)
(max p1 p2 p3 p4))))
(width (make-interval 4 5))
(width (make-interval 1 2))
(sub-interval (make-interval 4 5) (make-interval 1 2))
(add-interval (make-interval 4 5) (make-interval 1 2))
(mul-interval (make-interval 4 5) (make-interval 1 2))
(div-interval (make-interval 4 5) (make-interval 1 2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment