1

我似乎无法得出正确的结果,但我不知道如何设置我的第 n 个值......知道可能是什么问题吗?

代码:

    (define (der f h) 
    (lambda (x) (/ (- (f (+ x h)) (f x)) 
                           h)
                      )
                )
   (define (cube x) (* x x x))

   (define (many-der f h n)
       (if (= n 0)
            f
            (many-der (der f h) h (- n 1))))

  (define der-of-cube-n (many-der cube .00000000000001 2))
(der-of-cube-n 5)

-142108547152020.03

我试图重新排列它,所以 else 语句以 der 开头,但是当 n=2 时我得到相同的输出......

任何帮助将不胜感激!!

4

1 回答 1

3

h.00000000000001太小了;太小了,以至于您遇到了舍入错误。这是另一个结果h

(define der-of-cube-n (der-n cube 0.0001 2))
> (der-of-cube-n 5)
30.000597917023697

注: 的二阶导数x^36x

当然,Scheme 的重要属性之一是它支持任意精度的精确数字。因此,如果您真的想h变得那么小,则可以将输入公式化为“精确”。像这样:

> (define der-of-cube-n (der-n cube (/ 10000000000000) 2))
> (der-of-cube-n 5)
150000000000003/5000000000000
> (rationalize (der-of-cube-n 5) 0.01)
3e1
于 2013-09-21T22:07:31.267 回答