Как произвести поток догадок для корня f? - PullRequest
1 голос
/ 28 мая 2019

Я хотел бы создать поток догадок для корня f с 3 аргументами f fx и x с f = sin (x) и x = 3. Я попробовал некоторый код, но не получил его.Буду признателен, если вы поможете мне.

(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 Ответ

1 голос
/ 28 мая 2019

Ваш код такой (я применил отступ, чтобы сделать скобки более четкими):

(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))

лямбда была использована для определения локальной функции.Надеюсь, что это поможет, не стесняйтесь задавать дополнительные вопросы, если что-то неясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...