我试图在十位数的精度(S. 641853861)内建立LN(1.9)的近似值。
我用的是一个简单的函数,我从ln[(1+x)/(1-x)]
这是我目前的代码:

# function for ln[(1 + x)/(1 - x)]

def taylor_two(r, n):
    x = 0.9 / 2.9
    i = 1
    taySum = 0
    while i <= n:
        taySum += (pow(x,i))/(i)
        i += 2
    return 2 * taySum

print taylor_two(x, 12)

print taylor_two(x, 17)

现在我需要做的是重新格式化,以便它告诉我需要将LN(1.9)近似于10个数字的术语的数量,让它显示序列给出的值,并显示错误。
我假设我需要以某种方式将函数构建成for循环,但如何才能让它在达到所需的10位数后停止迭代呢?
谢谢你的帮助!

最佳答案

原则是;
看看每次迭代会给结果增加多少。
当差值小于1e-10时停止。
你用的公式如下,对吧;
python - Python:使用泰勒级数逼近ln(x)-LMLPHP
(注意有效范围!)

def taylor_two():
    x = 1.9 - 1
    i = 1
    taySum = 0
    while True:
        addition = pow(-1,i+1)*pow(x,i)/i
        if abs(addition) < 1e-10:
            break
        taySum += addition
        # print('value: {}, addition: {}'.format(taySum, addition))
        i += 1
    return taySum

测试:
In [2]: print(taylor_two())
0.6418538862240631

In [3]: print('{:.10f}'.format(taylor_two()))
0.6418538862

关于python - Python:使用泰勒级数逼近ln(x),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32235707/

10-11 21:14