我正在使用实现MIT SCHEME的SCMUTILS包。我是从Emacs运行的,我在使用某个功能时遇到了麻烦,你能帮助我吗?
我的代码是:
(define ((((delta eta) f) q) t)
(let ((fmas (f (+ q (* 0.001 eta))))
(efe (f q)))
(/ (- (fmas t) (efe t)) 0.001)))
(define ((G q) t)
(dot-product (q t) (q t)))
(((((delta test-path) G) test-path) 5))
测试路径是:
(define (test-path t)
(up (+ (* 4 t) 7)
(+ (* 3 t) 5)
(+ (* 2 t) 1)))
我收到了这个错误:
Loading "mecanica"...
;Application of a number not allowed 2501.2500000000273 (())
可能是什么问题?
起初我认为该方案不能将test-path
这样的结构除以一个数字,所以我把点积设为一个返回数字的函数;但那没有用。
我已尝试在delta-eta
函数中打印表达式,并且在执行此部分时出现错误:
(/ (- (fmas t) (efe t)) 0.001)))
如果我取出商部分,则没有错误。
当然我错过了一些东西。希望你能帮忙。谢谢!
答案 0 :(得分:0)
假设这个
(define ((((delta eta) f) q) t)
(let ((fmas (f (+ q (* 0.001 eta))))
(efe (f q)))
(/ (- (fmas t) (efe t)) 0.001)))
等同于此
(define (delta eta)
(lambda (f)
(lambda (q)
(lambda (t)
(let ((fmas (f (+ q (* 0.001 eta))))
(efe (f q)))
(/ (- (fmas t) (efe t)) 0.001))))))
然后(((((delta test-path) G) test-path) 5))
在0.001
乘以test-path
和(* 0.001 eta)
。而且在G
内部,它期望q
作为一个过程,fmas
正在检索从G
传递数字到G
的过程。因此,这将尝试应用通过t
的计算数字。