如何使用递归找到sin(x)的导数?

osa*_*hid 1 c algorithm

我如何找到sin(x)的导数,其中x可以是任何值,例如使用递归的 1,2,3 ?

cle*_*tus 8

首先,sin(x)的导数是cos(x),或者更正式地说:

f(x) = sin(x)
f'(x) = cos(x)
Run Code Online (Sandbox Code Playgroud)

我想你可以用cos(x)泰勒级数求解sin (x):

cos(x) = 1 - x^2/2| + x^2/4! + ...
Run Code Online (Sandbox Code Playgroud)

与递归.在Java中:

public double cos(double x) {
  return 1 + next(-x*x/2, x, 3);
}

public double next(double term, double x, int i) {
  double next = -term * x * x / (i * (i + 1));
  return term + next(term, x, i + 2);
}
Run Code Online (Sandbox Code Playgroud)

当然你需要设置一些限制器来退出递归,否则你最终会得到一个堆栈溢出错误,这留给读者练习.

哦,我看到这个问题被标记为C而不是Java,但这是作业.:-)

  • @Jonathon:我不相信这是真的.Cletus是一张非常有用的海报. (7认同)
  • 杰森:你在哪里得到递归的定义?"较小"的含义一般意味着什么?并且正在添加收敛系列的下一个术语而不是"更小"吗? (2认同)