C++ 泰勒展开式问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 08:15:27
请教一个问题

double sineExpn(double x, double e)

{
int param;

double subSum = 0, tempNum1, tempNum2;

x = x / 180.0 * PI;

for (param = 1; abs(tempNum1 - tempNum2) >= e; param ++) {

tempNum1 = pow(x, 2 * param - 1) / factorialProc(2 * param - 1);

tempNum2 = pow(x, 2 * param + 1) / factorialProc(2 * param + 1);

subSum += pow(-1, param - 1) * tempNum1;
}

return subSum;
}

这个是解泰勒展开正弦的函数 阶乘的函数不用管 肯定是对的

我把循环条件里 abs(tempNum1 - tempNum2) >= e 改成 比如 param <= 7或者任意就能正常用 但要求是用最后连续的两项的绝对值差小于一个变量e 结果出来就是0了。。

请问 问题出在哪里 谢谢了
明天试下吧 谢了

这是没有初始化tempNum1和tempNum2的结果,所以编译器会自己给它们定义两个初始值,而这两个初始值都有可能是0。所以第一次循环的时候条件判断就是错误的,立刻退出了。你可以把tempNum1定义为1,tempNum2定义为0,这样能保证第一次循环的正常运行,后面的就一切正常了。