如何为f的根产生一连串的猜测?

时间:2019-05-28 13:08:16

标签: scheme

我想用3个参数f fx和x以及f = sin(x)和x = 3来产生f的根的猜测。我尝试了一些代码,但我不明白。如果您能给我一些帮助,我将不胜感激。

(define (stream f fx x)
(let ((x (3))
((f x) (sin x))
((fx x) (cos x)))
(cons-stream (x (stream f fx (x (- x (/ (f x) (fx x)))))))))

(stream f fx 3)

1 个答案:

答案 0 :(得分:1)

您的代码是这样的(我已应用缩进使括号更清晰):

(define (stream f fx x)
  (let ((x (3))
        ((f x) (sin x))
        ((fx x) (cos x)))
    (cons-stream (x (stream f fx (x (- x (/ (f x) (fx x))))
                            ))
                 )))

(stream f fx 3)

您在此方面有一些错误:

  • (3)将3视为过程,并尝试调用它。您应该改为使用3
  • 您已在通用函数中放入了特定的参数3,sin,cos。应该在外面。
  • 您已经完成(x (stream ...))(x (- x ..))都将x视为函数,但这是一个数字。

因此,清除这些错误后,代码将更加像这样:

(define (stream f fx x)
    (cons-stream x (stream f fx (- x (/ (f x) (fx x))))))

(let ((x 3)
      (f (lambda (x) (sin x)))
      (fx (lambda (x) (cos x))))
  (stream f fx x))

lambda用于定义局部函数。希望有帮助,如果有任何不清楚的地方,随时提出后续问题。