当前位置: 首页 > news >正文

scheme 符号求导部分 练习2.57-2.58

练习2.57 扩充求导程序,使其能处理任意项的和与乘积

点击查看代码
;原求导程序
(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 (multiplicand exp) (deriv (multiplier exp) var))))(else (error "unknown expression type" exp))))
;对sum的修改
(define (make-sum-list lst)(define (make-sum-impl a1 a2)(cond ((=number? a1 0) a2)((=number? a2 0) a1)((and (number? a1) (number? a2) (+ a1 a2)))(else (list '+ a1 a2))))(if (= (length lst) 2)(make-sum-impl (car lst) (cadr lst))(make-sum-impl (car lst) (make-sum-list (cdr lst)))))
(define (make-sum a1 a2)(make-sum-list (list a1 a2)))
(define (sum? x)(and (pair? x) (eq? (car x) '+)))
(define (addend s) (cadr s))
(define (augend s)(let ((lst (cddr s)))(if (= (length lst) 1)(car lst)(make-sum-list lst))))
;对乘法的修改
(define (make-product-list lst)(define (make-product-impl m1 m2)(cond ((or (=number? m1 0) (=number? m2 0)) 0)((=number? m1 1) m2)((=number? m2 1) m1)((and (number? m1) (number? m2) (* m1 m2)))(else (list '* m1 m2))))(if (= (length lst) 2)(make-product-impl (car lst) (cadr lst))(make-product-impl (car lst) (make-product-list (cdr lst)))))
(define (make-product a1 a2)(make-product-list (list a1 a2)))
(define (product? x)(and (pair? x) (eq? (car x) '*)))
(define (multiplier s) (cadr s))
(define (multiplicand s)(let ((lst (cddr s)))(if (= (length lst) 1)(car lst)(make-product-list lst))))

练习2.58 将前缀表达式修改为中缀表达式

点击查看代码
(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)(multiplicand exp))))(else(error "unknown expression type -- DERIV" exp))))
(define nil '())
(define (variable? s) (symbol? s))
(define (=number? exp num) (and (number? exp)(= exp num)))
(define (same-variable? v1 v2) (and (variable? v1)(variable? v2)(eq? v1 v2)))
;加法部分
(define (sum? x) (and (pair? x) (eq? (find-symbol x) '+)))
(define (make-sum a1 a2)(cond ((=number? a1 0) a2)((=number? a2 0) a1)((and (number? a1)(number? a2)) + a1 a2)(else (list a1 '+ a2))))
(define (find-symbol x)(cond ((memq '+ x) '+)((memq '* x) '*)(else 'unknown )))
(define (take-until symbol x)(cond ((null? x) nil)((equal? (car x) symbol) nil)(else (cons (car x) (take-until symbol (cdr x))))))
(define (simplify lst)(if (and (pair? lst)(= (length lst) 1))(car lst)lst))
(define (addend x)(simplify (take-until '+ x)))
(define (augend x)(simplify (cdr (memq '+ x))))
;乘法部分
(define (product? x)(and (pair? x)(eq? (find-symbol x) '*)))
(define (make-product a1 a2)(cond ((=number? a1 1) a2)((=number? a2 1) a1)((and (number? a1)(number? a2)) * a1 a2)(else (list a1 '* a2))))
(define (multiplier x)(simplify (take-until '* x)))
(define (multiplicand x)(simplify (cdr (memq '* x))))
http://www.jsqmd.com/news/149338/

相关文章:

  • 2025年移动机器人推荐指南:猎户星空等10大品牌技术对比与选型攻略 - 资讯焦点
  • Java计算机毕设之基于springboot的全国非物质文化遗产展示平台通过图文视频、直播教学、3D展厅等多元展示形式(完整前后端代码+说明文档+LW,调试定制等)
  • 【AI工程师必看】Open-AutoGLM本地部署十大坑,你避开了吗?
  • 软件测试必问的10个经典面试题(附带答案)
  • 盘式绝缘子针式绝缘子瓷瓶缺陷检测数据集VOC+YOLO格式901张4类别
  • TensorFlow镜像中的SavedModel格式:统一模型交换标准
  • 2026年最新软件测试面试题【含有答案】
  • 食品斩拌机生产厂家怎么选?斩拌机厂家推荐与源头斩拌机厂家排名全解析 - 工业品牌热点
  • 二手回收-路径选择决策 毛利最大化,用规则不行吗? 为什么要用AI
  • 解锁大规模Token生成潜力:基于TensorFlow的高效推理方案
  • Open-AutoGLM性能优化全攻略,释放Python大模型自动化的全部潜力
  • 开源大模型时代,为何TensorFlow仍是企业首选?
  • 2025年有名的别墅设计品牌企业推荐,高性价比别墅设计公司全解析 - 工业推荐榜
  • 2025年度节能型过滤洗涤干燥一体机推荐,无菌级三合一设备厂家全解析 - 工业品网
  • 【稀缺资源】智谱Open-AutoGLM私有化部署内部文档首次公开
  • TensorFlow预训练模型接入指南:快速启动Token生成服务
  • 【课程设计/毕业设计】基于springboot的社区居民服务系统的设计与实现生活服务、事务办理、邻里互动【附源码、数据库、万字文档】
  • 2025年语音机器人品牌推荐:猎户星空等十大厂商综合实力对比 - 资讯焦点
  • 详解TensorFlow Serving:在镜像中快速部署在线推理服务
  • 深入解析LLM Agent推理策略:技术方案与实施路径!
  • 优缺点直述不踩雷!2025实测补水保湿润肤的沐浴露:保湿效果好,干燥肌精准避坑指南 - 资讯焦点
  • 【国产大模型新纪元】:Open-AutoGLM三大版本功能解密与选型指南
  • 天硕(TOPSSD)全栈自研固件赋能筑牢飞腾、龙芯国产化平台存储底座 - 资讯焦点
  • AI产品经理转行做大模型的完整路线图与必备技能_如果你想转行做大模型,你需要具备哪些基本素质和技能?
  • 2025年可靠的法兰式实心轴磁流体公司排名:值得推荐的磁流体供应商有哪些? - 工业推荐榜
  • 【程序员必备】大模型训练两大阶段详解:预训练与后训练技术指南,建议收藏!
  • 2025合肥靠谱西点烘焙培训排行榜,新测评精选[关键词]推荐 - 工业品牌热点
  • 学长亲荐10个AI论文工具,研究生搞定毕业论文不求人!
  • 2025工业拖链品牌TOP5权威推荐:德斯普拖链口碑如何?颜色选择多吗? - 工业设备
  • 基于TensorFlow的操作风险事件预测