创建并求解正弦近似的递归关系

时间:2015-11-15 03:41:24

标签: algorithm scheme time-complexity complexity-theory recurrence

在SICP中,存在一个问题(练习1.15)

Exercise 1.15.  The sine of an angle (specified in radians) can be 
computed by making use of the approximation sin x x if x is 
sufficiently small, and the trigonometric identity

sin(r) = 3sin(r/3) - 4sin^3(r/3)

to reduce the size of the argument of sin. (For purposes of this 
exercise an angle is considered ``sufficiently small'' if its 
magnitude is not greater than 0.1 radians.) These ideas are incorporated 
in the following procedures:

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

a.  How many times is the procedure p applied when (sine 12.15) is evaluated?

b.  What is the order of growth in space and number of steps 
    (as a function of a) used by the process generated by the 
    sine procedure when (sine a) is evaluated?

您可以通过运行它来分析它,并看到它变为O(loga),其中a是以弧度为单位的输入角度。

但是,这还不够。这应该通过递归关系来证明。我可以设置一个递归关系:

T(a)= 3T(a / 3)-4T(a / 3)^ 3

哪个是同质的:

3T(a / 3) - 4T(a / 3)^ 3 - T(a)= 0

但是,它是非线性的。我不确定如何得到这个特征方程,以便我可以解决它并向自己证明O(loga)不仅仅是直观真实的#34;。互联网上没有教程似乎涵盖了这个分析,我唯一看到的结论是非线性重现几乎是不可能解决的。

有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您将计算与计算所需的时间混淆。

如果θ≤0.1,那么T(θ)为1.否则,它是T(θ/ 3)+ k,其中k是进行四次乘法,一次减法和一些乘法所需的时间杂项簿记。

很明显,i th 递归的论证将是θ/ 3 i ,因此递归将持续到θ/ 3 i ≤0.1。由于不等式为真的i的最小值是⌈log 3 (θ/ 0.1)⌉,我们可以看到T(θ)= k *⌈log 3 (θ/ 0.1)⌉,即O(logθ)。 (我省略了一个小的常数因子,它将最后一次递归与其他递归区分开来,因为它没有区别。)