编写找到最小k的函数,以使x与函数之差

时间:2018-09-15 00:22:35

标签: scheme

我的代码感到不完整和明显错误时遇到了麻烦。对于我的函数(terms-needed x tol),我应该找到最小的k,以使x(square (babylonian x k))之间的差小于tol(公差)。换句话说,我们应该测量k函数中(babylonian x k)的大小才能提供平方根的良好近似值。

截至目前,我收到“应用程序:不是过程;”的错误消息。用我的代码

(define (square x)
  (* x x))

(define (first-value-k-or-higher x tol k)
  (if (<= (x)
         (square (babylonian x k)) tol)
      k)
      (first-value-k-or-higher x tol (+ k 1))
  )


(define (terms-needed x tol)
  (first-value-k-or-higher x tol 1))

我们应该使用一个辅助函数(first-value-k-or-higher x tol k),如果k在参数(square (bablyonian x k))的{​​{1}}中,则求助函数为tol,否则调用自身递归地 x较大。

这是使k工作所需的功能:

(terms-needed x tol)

这里是全文,提供了有关问题可能出在哪里的完整上下文。

  

我们现在将测量上述函数中需要多大 (define (babylonian x k) (if (>= x 1) (if (= k 0) (/ x 2) (* (/ 1 2) (+ (expt x (/ 1 2)) (/ x (expt x (/ 1 2)))))) 1) ) 才能提供良好的近似值   平方根的您将编写一个SCHEME函数k,该函数将   求出需要在(terms-needed x tol)之内的无限和中的项数,即最小的项数   tol,以使kx之间的差小于(square (babylonian x k))。   备注2。乍看之下,定义tol的问题似乎有点挑战,   因为就一个较小的问题来说如何表达它一点也不明显。但是你可能   考虑编写辅助函数(terms-needed x tol)的结果为(first-value-k-or-higher x tol k),如果   k位于参数(square (bablyonian x k))的{​​{1}}之内,否则递归调用自身   tol较大。

0 个答案:

没有答案