非常早期的功能微分几何,Sussman&智慧开始使用" up结构" ...但我对这可能是什么一无所知。
(print-expression
((compose P2-chi R2-chi-inverse)
(up ’x0 ’y0)))
我在文本的任何地方找不到这个结构的描述,我在Scheme的标准版本或语言文档中找不到它......所以我想知道这些" up结构& #34; "羽绒结构"事情是。我得出它们对应于基本微积分中的导数和积分。只是想知道他们如何在Scheme中组合起来。
答案 0 :(得分:2)
见第22页脚注1:
在多维中,导数Df(x)是一个向下元组结构 偏导数和增量Δx是一个向上元组 结构,所以指示的产品被解释为a 收缩。 (见方程B.8。)
通过文本扫描up
的外观,它似乎是一个包含实际值的两位元组。在Scheme 2中,使用cons
:
(define (up x y)
(if (and (real? x)
(real? y))
(cons x y)
(error "up: argument is not a Real"))))
(define up? cons?)
(define up-x car)
(define up-y cdr)
一些方案将两个元组加入 - 例如在Racket的学生语言中posn
。另一方面,在#lang racket
我们可能会使用struct
而不是cons
而我们会protect the struct
with a contract:
#lang racket
(struct up (x y))
(provide (contract-out
(struct up ((x real?)
(y real?)))))
我对扫描这本书的印象是,up
结构包含两个实数值,但我并没有声称完全理解数学。因此,可能需要指定更复杂的数据类型或进行更广泛的验证。当然,没有类型验证的原始动态类型cons
或list
也是某些类型程序的选项。
答案 1 :(得分:2)
来自scmutils
reference manual: 1
我们用数学识别Scheme矢量数据类型 n维向量。当a时,这些被解释为up元组 区分上元组和下元组。 我们继承了Scheme的构造函数VECTOR和MAKE-VECTOR ,. 选择器VECTOR-LENGTH和VECTOR-REF,以及从零开始的索引。
而且,我认为,数学解释是:Covariance and contravariance of vectors。
1 (转到 Up Tuples和Down Tuples 部分并向下滚动到乘法解释,看看它是什么)。