【SICP练习】23 练习1.29



练习1.29

这道题的数学气息比较浓厚。像变量h和函数y在书中已经有了定义,并且n是偶数。另外通过观察我们发现当k等于0或者n时,y的系数为1;当k为偶数时,y的系数为2;当k为奇数时(在函数中直接用else也可以),y的系数为4。根据书中前面的讲解,需要有一个term作用在a上,还要有一个next来产生下一个a值。下面我们依次来完成这5个部分。

(define h (/ (- b a) n))

我曾将这一部分拿来编译过,但报错说n未定义。由此可见采用应用序取值的Lisp在采用应用序的同时还是从后往前求值的。不信的话,可以将n拿来define定义一下,会继续报错说a未定义而不是所b。好了我们再继续写后面的内容:

(define (y k) (f (+ a (* k h))))

(define (factor k)

(cond((or (= k 0) (= k n)) 1)

((even? k) 2)

(else4)))

(define (term k) (* (factor k) (y k)))

(define (next k) (+ k 1))

前文已经说了n是偶数,因此在调用simpson-ruler函数前应该先判断n的正负性:当n为奇数时报错,n为偶数时则计算并返回积分值。

(define (simpson-ruler f a b n)

(define h (/ (- b a) n))

(define (y k) (f (+ a (* k h))))

(define (factor k)

(cond ((or (= k 0) (= k n)) 1)

((even? k) 2)

(else4)))

(define (term k) (* (factor k) (y k)))

(define (next k) (+ k 1))

(if (odd? n)

(error “Error: You just input an odd number.”)

(* (/h 3) (sum term (exact->inexact 0) next n))))

exact->inexact在【Scheme归纳】2中有介绍,其用来把分数转换为浮点数。

函数sum和函数cube我们可以直接copy书中的代码。下面我们按照题目中的要求将n=100和n=1000来测试所写的函数是否正确。

(simpson-ruler cube 0 1 100)

;Value: .24999999999999992

(simpson-ruler cube 0 1 1000)

;Value: .2500000000000003

通过和书中的integral对比,辛普森规则很明显要精确得多。

时间: 2024-08-01 10:46:03

【SICP练习】23 练习1.29的相关文章

while循环练习23

练习一,逐一显示指定列表中的所有元素: //方法一 In [25]: l1 Out[25]: [1, 2, 3, 4] In [26]: while l1:    ....:     print l1[0]    ....:     l1.pop(0)    ....:      1 2 3 4 //方法二 In [66]: count = 0 In [67]: count Out[67]: 0 In [68]: while count < len(l1):    ....:     print

IDC服务标准103.219.29.1

1) 标准机房环境,提供365天全天候运营服务.2) 保证每月网络连通率在99.99%以上.3) 千兆光纤双路由直连CTTNET骨干节点,带宽品质优越.4) 专门技术人员7×24小时维护,有效保障网络的畅通和稳定性.5) 保证7×24小时电力供应,提供双路480kVA动力电源.备用柴油发电机等,保证持续供电率达99.99% .6) 业务开通:保证在合同签订后的3个工作日内,为用户开通IDC业务.7) 业务维护:如遇网络割接.扩容.调测等会对用户线路造成影响的情况,提前48小时通知客户.8) 故障

通用高防和网站高防188.219.29.1

〈1〉通用高防 针对.APP.金融.电商等类型业务,提供基于IP的超大流量防护能力,支持TCP/UDP等多种协议,可防护SYN Flood.ACK Flood等多种类型的,满足不同场景下的需求 〈2〉网站高防 针对网站类业务,通过强大的云端清洗集群以及1T超大防护带宽,帮助用户抵御超大流量DDoS,并且支持CC防护,防护能力全面,可确保您的网站安全 武汉网盾无视CC:扣97780861188.219.29.1188.219.29.2188.219.29.3188.219.29.4188.219.

Tunnel established

[2016/09/23 14:48:44 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Tunnel established at tcp://ngrok.natapp.cn:42437 [2016/09/23 15:03:31 CST] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Tunnel established at tcp://ngrok.natapp.cn:

使用ffmpeg转码pcm至aac格式

准备工作 去官网下载源码自己编译所需要的库,或者直接从官网下载已经编写好的库,由于本例是Window平台下的开发,而官网已经有了编译好的库,所以直接下载编译所需要的库文件即可.下载地址:需要下载两个压缩包,Dev版本和Shared版本,其中Dev版本是头文件和lib库文件,Shared是包含运行所需要的dll文件. 下载完成后,需要把这些头文件.静态库.动态链接库引入到我们的工程里面,不过在Windows下面,头文件除了要用到FFMPEG提供的,还要使用另外三个文件:inttypes.h,std

linphone 调试信息

[email protected]:~ linphonec -V -d 6INFO: no logfile, logging to stdoutortp-message-oRTP-0.20.0 initialized.ortp-message-assigning PCMU/8000 payload type number 0ortp-message-assigning GSM/8000 payload type number 3ortp-message-assigning PCMA/8000 p

SQL中的5种聚集函数

原文:SQL中的5种聚集函数 作为一个刚毕业进入这行的菜鸟,婶婶的觉的那种大神.大牛到底是怎样炼成的啊,我这小菜鸟感觉这TMD要学的东西这多啊,然后就给自己定了许多许多要学习的东西,可是有人又不停地给你灌输:东西不在多而要精通!我也觉得很有道理,可是怎样才能精通呢?封神之路,在哪里啊 !!! 这一天没有一个安静的心,基本是学不进去了,发现自己还是太功利了,急功近利!也许你只要学就行,管他是否能够立即让人见识到你的厉害,技术和知识这种东西也许还是要强调一个 底蕴的.既然自己最烦那种看了两篇文章就给

linux安装

一. 发展史 1. 计算机资源 1) 硬件资源 2) 软件资源 2. 操作系统 1) Windows 2) Mac 3) Unix 4) Linux 3. Linux发展史 1) Unix 1968年  Multics项目 1970年  UNIX诞生 1973年  用C语言重写UNIX 1975年  Bell实验室允许大学使用UNIX 2) Linux 人  物  Linus minix 1991年  0.0.1版本 1992年  0.0.2版本 1994年  1.0版本 2003年  2.6版

模板小程序】求小于等于N范围内的质数

xiaoxi666 联系邮箱: [email protected] 博客园 首页 新随笔 联系 订阅 管理 [模板小程序]求小于等于N范围内的质数 1 //筛法求N以内的素数(普通法+优化),N>=2 2 #include <iostream> 3 #include <cmath> 4 #include <vector> 5 using namespace std; 6 ///寻找N以内的质数 7 vector<int> find_Prime(int