我到处搜索,甚至在SO上搜索.关于谷歌的学术文章远远超出了我的心智能力. 这是尽可能接近,但没有回答我的问题.就我所寻找的那样,没有答案.相信我.(但随意证明我错了)
我有一个功课问题,用于计算正弦函数的时间复杂度,使用泰勒的正弦(x)函数展开.我不是要求泰勒系列或泰勒系列功能程序,而是它的时间复杂度.我知道泰勒扩张的下一个任期是:
x ^ n中的项(x ^ n-2中的项)*x*x/n /(n-1)
功能片段是这样的:
double sine(double x) {
int n;
double sum, term;
n = 3;
sum = x;
term = x;
while(isgreater(fabs(term), 0.0000000001)) {
term = (term * x * x) / ( n * (n -1));
if(n % 4 == 3)
sum -= term;
else
sum += term;
n = n + 2;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
fabs()是绝对值的函数,0.0000000001是所需的精度.如果我的理解是正确的,那么当最后一个计算项的值小于/等于精度浮点数时,代码将停止.
到目前为止,我的推论可能是时间复杂度取决于x ^ 2/n ^ 2?或者它不是可推断的因为我们不知道哪个特定的索引/数字会比精确浮点数小?
数学对我不强,但幸运的是有像你这样的大师:)