我必须用 C 编写一个程序,计算 pow(a,x) 函数的展开。我确定我的代码有误,有人可以帮我解决这个问题吗?
扩展:
1 + x log(a) + 1/2 x^2 log^2(a) + 1/6 x^3 log^3(a) + 1/24 x^4 log^4(a) + 1/120 x^5 log^5(a) +...
不使用 pow 函数。必须根据前一个表达式计算下一个表达式。
这是我设法带来的:
double series(double x)
{
int i;
double s,w,x2;
s=x;
w=x;
for(i=1;i<LWS;i++)
{
w=(w*x/(i+1))*log10(x);
s+=w;
}
return s;
}
我已经有了其余的代码。
最佳答案
log a只需要计算一次。一个体面的编译器会为你做这件事,但以防万一。
现在每一项都是 1/i! * x^i *loga^i
1/i! term 增长非常快,这意味着在几次迭代中,除非 x 很大,否则误差可以忽略不计。
如果需要,您可以保留运行因子,如果 (i factorial) 乘以 i(确保它是 double ,而不是整数),xp (x power) 在每次交互时乘以 x,同样的事情发生在洛加身上。
我实际上不记得要扩展一个 pow 系列,所以我只是假设你的公式是正确的。看起来基本正确。我们使用自然对数(数学符号中的 ln,C 中的 log),它与阶乘项相消,与 e^x 相关。
关于c - 指数函数的泰勒级数展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41909620/