Синус угла
Синус угла (заданного в радианах) можно вычислить, если воспользоваться приближением
sin x ≈ x
при малых
x
и употребить тригонометрическое тождество
sin(x) = 3sin(x / 3) − 4sin³(x / 3)
для уменьшения значения аргумента
sin
. (В этом упражнении мы будем считать, что угол «достаточно мал», если он не больше 0.1 радиана.) Эта идея используется в следующих процедурах:
(define (cube x) (* x x x))
(define (p x) (- (* 3 x) (* 4 (cube x))))
(define (sine angle)
(if (not (> (abs angle) 0.1))
angle
(p (sine (/ angle 3.0)))))
а. Сколько раз вызывается процедура
p
при вычислении
(sine 12.15)
?
б. Каковы порядки роста в терминах количества шагов и используемой памяти (как функция
a
) для процесса, порождаемого процедурой
sine
при вычислении
(sine a)
?
Комментарии отсутствуют.