gpt4 book ai didi

c - 泰勒级数对数实现的问题

转载 作者:行者123 更新时间:2023-11-30 14:40:17 27 4
gpt4 key购买 nike

我尝试使用泰勒展开式制作一个函数输出,其输出近似于 x 的对数值(x 是 float )。

自然对数泰勒级数:

ln(x) = {n=0 (sigma) inf} (-1)^n*(x-1)^(n+1)/(n+1)

(使用西格玛求和)以获得更清晰的泰勒展开式图像,请参阅 https://en.wikipedia.org/wiki/Taylor_series#First_example

进一步:log(a,b)=log(a)/log(b)(a为底数)

下面是我使用这些原则的实现:

double logtaylor(double a,double b,double prec)
{
double suma=0,sumb=0,n;


for(n=0;n<prec+1;++n)
{
suma+=(pow(-1,n)*pow(a-1,n+1)/(n+1));
sumb+=(pow(-1,n)*pow(b-1,n+1)/(n+1));
printf("%d)suma=%lf\n",(int)n,suma);
printf("%d)sumb=%lf\n",(int)n,sumb);
}


return suma/sumb;
}

我正在测试 3 以 2 为底的对数 -logtaylor(2,3,30)-,精度级别为 30。

输出:

math.h: 0.630930
0)suma=1.000000
0)sumb=2.000000
1)suma=0.500000
1)sumb=0.000000
2)suma=0.833333
...
26)suma=0.711323
26)sumb=3272620.000449
27)suma=0.675609
27)sumb=-6314360.570980
28)suma=0.710091
28)sumb=12198429.497986
29)suma=0.676758
29)sumb=-23592964.635348
30)suma=0.709016
30)sumb=45680701.429168

除了变量之外,求和 a 和 b 的两个语句完全相同,但它们的行为完全不同。suma 非常接近数学 header 中计算的实际值。我也确认使用了 calc (log(2, 3)~0.63092975356)-而其对应物则偏离巨大,攀升至数百万。我无法全神贯注于它。我很感激任何帮助。提前致谢。

最佳答案

ln 泰勒级数的收敛域是 (0, 2]。在此之外,级数将不会收敛到 ln x 的值;它的大小将永远增长。换句话说,您遇到的是数学问题,而不是软件问题 - 软件正确评估了级数,但泰勒级数并未逼近 0 <x 之外的 ln x> ≤ 2。

关于c - 泰勒级数对数实现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com