【SICP练习】84 练习2.56

本文分享了在Scheme语言中实现微积分求导的过程及代码。通过定义一系列辅助函数,如检查表达式类型、提取基底和指数等,最终实现了对数值、变量、和、积和指数运算的求导。代码示例展示了如何使用递归处理复杂数学表达式的求导问题。

这道题的代码略长啊。不过我也是因此而知道Edwin上的代码居然可以复制到word上,以前还想当然的以为不能复制的,毕竟在Edwin上粘贴用的Ctrl+Y,而不是Ctrl+V。在这里我就只将书上没有的代码贴出来了。

(define (deriv exp var) (cond ((number? exp) 0) ((variable? exp) (if (same-variable? exp var) 1 0)) ((sum? exp) (make-sum (deriv (addend exp) var) (deriv (augend exp) var))) ((product? exp) (make-sum (make-product (multiplier exp) (deriv (multiplicand exp) var)) (make-product (deriv (multiplier exp) var) (multiiplicand exp)))) ((exponentiation? exp) (let ((n (exponent exp)) (u (base exp))) (make-product n (make-product (make-exponentiation u (- u 1)) (deriv u var))))) (else (error "unknown expression type -- DERIV" exp))))
(define (make-exponentiation base exponent) (cond ((= exponent 0) 1) ((= exponent 1) base) (else (list '** base exponent))))
(define (exponentiation? x) (and (pair? x) (eq? (car x) '**)))
(define (base exp) (cadr exp))
(define (exponent exp) (caddr exp))

版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.youkuaiyun.com/nomasp

转载于:https://my.oschina.net/nomasp/blog/503426

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值