SICP 习题2.11 改写div-interval 分情况讨论
来源:互联网 发布:淘宝买电脑主机 编辑:程序博客网 时间:2024/06/01 09:53
x正正正负负负y正正正负负负
3*3总共有9种情况,分类讨论即可。
div-interval的代码
(define (div-interval x y) (let ((x1 (lower-bound x)) (y1 (upper-bound x)) (x2 (/ 1 (lower-bound y))) (y2 (/ 1 (upper-bound y)))) (cond ((and (> x2 0) (> y2 0)) (cond ((and (> x1 0) (> y1 0)) (make-interval (* x1 y2) (* y1 x2))) ((and (> x1 0) (< y1 0)) (make-interval (* y1 x2) (* x1 x2))) ((and (< x1 0) (< y1 0)) (make-interval (* x1 x2) (* y1 y2))))) ((and (< x2 0) (< y2 0)) (cond ((and (> x1 0) (> y1 0)) (make-interval (* x1 x2) (* y1 y2))) ((and (> x1 0) (< y1 0)) (make-interval (* x1 y2) (* y1 y2))) ((and (< x1 0) (< y1 0)) (make-interval (* y1 x2) (* x1 y2))))) (else out-error))))
整个程序的代码
(define (add-interval x y) (make-interval (+ (lower-bound x) (lower-bound y)) (+ (upper-bound x) (upper-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))))(define (div-interval x y) (let ((x1 (lower-bound x)) (y1 (upper-bound x)) (x2 (/ 1 (lower-bound y))) (y2 (/ 1 (upper-bound y)))) (cond ((and (> x2 0) (> y2 0)) (cond ((and (> x1 0) (> y1 0)) (make-interval (* x1 y2) (* y1 x2))) ((and (> x1 0) (< y1 0)) (make-interval (* y1 x2) (* x1 x2))) ((and (< x1 0) (< y1 0)) (make-interval (* x1 x2) (* y1 y2))))) ((and (< x2 0) (< y2 0)) (cond ((and (> x1 0) (> y1 0)) (make-interval (* x1 x2) (* y1 y2))) ((and (> x1 0) (< y1 0)) (make-interval (* x1 y2) (* y1 y2))) ((and (< x1 0) (< y1 0)) (make-interval (* y1 x2) (* x1 y2))))) (else out-error))))(define (out-error) (newline) (display "ERROR"))(define (sub-interval x y) (make-interval (- (lower-bound x) (upper-bound y)) (- (upper-bound x) (lower-bound y))))(define (width-interval z) (/ (- (upper-bound z) (lower-bound z)) 2.0))(define make-interval cons)(define lower-bound car)(define upper-bound cdr)(define print-interval (lambda (z) (newline) (display (lower-bound z)) (display " ~ ") (display (upper-bound z))))(define a (make-interval 1 2))(define b (make-interval 3 4))(newline)(display "a : ")(display (width-interval a))(newline)(display "b : ")(display (width-interval b))(print-interval (add-interval a b))(newline)(display "add : ")(display (width-interval (add-interval a b)))(print-interval (mul-interval a b))(newline)(display "mul : ")(display (width-interval (mul-interval a b)))(print-interval (div-interval a b))(newline)(display "div : ")(display (width-interval (div-interval a b)))(print-interval (sub-interval a b))(newline)(display "sub : ")(display (width-interval (sub-interval a b)))(define c (make-interval -1 2))(div-interval a c)
0 0
- SICP 习题2.11 改写div-interval 分情况讨论
- zoj 1414 分情况讨论
- SICP习题
- acd the cover circle(分情况讨论)
- hdu 5105 高中数学题分情况讨论
- sicp 第一章习题试做
- sicp 第一章 习题
- sicp 2.2 习题
- sicp 2.3-2.5 习题
- SICP 部分习题答案
- SICP 习题答案1.1
- SICP 习题答案1.2
- SICP 习题答案1.3
- SICP 习题答案1.4
- SICP 习题答案1.5
- SICP 习题答案1.11
- sicp习题2.1
- sicp习题2.2
- java中byte类型与其他数据类型转换
- 解决struts2文件上传大小限制为2M的问题
- Goroutine(协程)为何能处理大并发?
- 《剑指offer》:[35]第一次出现且只出现一次的字符
- ASP.Net简介
- SICP 习题2.11 改写div-interval 分情况讨论
- yershop商城系统Thinkphp开发(四)——微信篇2:公众号js-sdk简
- C++的函数重载
- Objective-C 起源
- 目标检测的图像特征提取
- SQL结构化查询语言快速入门
- 【每天学一点】C++基础03
- wxPython控件大全
- C++中#if,#ifdef,ifndef