double taylor_log(double x, unsigned int n){
double tmp;
double sum = 0;
if(x < 1){
int j = 2;
x = 1 - x;
tmp = x;
sum = -x;
for(unsigned int i = 1; i < n; i++){
sum -= ((tmp *= x) / j);
j++;
}
return sum;
}
else if (x >= 1){
tmp = ((x-1)/x);
for(unsigned int i = 1; i <= n; i++){
sum += (tmp/i);
tmp *= ((x-1)/x);
}
return sum;
这是我对泰勒系列日志的功能,它可以正常工作。我使用这个公式来获得数字的指数函数。mypow() 的公式 ,这是我的 pow 代码
double taylor_pow(double x, double y, unsigned int n){
double sum = 1.0;
int fac = 1;
double exp = y;
double lna = taylor_log( x, n);
for(unsigned int i = 1; i <= n; i++){
fac *= i;
sum += (exp * lna / fac );
exp *= y;
lna *= taylor_log( x, n);
}
return sum;
现在我的问题是,如果我为我的函数放置例如 30 次迭代,则数字高于 pow()。例如 pow(2,3) = 8 ,我的 20 次迭代的结果是 8.0007 ......并且它还在增长。感谢所有回复。